الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف أستدعي دالة بالشكل

مغلق
بدأه Zouhere Gerard في 28 سبتمبر 2005 · 8 رد · 914 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لدي دالة بالشكل

procedure task(sender:tobject;i:integer)

وبقسم implementation

procedure Tform1.task(sender:Tobject;i:integer)
begin
.
.
end;

كيف استدعيها عند حدث ما onclick مثلا(بدون مشاكل) أي

button1.onclick:=task(????,I)

أقصد ب ؟؟؟ ماذا أضع مكانها sender؟ أم أن شكل الدالة أصلا خطأ من البداية ....أرجو المساعدة ولكم الشكر

#2

اخي العزيز

لا تحتاج الى اضافة Sender في تعريف الإجراء، فقط اجعله يتكون من المتغير I فقط

واذا اردت استدعائه عن الضغط على الزر قم بكتابة (Task(10 فقط ضمن حدث OnClick

لا تحزن:

إن كنت فقيرا فغيرك محبوس في دين، وإن كنت لا تملك وسيلة نقل فسواك مبتور القدمين، وان كنت تشكوا من آلام فغيرك يرقدون على الاسرة البيضاء و من سنوات، وان فقدت ولدا فغيرك فقد عددا من الأولاد و في حادث واحد.

لا تحزن:

فأنت تشرب الماء الزلال، و تستنشق الهواء الطلق، و تمشي على قدميك معافى، و تنام ليلك آمنا.

#3

أخي محمد

أنا أنسب الحدث onclick للزر ب run time لأن button1 يقوم بعدة أجراءات بحسب مايفعله المستخدم أي أن onclick دائما يتغير ولا أريد تحديده بالنقر المزدوج على الزر أرجو أن يكون قصدي واضحا

#4

up

#5

اخي الكريم يمكنك استدعاءه بطريقتين

فلو اردنا مثلا عند الفورم كريت استدعاء الحدث Onclick لل Button1

1 - يمكننا

procedure TForm1.FormCreate(Sender: TObject);
begin
  Button1.OnClick(Sender);
end;

2- او كتابة

procedure TForm1.FormCreate(Sender: TObject);
begin
  Button1Click(Sender);
end;

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#6

كلا أنا أريد أستدعاء Task ...كيف أمرر بارامتراتها حتى تصير العبارة

button1.onclick:=Task(???,10)

صحيحة

#7

مرحبا

اقتباس
button1.onclick:=Task(???,10)

أخي العبارة غير صحيحة

لان التابع onclick يملك متغير واحد هو Sender من النوع Tobject

وأنت تسنده إلى تابع يملك متغيرين

وحتى تصبح العبارة صحيحة يجب

أن يكون التابع الذي تسنده إلى التابع onclick

يملك متغير من النوع Tobject

تم تعديل هذه المشاركة بواسطة M_Asize في 29 سبتمبر 2005 في 20:52

إننا محكومون بالأمل وما يحدث الآن ليس نهاية العالم

#8

نعم صحيح ..

البروسيجر من النوع

procedure (sender:Tobject) ;

يسمى TnotifyEvent ..

ولكي تنجح بالنسب الديناميكي لهكذا إجراء عليك مراعاة ان يحوي نفس عدد البارمترات ..

مثلا :

 private
  procedure task(sender:tobject);
.
.
.

procedure Tform1.task(sender:Tobject);
begin
caption:='hi';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
button1.onclick:=task;
end;

نعم هذا سيعمل بشكل جيد -

إذا أردت وجود المتحول i بإمكانك استدعاء دالة اخرى داخلية من ضمن task تحوي المتغير i ...

#9

شكرا على الرد أخواني

هذا الموضوع مغلق.

مواضيع مشابهة