오늘 나는 CSDN 포럼 주변을 돌아 다니며 "나는 무술 마스터에서 몇 줄의 절묘한 코드를 보았습니다. 나는 그것을 알아낼 수 없었습니다 모든 무술 마스터로부터 배우는 태도 전체 게시물을 마친 후에는 내용이 매우 고전적이라는 것을 알았습니다.
유형
tstringgridex = class (tstringgrid);
절차 tform1.Button1click (sender : tobject);
시작하다
tstringGridex (StringGrid1). rowCount> 5입니다
tstringgridex (StringGrid1) .Deleterow (5);
끝;
--------------------------------------------------------- --------
이것은 StringGrid에서 코드 줄을 제거하는 코드입니다. 나는이 문제를 2 시간 동안 일했지만 그것을 해결할 수 없었습니다. 그런 다음 마스터의 코드가 너무나 감탄하여 노란 강의 끝없는 물과 같았다는 것을 알았습니다. 그러나 왜 tstringgridex = class (tstringgrid)는 deleterow () 메소드가 있습니까? 그것은 분명히 상속 된 tstringgrid이며, 그것은 tstringgrid와 동일합니까? 내 머리가 너무 큽니다! 나에게 조언을 해주시길 바랍니다!
위는 포스터의 내용이 중요합니다. 델파이..
1. TStringGridex의 보호 된 구성원은 동일한 단위로 정의되므로 TFORT에서 액세스 할 수 있습니다.
2. TStringGrid의 보호 된 구성원은 동일한 단위로 정의되지 않기 때문에 TFORM에서 액세스 할 수 없습니다.
3. tstringgridex = class (tstringgrid) 이후 TStringGridex의 보호 된 멤버에 액세스하는 것은 TStringgrid의 보호 된 멤버에 액세스하는 것과 같습니다.
4. TStringGridex는 중개자 일 뿐이며 기능이 확장되지는 않지만 TStringGrid의 범위를이 장치에 소개하므로 TForm은 TStringGrid의 보호 된 구성원에게 액세스 할 수 있습니다.
Zhangmenyi의 견해는 델파이의 보호 된 및 개인 구성원이 동일한 단위의 다양한 클래스 및 객체로 볼 수 있고 보호 된 구성원은 회원 서브 클래스의 단위에서 볼 수 있으므로 TStringGridex . 모든 수정은 TStringgrid의 보호 된 멤버를 tstringgridex 단위에서 볼 수있게 할 수 있습니다 (또 다른 이유는 TStringgrid 가이 장치에서 정의되지 않았으므로이 장치를 상속을 통해서만 만들 수 있기 때문에 TStringGrid의 보호 된 구성원이 할 수 있기 때문입니다. 개방됩니다.)) 문제가 해결되었습니다. 우리는 또한 델파이의 객체 지향적 특성을 엿볼 수 있습니다.
개발에 편리하지만 초보자를 혼동 할 수 있습니다.
충분히 엄격하지 않습니다
하지만 어쨌든 델파이는 더 이상 영광에 빠지지 않습니다.
Zhang Men San의 의견 : 완벽한 것은 없습니다! 적합한 것만 있습니다!
Zhangmen 4의 의견 : 보호 된 방법은 일반적으로 숨겨져 있기 때문에 클래스의 인스턴스를 직접 생성하는 것은 불가능하지만 델파이에서는 동일한 단위에 위치한 클래스가 자동으로 친구 클래스로 간주되며 보호 된 방법에 액세스 할 수 있습니다. 따라서 해당 단위에 서브 클래스 구현을 작성하여 보호 된 방법을 볼 수 있습니다.