1. 소유자와 부모의 차이점:
Parent 속성은 구성 요소의 컨테이너를 참조하며 구성 요소는 이 범위 내에서만 표시 및 이동할 수 있습니다. 예는 다음과 같습니다.
(1) Form1의 형태에 Panel1을 배치하고 Panel1을 확대한다.
(2) Panel1에 Button1을 배치합니다.
(3) Form1에 Button2를 배치합니다.
이제 Panel1을 이동하면 Button1이 Panel1과 함께 이동합니다. 이는 Button1의 상위가 Panel1이기 때문입니다. 이제 Button2를 Panel1로 이동하고 Panel1을 다시 이동합니다. 이는 Button2의 부모가 Form1이기 때문입니다. 양식 디자인 외에도 구성 요소의 상위가 누구인지 주의를 기울여야 합니다. 구성 요소를 동적으로 생성할 때 구성 요소의 상위도 표시해야 합니다. 예를 들어 위 예에서 작업을 계속합니다.
1)절차 진행1.Button2click(발신자:Tobjet);
2)바르
3) 버튼: T버튼;
4) 시작
5) 버튼: Tbutton.cerate(self);
6) 버튼.부모=panel1;
7) 버튼.lleft=0;
8) 버튼.top=0;
9) Button.caption:='확인';
10) 끝;
Button2를 누르면 Panel1에 Button이 생성되고, Button2를 누르면 6번 문장이 Button.parent:=self;로 변경되면 Form1에 Button이 생성됩니다. 6번 문장을 삭제하면 Button2를 눌렀을 때 아무 일도 일어나지 않습니다. 왜냐하면 생성 메소드가 컴포넌트가 어디에 표시되어야 하는지 알 수 없기 때문입니다.
소유자 속성은 구성 요소의 생성 및 릴리스를 담당하는 구성 요소의 소유자를 나타냅니다. 위의 예에서와 같이 양식에 있는 모든 구성 요소의 시스템 기본 소유자는 양식이고 양식의 소유자는 애플리케이션입니다. 그런데 create 메소드에는 컴포넌트의 소유자를 나타내는 매개변수가 있어야 합니다. 위의 예에서 컴포넌트의 소유자는 self인 폼입니다.
상위 특성 및 소유자 특성은 런타임 특성이며 런타임 단계 중에 코드를 통해서만 설정할 수 있습니다.
2. 본인과 발신자의 차이점:
이벤트 핸들러 매개변수 테이블에는 이벤트 핸들러를 트리거하는 구성요소를 나타내는 매개변수 Sender가 하나 이상 있습니다. 위의 예에서 Sender는 Sender 매개변수를 사용하여 동일한 이벤트 핸들러를 공유할 수 있습니다. 예를 들어:
절차 Tform1.Buttonclick(Sender:Tobject);
시작하다
보낸 사람=button1인 경우
Label1.caption:='뜰 앞에 피고 지는 꽃을 보세요
' Else Label2.caption:='하늘에 굴러가는 구름을 바라보며'
끝;
이 예에서 Button1과 Button2는 Buttonclick 이벤트 핸들러를 공유합니다.
Self는 프로그램이 프로그래밍되는 클래스를 의미합니다. 델파이에서는 대부분의 프로그래밍이 양식 범위 내에 있습니다. 따라서 클래스나 구성 요소를 작성하는 경우 self는 클래스나 구성 요소를 의미합니다. 함수나 프로시저의 선언에서 self가 어떤 구성 요소를 나타내는지 확인할 수 있습니다. 즉, self는 '.' 숫자 앞의 구성 요소를 나타냅니다. 예를 들어 첫 번째 예에서 self는 Tform1을 나타냅니다. 또한 self는 프로시저나 함수가 아닌 클래스 메서드에서만 사용할 수 있다는 점에 유의해야 합니다. 다음 사용법은 잘못되었습니다.
함수 a1(B:정수):정수;
시작하다
…
버튼:=tbutton.create(self);…
끝;
3. 클라이언트 높이와 높이, 클라이언트 너비와 너비의 차이:
일반 구성 요소의 경우 Height는 Clientheight이고 Width는 Clientwidth입니다. 양식의 경우 Height는 제목 표시줄을 포함한 높이이고 Clientheight는 양식 작업 영역의 높이를 나타냅니다. 같은 방식으로 Clientwidth는 양식의 클라이언트 영역 너비를 지정합니다.
위의 설명에서 볼 수 있듯이 Ower와 Parent, Self와 Sender, Clientheight와 Height, Clientwidth와 Width의 차이점을 이해하는 것은 Delphi의 올바른 프로그래밍에 중요합니다.