Delphi 이벤트
Delphi 이벤트 -- 이벤트는 원래 함수 포인터이자 속성입니다.
Delphi에서 Poperty라는 구문 특성을 어떻게 사용하는지 요약해 보십시오.C#을 공부한 친구는 쉽게 이해할 수 있을 것이다. 왜냐하면 C#의 속성은 Delphi에서 배운 것이기 때문이다. 왜냐하면 C#와 Delphi는 같은 디자이너이기 때문이다.
속성property의 기본 형식을 정의합니다:property 속성 이름: 속성 값 형식read 속성 읽기 함수 write 속성 쓰기 함수
여기 간단하게 설명해 주세요.Property는 속성 정의 키워드입니다.
2.속성의 특징은 필드와 유사하기 때문에 속성 이름은 필드 이름과 같고 속성 값 유형은 필드의 값 유형과 같다
3.속성 읽기 함수는 속성이'읽기'될 때 실행되는 동작으로'값받기'작업을 수행할 때 다른 동작을 수행할 수 있는 가능성을 가진다.
4.속성 쓰기 함수는 속성이'쓰기'에 의해 실행되는 작업으로, 속성'값 부여'작업을 수행할 때 다른 작업을 수행할 수 있습니다.예를 들어 edt의 Text 속성을 쓸 때 창은 인터페이스 업데이트 작업을 동시에 실행합니다.
여기의 함수는 진짜 함수입니다. C#에 있는 Getter와setter가 아니기 때문에 이해하기 어려울 것입니다.
5.속성 읽기 함수의 함수 설명:function 읽기 함수 이름: 속성 값 형식;
그 중에서 읽기 함수 이름은 사용자 정의할 수 있으며, 속성 성명과 같으면 됩니다. 이 함수의 반환 값은 읽기 속성 조작을 할 때 실제 얻은 값입니다.
6.속성 쓰기 함수 설명 (사실은 하위 함수):procedure 쓰기 함수 이름 (value: 속성 값 형식)
그 중에서 함수 이름을 사용자 정의할 수 있습니다. 속성 성명과 같으면 됩니다. 이 함수 매개 변수value는 속성에 값을 부여할 때 전달되는 실제 값입니다.
7.읽기 함수와 쓰기 함수는 반드시 하나를 설정해야 한다. 만약에 읽기 함수만 설정하고 쓰기 함수를 설정하지 않았다면(write 키워드를 제거하는 동시에) 이런 속성은 읽기 전용 속성이고, 같은 이치로 쓰기만 설정할 수 있다.
8.속성의 공개성을 확보하는 동시에 읽기와 쓰기 함수의 가시성을 감추기 위해 읽기와 쓰기 함수를 사유로 설정하고 속성을 공유로 설정하면 읽기와 쓰기 함수 자체가 호출자에게 노출되는 것을 피할 수 있다. 그렇지 않으면 바람이 잘 들지 않는다.
Delphi는 기능이 매우 강한 시각화 프로그램 개발 도구이다.Delphi를 사용하여 WINDOWS 프로그램을 개발하는 과정에서 Delphi는 모든 시각화된 구성 요소에 많은 속성(Property)과 이벤트(Event)를 제공하지만 실제 응용 프로그램에서 자신이 필요로 하는 특수한 이벤트를 만날 수 있습니다. 이런 특수한 이벤트는 Delphi가 제공하지 않을 때 응용 프로그램에 특수한 이벤트를 추가해야 합니다.이 사건들이 발생한 후에, 또 즉시 이 사건들을 처리하는 과정을 호출할 수 있다.본고는 실례를 통해 응용 프로그램에 이벤트를 추가하고 처리하는 과정을 설명한다.Delphi에서 이벤트는 실제적으로 전문화된 속성이며, 프로세스 (procedure) 의 지침이다.이벤트를 추가하려면 먼저 정의된 클래스에서 이벤트 과정을 가리키는 지침을 설명해야 한다. 이 지침의 역할은 이벤트가 발생하면 이 지침을 통해 이 사건을 처리하는 과정을 수행하는 것이다.마지막으로 지정한 문자published를 통해 정의된 이벤트 속성을 발표합니다
먼저 생각을 그려본다. 1. 하나의 종류를 만들고 그 안에 나이 필드가 있다.2. Age 속성을 통해 FAge를 읽고 쓰기;3. 입력한 나이가 100세가 되면 이벤트가 발생합니다. 이 이벤트는 On Hundred라고 명명됩니다.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
end;
{ : ; }
TMyEvent = procedure of object;
{TMyClass }
TMyClass = class
strict private
FAge: Integer; { }
FOnHundred: TMyEvent; { TMyEvent : FOnHundred}
procedure SetAge(const Value: Integer);
public
procedure SetOnHundred1; { }
procedure SetOnHundred2; { }
constructor Create;
property Age: Integer read FAge write SetAge;
property OnHundred: TMyEvent read FOnHundred write FOnHundred; { }
{ On }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TMyClass }
constructor TMyClass.Create;
begin
FOnHundred := SetOnHundred1; { , SetOnHundred1 }
end;
procedure TMyClass.SetAge(const Value: Integer);
begin
if (Value>0) and (Value<200) then
Fage := Value;
if Value=100 then
OnHundred; { 100 , }
end;
procedure TMyClass.SetOnHundred1;
begin
ShowMessage(' 100 !');
end;
procedure TMyClass.SetOnHundred2;
begin
ShowMessage(' 100 !');
end;
// 1:
procedure TForm1.Button1Click(Sender: TObject);
var
myClass: TMyClass;
begin
myClass := TMyClass.Create;
myClass.Age := 99; { 200}
ShowMessage(IntToStr(myClass.Age)); {99; }
myClass.Free;
end;
// 2:
procedure TForm1.Button2Click(Sender: TObject);
var
myClass: TMyClass;
begin
myClass := TMyClass.Create;
myClass.Age := 100; { , : 100 !}
myClass.Free;
end;
// 3:
procedure TForm1.Button3Click(Sender: TObject);
var
myClass: TMyClass;
begin
myClass := TMyClass.Create;
myClass.OnHundred := myClass.SetOnHundred2; { }
myClass.Age := 100; { , : 100 !}
myClass.Free;
end;
{
: TMyEvent, ,
;
, ,
,
,
TMyEvent , SetOnHundred1、SetOnHundred2 .
}
end.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.