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

أسئلة متفرقة

مغلق
بدأه PerfectStranger في 12 يونيو 2002 · 4 رد · 606 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

في الحقيقة ما زلت مبتدء في الدلفي وأنا عازم إن شاء الله على تعلمها جيدا لكن ليس قبل أن أنهي امتحاناتي

وأنا قاعد عم خبص واجهتني عذه القضية :

أنشأت كائنا object و من أحد مكوناته مصفوفة من الأزرار TButton

table:array of Tbutton

وفي البرنامج الرئيسي قمت بإنشاء الأزرار بواسطة المنهج create ولكن ما لم أعرفه كيف أعالج أحداث هذه الأزرار المحتواة ضمن المصفوفة مثل MouseDown مثلا وكيف أربط هذه الأحداث مع بعضها (أعرف عمل ذلك عندما تكون الأزرار منشأة في وقت التصميم Design Time ولكن في حال إنشاء هذه الأزرار من خلال البرنامج فالعناصر لن تكون موجودة في ال Object Inspector لأقوم بضبط الأحداث و ربطها ببعضها )

أرجو من الأخوة الكرام مساعدتي (لقد حاولت التوصل إلى جواب من خلال نظرة سريعة إلى بعض الكتب عندي لكن لم أجد نتيجة ضيق وقتي بسبب الإمتحانات)

كما أقترح أن يكون هذا الموضوع الذي أنشاته بعنوان " أسئلة متفرقة " أو موضوع أخر ينشئه المشرفون الكرام في هذا المنتدى صفحة للأسئلة العارضة التي يواجهها رواد منتدى الدلفي (سهلة كانت أو صعبة) حيث يقوم المشرفون الكرام (أو أي أخ يعرف الجواب) بزيارة هذه الصفحة من آن لآخر والآجابة على الأسئلة المطروحة

هذا برأيي خير من أن نقوم بمقاطعة موضوع متكامل (من المواضيع الجميلة التي يطرحها الأخوة SUM tmaa أو MADI أو زكيري و غيرهم من الأخوة الكرام) للإجانة على سوال لا يتعلق بالموضوع المطروح

أعتذر على الإطالة و شكرا لكم

:o (f)

#2

السلام عليكم

بالنسبه لسؤالك ممكن تستفيد من هذا الكود

حاول تغير في الكود الاتي بما يتناسب مع طلبك .

//Add this in private 
  private
    { Private declarations }
// MyClick (MyMouseDown)  has the same declaration as Click ( MouseDown ) procedure
    procedure MyClick(Sender: TObject);
    procedure MyMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

// Add this before implementation 
var
  My_bt:array [0..1]of TButton;
implementation 
...
//*****
procedure TForm1.MyClick(Sender: TObject);
begin
  with (Sender as TButton) do
  begin
// You can use this procedure for more than one button ,just  add a condition to know which button is calling it
    ShowMessage('My Caption is '+Caption);
  end;

end;
//*****
procedure TForm1.MyMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  with (Sender as TButton) do
  begin
    Form1.Caption:='My Caption is '+Caption;
  end;
end;
// Here we create one button 
procedure TForm1.Button1Click(Sender: TObject);
begin
My_bt[0]:=TButton.Create(Form1);
with My_bt[0] do
 begin
// Here we initialize properties ,methods
    Visible := true;
    Top := 20;
    Left := 20;
    Width := 75;
    Caption := 'My_bt0';
    Name := 'My_bt0';
    Parent := Form1;
    OnClick := MyClick;
    OnMouseDown:=MyMouseDown;
    Visible:=true;
  end;
end;

اظن ان الكود واضح , ان كان هناك اي غموض فالجميع في الخدمه ان شاء الله .

(f)

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#3

السلام عليكم

جزاك الله خيرا أخي Tmaaa على مساعدتك لي و كثر الله من أمثالك والذين يحبون أن يتعلموا و يعلموا وأن يستفيد الجميع باذن الله

لقد فهمت الكود الذي أعطيتني إياه و أتممت برنامجي بحمد الله ولكن أحب أن أتأكد مما فهمته :

1- عندما قمنا بانشاء العنصر الجديد مررنا Form1 كوسيط للإجراء create ثم ضبطنا الخاصة Parent في العنصر المنشأ بنفس القيمة فهل هذا ما يحصل دائما أم أن لكل دلالته الخاصة وأن كان كذلك فما دلالة كل منهما (الوسيط الممرر للإجراء Create و قيمة الخاصة Parent )؟

2- تم تعريف الإجراء MyMouseDown كإجراء من اجراءات الكائن Form1 لأننا أعطينا الخاصة Parent القيمة Form1 أهذا هو الصحيح أم ليس بالضرورة ؟

شكرا مرة أخرى

(f) (f)

#4

السلام عليكم

اخي العزيز اولا اعتذر على ان الرد سيكون مختصرا ...

بالنسبه لسؤالك الاول

هناك فرق بين Owner و Parnet ممكن تراجع delphi help

Owner ( الوسيط الممرر الى create ) عباره عن property و عنصر من TComponent class .

بالنسبه لـ Parent فهي تابعه لـ TControl .

راجع الـ help لــ (TComponent و TControl ) واي استفسار الاخوة كلهم في الخدمه .

( لا تؤاخذني انا دائما اكرر الاعتماد على الـ help لانه الكتاب الاول الذي يعلمك الدلفي ) .

بالنسبه للسؤال الثاني :

لان الـ Button المتكون سيكون جزء من الـ TForm1 , يمكن ان تكون قيمه Parent مساويه لــ Panel1 موجوده في الـ Form1 مثلا ( التي هي بدورها جزء من الـ TForm1 ).

لاحظ عند اضافه Component جديد الى الــ Form ان التصريح به و بالاجراءات التابعه له توضع ضمن تصريح الـ class التابع للـ Form .

(f)

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#5

السلام عليكم

شكرا أخي العزيز على التوجيه قرأت شوي بال Help و فهمت القصة تقريبا

(f)

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

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