델파이의 초보자, Java 또는 VC 프로그래밍에서 객체 지향 지식과 경험을 가진 사람들에게 적합합니다.
우리는 종종 델파이 클래스에서 이와 같은 코드를 봅니다 : 속성 속성 속성 속성 속성 유형 이름 읽기 문자열 1 쓰기 문자열 2
여기서 속성의 이름은 다를 수 있습니다. 모두이 형식입니다. 속성 속성 이름 읽기 문자열 1 쓰기 문자열 2
나는 속성을 남겼습니다. 정수를 읽었습니다. Fleft Write Setteft; 왼쪽은 정수 속성입니다. 읽기 변수에 액세스하는 변수 또는 메소드를 선언하고 변수를 수정할 때 액세스 할 변수 또는 메소드를 작성합니다. 참고 : 변수 또는 방법 일 수 있습니다. 여기에는 Fleft라는 변수가 있습니다. 캡슐화 목적으로, 우리는 일반적으로 그러한 변수를 개인적으로 충분히 찾을 수 있습니다.
Fleft : 정수 코드 (이름 지정 습관의 경우 속성 이름 앞의 자본 F와 같은 변수를 지정합니다). 이런 식으로, 당신이 속성을 읽을 때, 당신은 실제로 Fleft의 가치에 액세스하는 것입니다. 따라서 Flex를 수정하고 왼쪽 값을 간접적으로 수정하는 몇 가지 방법을 작성할 수 있습니다. 그런 다음 Setleft를 다시 살펴 보겠습니다 성명:
절차 setleft (값 : 정수);
다음 코드 구현 :
절차 tcontrol.setleft (값 : 정수);
시작하다
setBounds (값, ftop, fwidth, fheight);
포함 (fscalingflags, sfleft);
끝;
다음 코드를 왼쪽으로 변경하는 경우 : 컨트롤 1.left : = 23은 기능 Setteft (23)를 호출합니다 왼쪽으로는 새로운 왼쪽에 따라 영역의 크기를 변경 하며이 기능은 Fleft의 크기를 변경합니다.
절차 tcontrol.setbounds (Aleft, atop, awidth, aheight : 정수);
시작하다
checknewsize (awidth, aheight) 인 경우
((aleft <> fleft) 또는 (atop <> ftop) 또는
(awidth <> fwidth) 또는 (aheight <> fheight))
시작하다
InvalidateControl (가시, 거짓);
Fleft : = Aleft;
ftop : = atop;
fwidth : = awidth;
fheight : = aheight;
UpdateAnchorrules;
무효화;
수행 (wm_windowposchanged, 0, 0);
requestAlign;
그렇지 않은 경우 (ComponentState에서 CSLODING) 크기를 조정하십시오.
끝;
끝;
이런 식으로 외부는 속성의 값이 할당 작업을 통해서만 변경됩니다. 읽기 및 쓰기는 디자인에 따라 변수 또는 기능이 될 수 있습니다. 물론 다음에 쓸 수 있습니다. 속성 속성 속성 속성 속성 유형 이름 읽기 변수 1 쓰기 변수 2. 변수 1과 변수 2는 동일 할 수 있습니다. 이 속성 속성 속성 속성 속성 속성 유형 이름 읽기 메소드 1 쓰기 방법 2를 수행 할 수도 있습니다. 당신을위한 모든 조합. 그러나 주목해야 할 두 가지가 있습니다.
1. 이름 지정 규칙은 습관에 기초하여 가장 적합하며 읽기 쉽습니다.
2. 변수 인 경우 유형은 속성 유형과 동일해야합니다. 항목 매개 변수는 속성 유형과 동일해야합니다.
우리는 종종 클릭 이벤트와 같은 구성 요소의 이벤트 속성을 사용하지만 표면에서 어떻게 호출되는지와 트리거되는 방법을보기가 어렵습니다. 아래에 답할게요.
Property Manager Object Inspector에서 메소드 이름이 이벤트 페이지의 오른쪽에 해당하는 것을 알 수 있습니다. 실제로, 우리는 이전 방법에 해당하는 구성 요소의 이벤트를 제공 할 수 있습니다. 양식을 예제로 취하십시오. 메소드의 항목 매개 변수는 특히 중요합니다.
예를 들어 TControl을 사용 하고이 코드를 찾으십시오.
속성 Onmousedown : tmouseevent fonmousedown을 읽는다.
tmouseevent = procedure (sender : tobject; button : tmousebutton; shift : tshiftState; X, y : Integer);
보시다시피, 실제로는 함수이지만 파란색 부분은 항목 매개 변수를 제한합니다. 그런 다음 OnMousEdown 메소드에 해당하는 Form1을 할당합니다. 그런 다음 마우스 메시지를 가로 채고 직접 또는 간접적으로 fonmousedown을 호출하는 함수를 작성한 다음 메시지 및 처리 기능에 해당합니다. 여기에는 간접적으로 호출되는 많은 레이어가 있습니다. 이는 시간이 소요되며 메시지 유형을 포함합니다.
다음은 간접적 인 통화 프로세스이므로 많은 메시지가 발생할 때 간접적으로 불립니다.
절차 wmrbuttondblclk (var 메시지 : twmrbuttondblclk);
절차 tcontrol.wmrbuttondblclk (var 메시지 : twmrbuttondblclk);
시작하다
상속;
Domousedown (메시지, mbright, [ssdouble]);
끝;
절차 Domousedown (var 메시지 : twmmouse; 버튼 : tmousebutton;
시프트 : TshiftState);
절차 tcontrol.DomousEdown (var 메시지 : twmmouse; 버튼 : tmouseButton;
시프트 : TshiftState);
시작하다
그렇지 않은 경우 (ControlStyle의 CsnostDevents)
메시지와 함께
if (너비> 32768) 또는 (높이> 32768)
Calccursorpos와 함께
Mousedown (버튼, KeystoshiftState (키) + Shift, X, Y)
또 다른
MousEdown (버튼, KeyStothiftState (Keys) + Shift, Message.xpos, Message.YPOS);
끝;
프로 시저 마우스 타운 (버튼 : TmouseButton; Shift : TshiftState;
x, y : 정수;
절차 tcontrol.mousedown (버튼 : tmousebutton;
Shift : TshiftState; X, Y : Integer);
시작하다
할당 된 경우 (Fonmousedown) Fonmousedown (self, button, shift, x, y);
끝;
자신의 수업을 더 많이 작성하면 Getleft를 작성하지 않고 Java와 같은 텍스트를 개인으로 사용하는 것이 얼마나 편리한 지 알 수 있습니다. 그중 컨트롤을 호출하여 Access, Control1.text : = '특정 문자열'을 호출하여 값을 수정합니다.
메시지 처리 측면에서, 기본 클래스는 OnClick 및 OnMousedown과 같은 속성을 사용하려면 공개 된대로 선언 할 수 있으며 객체 검사관에 나타날 수 있습니다. Java만큼 복잡한 청취자를 작성하지 않고도 발신자 기능에 할당 할 수 없습니다.
내 연구는 깊지 않습니다. 부적절한 경우 :). [email protected]에 오신 것을 환영합니다