Delphi 이벤트

4273 단어

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.

좋은 웹페이지 즐겨찾기