บทความนี้มีเนื้อหาคล้ายคลึงกับบทความ Dynamic Cast ใน C++ Builder ครับรายละเอียดส่วนใหญ่จะเหมือนกัน

ใน Delphi ก็มีการ Dynamic
Cast เหมือนกันกับ Borland C++ Builder ครับโดยมีอยู่ 2 แบบ ในตัวอย่าง เป็นการทดสอบ
การทำ dynamic cast ขั้นตอนแรกคุณต้องกำหนดให้แต่ละ Component มีการเรียกใช้
Button1Click ตัวเดียวกัน ก่อนนะครับ ในที่นี้คือ Button1Click มาดูตัวอย่างแรกกันครับ
procedure TForm1.Button1Click(Sender:
TObject);
begin
if Sender is TButton then
Label1.Caption := TButton(Sender).Name
else if Sender is TEdit then
Label1.Caption := TEdit(Sender).Name;
end;
จากตัวอย่างเป็นการ cast ให้ Component เป็นชนิดที่เราต้องการในที่นี้คือ
TButton และ TEdit ก่อนการ cast ก็มีการตรวจสอบ ก่อนว่าเป็นชนิด Component
ที่เราต้องการหรือไม่ ในที่นี้ก็คือ Sender is TButton และ Sender is TEdit
ต่อไปดูตัวอย่างที่ 2 กันต่อเลยนะครับเพื่อไม่ให้เสียเวลา
procedure TForm1.Button1Click(Sender:
TObject);
begin
if Sender is TButton then
Label1.Caption := (Sender as TButton).Name
else if Sender is TEdit then
Label1.Caption := (Sender as TEdit).Name;
end;
ตัวอย่างที่ 2 เป็นการสั่ง cast แบบใช้คำสงวน
as มาช่วย ซึ่งในตัวอย่างก็คือ (Sender as TButton) และ (Sender as TEdit)
เป็น cast เพื่อระบุอ้างอิงถึง Component ที่เราต้องการ |