انشاء حدث للزر اثناء التنفيذ
#1

.rar   ButtonEvent.rar (الحجم : 56.92 ك ب / التحميلات : 18) السلام عليكم

اذا اردت ان تنشي حدث لزر برمجته وقت التشغيل ستكتب شي مثل :

كود :
Button:=TButton.Create(nil); Button.OnClick :=   Button1Click  ;

والاجراء الموجه له هو

كود :
procedure  Form1.Button1Click(Sender: TObject) ; begin end;

هنا لا مشكلة وعندما تكون تبرمج داخل Form ما ولكن المشكلة التي واجهتني اثناء تنفيذ هذا في وحدة غير مرئية 
أي Unit عادية بحيث يكون الاجراء الموجه له هو :
كود :
procedure  Button1Click(Sender: TObject) ; begin end;

دائما رسالة الخطاء هي

إقتباس :[dcc32 Error] UntCommon.pas(75): E2009 Incompatible types: 'method pointer and regular procedure'


في النمودج Form1 يعمل في الوحدة Unit1 التي لا تحمل خصائص وليس لها واجهة او شكل لا يعمل

المثال في المرفقات

.rar   ButtonEvent.rar (الحجم : 56.92 ك ب / التحميلات : 18)
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
الرد
#2

وعليكم السلام

جرب هذا

كود :
procedure TForm1.FormCreate(Sender: TObject); var M: TMethod; begin Button1.OnClick:= ButtonClick ; M.Data := nil; M.Code := @Button12Click; Button2.OnClick := TNotifyEvent(M); end;
رَبَّنَا اغْفِرْ لِي وَلِوَالِدَيَّ وَلِلْمُؤْمِنِينَ يَوْمَ يَقُومُ الْحِسَابُ
[-] كل من 1 user says قال شكرا ل محمد عبد العزيز على المشاركة المفيدة
  • Delphi4Us
الرد
#3
السلام عليكم 
ادا كنت تريد وضع كل شئ في وحدة جديدة ، يجب  عليك انشاء كلاس جديد و قم بوضع تلك الدالة الخاصة ب onclick داخلها
كود :
procedure  Button1Click(Sender: TObject) ;
:: من يملك المعلومة يملك الميدان :: 
[-] كل من 1 user says قال شكرا ل AX302 على المشاركة المفيدة
  • Delphi4Us
الرد
#4
شكرا اخ محمد هذا بالضبط ما احتاج
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم