GotoKnow
  • เข้าระบบ
  • สมัครสมาชิก
  • แผงจัดการ
  • ออกจากระบบ
GotoKnow

การสร้าง Event ของ Object

การสร้าง Event ของ Object มีขั้นตอนดังนี้

1. ประกาศตัวแปรชนิดใหม่โดยให้ type เป็น procedure of object เช่น

type TExampleEvent = procedure of object; หรือ

กรณีที่มีการส่ง Parameter เช่น

type TExampleEvent = procedure (Parameter1: String) of object;

2. ประกาศตัวแปรโดยอ้างถึงชนิดข้อมูลที่เราได้สร้างไว้ในขั้นตอนที่ 1 ซึ่งอาจจะประกาศเป็นแบบ Protect เช่น

Protected
  fMyEvent: TExampleEvent;

3. สร้าง property โดยอ้างถึงตัวแปรที่เราประกาศไว้ในข้อ 2 และให้ ชนิดข้อมูลเป็นไปตามที่ประกาศไว้ในข้อ 1 ซึ่งการประกาศนั้นจะต้องเป็นแบบ published เช่น

Published
  property OnNewEvent: TExampleEvent read fMyEvent write fMyEvent;

4. สร้าง procedure เพื่อใช้ในการกำหนดตำแหน่งที่จะเกิด Event โดยจะต้องมีการตรวจสอบการประกาศ ด้วยคำสั่ง Assigned เช่น
private
  procedure callEvent;
  ....


implementation
procedure callEvent;
begin
 if assigned(fMyEvent) then
   fMyEvent(parameter);
end;

5. เรียกใช้ procedure ที่สร้างไว้ในขั้นตอนที่ 4 ณ ตำแหน่งที่เราต้องการสร้าง event เช่น กรณีที่ Object ได้เริ่มทำงาน หรือทำงานเสร็จสิ้น เป็นต้น

ตัวอย่าง Class ที่สมบูรณ์

Type
   TExampleEvent = procedure (parameter1: string) of object;
   TExample = class(TObject)
    private
      fMyEvent: TExampleEvent
      procedure CallMyEvent;
      procedure DoExecute;
    published
      property MyEvent: TExampleEvent read fMyEvent write fMyEvent;
    end;
Implementation

procedure DoExecute;
begin
  //Start execute
  ...
  //Call Event
  CallMyEvent;
end;

procedure CallMyEvent;
begin
  if assigned(fMyEvent) then
    fMyEvent(parameter 1);
end;

บันทึกนี้เขียนที่ GotoKnow โดย 

คำสำคัญ (keywords): delphi
หมายเลขบันทึก: 22588
เขียน:
แก้ไข:
ความเห็น: 2
อ่าน:
สัญญาอนุญาต: สงวนสิทธิ์ทุกประการ

ความเห็น (2)

ทำอย่างนี้เพื่ออะไรครับเนี่ย

เวลาใช้งาน คลาส TButton มั๊ยครับ คือคลาสปุ่มกดนะครับ เวลากดปุ่มจะเกิด Event การกดปุ่มนะครับ นั่นแหละครับคือ Event แล้ว ถ้าเราจะทำคลาสใหม่ขึ้นมาคลาสนึง แล้วต้องการให้สามารถตอบสนองเหตุการณ์ได้เหมือนกันก็ต้องเขียนแบบนี้ครับ