delphi4arab منتديات دلفي للعرب
مشكلة في إنشاء مكون أثناء التنفيذ ! - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : مشكلة في إنشاء مكون أثناء التنفيذ ! (/showthread.php?tid=887)

الصفحات: 1 2


مشكلة في إنشاء مكون أثناء التنفيذ ! - Dr.MOT - 13-05-2009


السلام عليكم ورحمة الله ,,,

أخواني كنت أحاول أنشاء مكون TEdit أثناء التنفيذ run time لكن لا اعرف لماذا لا يظهر المكون في الفورم ,,

محاولتي :

PHP كود :
procedure TForm1.Button1Click(Sender: TObject);
var
Edt : TEdit ;
begin
 Edt 
:= TEdit.Create(Self);
 
With Edt do
 
begin
 width 
:= 70 ;
 
Top := 70    ;
 
left := 250 ;
 
Visible := True ;
 
Enabled := True ;
 
Text := 'hah';
 
end;
 
end;

end; 

ملاحظة : Compiler لا يظهر أي أخطاء ,, بل يعمل الفورم وعند الضغط على الزر لا يظهر المكون في الفورم !؟

ملاحظة2 : المكون يتم إنشائه ولكنه لا يظهر !!

ما المشكلة أخواني ؟

وشكرا جزيلا

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



مشكلة في إنشاء مكون أثناء التنفيذ ! - I_Tiger - 13-05-2009


في الحقيقة ليس عندي جواب شافي و لكن لدي نظرية Rolleyes

اظن انه ينبغي عليك التعديل في ملف DFM لانه على حد علمي هو المسؤول عن الجانب المرئي من الفورم

اود ان احييك اخي دكتر موت على مثابرتك ، يعني من اين تاتي بهذه الافكار Big Grin



مشكلة في إنشاء مكون أثناء التنفيذ ! - me_delphi - 13-05-2009

نسيت Parent وهو الدي سيحتوي أي سيستقبل المكون

PHP كود :
procedure TForm1.FormCreate(Sender: TObject);
var
Edt : TEdit ;
begin
 Edt 
:= TEdit.Create(Self);
 
With Edt do
 
begin
 Parent
:=Form1;
 
width := 70 ;
 
Top := 70    ;
 
left := 250 ;
 
Visible := True ;
 
Enabled := True ;
 
Text := 'hah';
 
end;
end; 

ولا تنسى اظافة الوحدة StdCtrls


مشكلة في إنشاء مكون أثناء التنفيذ ! - AL-MOB4RM3G - 14-05-2009

me&delphi' كتب :نسيت parent وهو الدي سيحتوي أي سيستقبل المكون

بارك الله لك اخي الكريم,, جربت هذا وهو شغّال تمام,.,,

معلومة جديدة ولله الحمد,,


مشكلة في إنشاء مكون أثناء التنفيذ ! - Dr.MOT - 14-05-2009

شكرا لكم أخواني الكرام ,,,

إقتباس :يعني من اين تاتي بهذه الافكار :d

سرقتها من أحدهم Big Grin

عندما قرأت له ردا يقول أنه من الأفضل إنشاء المكونات برمجيا فذلك يجعل البرنامج أخف وأسرع ,, حينها قررت المغامرة Big Grin

إقتباس :نسيت parent وهو الدي سيحتوي أي سيستقبل المكون

نعم نعم أخي الكريم ذاك ما كان سنقصني ,, بارك الله فيك

لكن أخي ما هو Parent ؟؟

هل يمكن أن تمدني بـ رابط يتحث عنه ؟؟

وشكرا لكم جميعا


مشكلة في إنشاء مكون أثناء التنفيذ ! - me_delphi - 14-05-2009

إقتباس :لكن أخي ما هو Parent ؟؟

هل يمكن أن تمدني بـ رابط يتحث عنه ؟؟


الأمر لايستدعي دلك ف Parent هو المكون الدي سيحتوي على المكون الدي قمت بانشاءه وقت التنفيد وهو عبارة عن خاصية

راجع فقط ملف المسااعدة المرفق مع دلفي


مشكلة في إنشاء مكون أثناء التنفيذ ! - Dr.MOT - 15-05-2009

نعم نعم بارك الله فيك أخي الحبيب ,,

راجعت وفهمت تماما ,,,

ملاحظه للاخوهـ يمكن وضع المكون بـ Panel مثلا عن طريق :
إقتباس :Edt.Parent := Panel1 ;

شكرا


مشكلة في إنشاء مكون أثناء التنفيذ ! - kachwahed - 18-05-2009

السلام عليكم
إقتباس :Parent هو المكون الدي سيحتوي على المكون الدي قمت بانشاءه وقت التنفيد
تماما...
وكذلك التطبيق Application هو Parent (أي الأب) للنموذج TForm
مثال:
من كود المشروع الرئيسي هناك سطر مكتوب فيه:
كود :
Application.CreateForm(TForm1, Form1);
هذا الأمر يعني إنشاء نموذج وجعل المكون الأب له هو التطبيق Application
يمكن كتابة هذا الأمر بشكل آخر...
حاول حذف هذا الأمر واكتب عوضا عنه السطرين:
PHP كود :
Form1 := TForm1.Create(Application);//إنشاء نموذج وجعل التطبيق أبا له
  
Form1.ShowModal;//عرض النموذج 
ستحصل على نفس النتيجة.



مشكلة في إنشاء مكون أثناء التنفيذ ! - me_delphi - 19-05-2009

PHP كود :
procedure TForm1.FormDestroy(Sender: TObject);
begin
Edt
.Free
end
; 

هدا أهم شيء كدنا ننساه ادا نسيته سيغضب منك حاسوبك Big Grin

فأي كائن تقوم بانشائه لابد من تحريره بعد الانتهاء منه لكي لا يبقى في الداكرة بدون أي فائدة

وان لم تقم بتحرير الكائنات التي قمت بانشائها ستضل فس الداكر ة و تشغل حيزا مهما و بالتالي

تسبب بطىء في الجهاز وأحيانا تجمده


مشكلة في إنشاء مكون أثناء التنفيذ ! - Dr.MOT - 19-05-2009

نعم بارك الله فيكم ,,

طبعا اخ me&delphi التحرير يكون عند الحدث OnDestroy للفورم

شكرا لكم جميعا اجابة كافية وشافية

السلام عليكم