مشكلة في إنشاء مكون أثناء التنفيذ !
#1

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

أخواني كنت أحاول أنشاء مكون 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 : المكون يتم إنشائه ولكنه لا يظهر !!

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

وشكرا جزيلا

والسلام عليكم
شكوت إلى وكيع سوء حفظي ... فأرشدني إلى ترك المعاصي
وأخــبـرنـي بــأن الـعـلـم نـور ... ونـور الله لا يـهدى لـعـاصي
الرد
#2

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

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

اود ان احييك اخي دكتر موت على مثابرتك ، يعني من اين تاتي بهذه الافكار Big Grin
لا إله إلا الله محمد رسول الله
الرد
#3
نسيت 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
لا اله الا أنت سبحانك اني كنت من الضالمين
الرد
#4
me&delphi' كتب :نسيت parent وهو الدي سيحتوي أي سيستقبل المكون

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

معلومة جديدة ولله الحمد,,
فرّج همّ المهمومين يا الله
اللهم فك قيد اسرانا و اسرى المسلمين
الرد
#5
شكرا لكم أخواني الكرام ,,,

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

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

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

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

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

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

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

وشكرا لكم جميعا
شكوت إلى وكيع سوء حفظي ... فأرشدني إلى ترك المعاصي
وأخــبـرنـي بــأن الـعـلـم نـور ... ونـور الله لا يـهدى لـعـاصي
الرد
#6
إقتباس :لكن أخي ما هو Parent ؟؟

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


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

راجع فقط ملف المسااعدة المرفق مع دلفي
لا اله الا أنت سبحانك اني كنت من الضالمين
الرد
#7
نعم نعم بارك الله فيك أخي الحبيب ,,

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

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

شكرا
شكوت إلى وكيع سوء حفظي ... فأرشدني إلى ترك المعاصي
وأخــبـرنـي بــأن الـعـلـم نـور ... ونـور الله لا يـهدى لـعـاصي
الرد
#8
السلام عليكم
إقتباس :Parent هو المكون الدي سيحتوي على المكون الدي قمت بانشاءه وقت التنفيد
تماما...
وكذلك التطبيق Application هو Parent (أي الأب) للنموذج TForm
مثال:
من كود المشروع الرئيسي هناك سطر مكتوب فيه:
كود :
Application.CreateForm(TForm1, Form1);
هذا الأمر يعني إنشاء نموذج وجعل المكون الأب له هو التطبيق Application
يمكن كتابة هذا الأمر بشكل آخر...
حاول حذف هذا الأمر واكتب عوضا عنه السطرين:
PHP كود :
Form1 := TForm1.Create(Application);//إنشاء نموذج وجعل التطبيق أبا له
  
Form1.ShowModal;//عرض النموذج 
ستحصل على نفس النتيجة.
الرد
#9
PHP كود :
procedure TForm1.FormDestroy(Sender: TObject);
begin
Edt
.Free
end
; 

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

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

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

تسبب بطىء في الجهاز وأحيانا تجمده
لا اله الا أنت سبحانك اني كنت من الضالمين
الرد
#10
نعم بارك الله فيكم ,,

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

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

السلام عليكم
شكوت إلى وكيع سوء حفظي ... فأرشدني إلى ترك المعاصي
وأخــبـرنـي بــأن الـعـلـم نـور ... ونـور الله لا يـهدى لـعـاصي
الرد


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


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