دلفي هي أداة قوية لتطوير البرامج المرئية. عندما نستخدم دلفي لتطوير تطبيقات WINDOWS، على الرغم من أن دلفي توفر الكثير من الخصائص (PRperty) والأحداث (Event) لكل مكون مرئي، إلا أنه في التطبيقات الفعلية، قد نواجه بعض الأحداث الخاصة التي لا توفرها دلفي أحداثًا خاصة. لذلك نحن بحاجة إلى إضافة هذه الأحداث الخاصة إلى التطبيق. عند حدوث هذه الأحداث، يمكن استدعاء إجراءات التعامل مع هذه الأحداث على الفور. تستخدم هذه المقالة أمثلة لتوضيح كيفية إضافة أحداث إلى التطبيق ومعالجة الأحداث.
في دلفي، الأحداث هي في الواقع خصائص متخصصة، وهي مؤشرات إلى إجراء ما. لإضافة حدث، يجب عليك أولاً تحديد مؤشر لعملية الحدث في الفئة المحددة. وظيفة هذا المؤشر هي تنفيذ العملية التي يشير إليها هذا المؤشر للتعامل مع الحدث بمجرد وقوع الحدث. أخيرًا، يتم نشر سمات الحدث المحددة ومؤشر معالجة الحدث المرتبط بها من خلال المحدد المنشور.
في هذا المثال، FtooBig هو مؤشر عملية معالجة الحدث المحدد، وOnTooBig هو اسم سمة الحدث. تم تصميم مؤشر عملية معالجة الأحداث FtooBig للإشارة إلى عملية TooBig1 من خلال تهيئة البرنامج. ضع ثلاثة مربعات تحرير في نموذج دلفي (Form1)، وهي Edit1 وEdit2 وEdit3، ثم ضع الزر Button1. يقوم البرنامج بإعداد متغيرات صحيحة خاصة val1 وval2 وres. ويستخدم المتغير res لتسجيل منتج val1 وval2 وعرضه باستخدام Edit3. عندما يكون أحد البيانات المدخلة من خلال Edit1 وEdit2 أكبر من 100، سيتم تشغيل حدث، وسيتم استدعاء إجراء معالجة الحدث TooBig1 لعرض مربع حوار يشير إلى حدوث هذا الحدث وتمت معالجته. رمز البرنامج المصدر هو كما يلي. تم تصحيح أخطاء البرنامج في دلفي 3.
الوحدة Unit1؛ تستخدم واجهات Windows والرسائل وSysUtils والفئات والرسومات وعناصر التحكم والنماذج ومربعات الحوار وStdCtrls؛ اكتب TForm1 = class(TForm) Edit1: TEdit; {Enter the first integer} Edit2: TEdit; : TEdit {إخراج منتج أول عددين صحيحين} Button1: إجراء TButton Button1Click(Sender: TObject); الإجراء TooBig1(Sender: TObject); {يتم استدعاء هذا الإجراء عند تشغيل الحدث} الإجراء FormCreate(Sender: TObject); Privateval1,val2,res:integer; {val1 وval2 يخزنان عددين صحيحين منتجا الأرقام} FTooBig: TNotifyEvent {تعريف مؤشر لمعالج الأحداث FTooBig} {الإعلانات الخاصة} العامة {الإعلانات العامة} ملكية منشورة OnTooBig:TNotifyevent قراءة FTooBig write FTooBig;{define events} end;var Form1: TForm1;implementation{$R *.DFM} الإجراء TForm1.Button1Click(Sender: TObject);begin val1 := StrToInt(Edit1.Text val2); = StrToInt(Edit2.Text); 100)and(val2< 100) ثم ابدأ res := val1*val2; Edit3.Text := IntToStr(res); end else إذا تم تعيينه (FTooBig) ثم OnTooBig(Self);end;procedure TForm1.TooBig1(Sender: TObject) );beginapplication.MessageBox('كبير جدًا',' حدث اختبار!',MB_OK);end;procedure TForm1.FormCreate(Sender: TObject);begin val1:=1; FTooBig := TooBig1;{اجعل مؤشر معالج الحدث يشير إلى معالج الحدث}end;