delphi4arab منتديات دلفي للعرب

نسخة كاملة : طريقة لإنشائ MDIChild
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم


نعلم أنه هناك مشكل في إنشاء MDIChild في لازاروس لكني من خلال بحث في اليوتيوب وجدت طريقة لإنشاء MDIChild سوف أحاول أن أشرحها و بتصرف مني
فتح مشروع جديد Application و إضافة إليه Form2 ليكن عندنا نموذجين بحيث نضيف في Unit1 تحت كلمة implementation ما يلي
PHP كود :
uses Unit2 ; 


نضيف لل Form2 أداة Edit1 وأداة Button1 ونغير خصائص النمودج Form2 كما يلي


PHP كود :
BorderStyle = bsNone 
PHP كود :
Caption ='' 
وفي حدث Create للـ Form2 نكتب هذا الكود

PHP كود :
[align=left]
Top :=0;
 
Left :=0;[/align] 


وفي الحدث Show لل Form2 نكتب الكود التالي


PHP كود :
Edit1.Text := Form2.Name; 
أما بالنسبة لـButton1 نغير الخاصية Caption إلى إغلاق وفي حدث Click نكتب
PHP كود :
Form2.Close ; 
أما في النمودج الأول نضع أداة MainMenu1 وننشأ القائمة MenuItem1 ونغير الخاصية Caption للقائمة MenuItem1 إلى إظهارالنمودج وفي حدث Click للقائمة MenuItem1 نكتب كما يلي


PHP كود :
[align=left]
Form2:=TForm2.Create(Self);
 
Form1.InsertControl(Form2);
 
Form2.show;[/align] 


لو ننفذ البرنامج و نضغط على MenuItem1 يظهر نمودج بإسم Form2_1 على شكل­ MDIChild لكن هناك مشكلة وهي كلما ضغطنا على MenuItem1 يظهر نودج أخرة Form2_n ولإقاف ذلك ولنجعل البرنامج يعمل مع نمودج واحدة نغير الكود في Click للقائمة MenuItem1 كما يلي


PHP كود :
[align=left]if Trim(Form2. Caption) = '' then
 Begin
 Form2
:=TForm2.Create(Self);
 
Form1.InsertControl(Form2);
 
End;
 
Form2.show[/align] 
;
وفي الحدث Show لل Form2 نكتب الكود التالي

PHP كود :
[align=left]
Edit1.Text := Form2.Name;
 
Form2. Caption := 'إسم النمودج' ;[/align] 
إذا كنت تقصد بموضوعك ادراج فورم دخل فورم أخرى اسمح لي أخ العيد أن اقول لك بأن الطريقة التي تتبعها طويلة فالأمر لا يحتاج كل هذا العنى
الموضوع سهل وبسيط  كالتالي :
 في حدث النقر على عنصر القائمة MenuItem في الفورم الأب اكتب الكود التاليك

   
 child_frm.Parent:=main_frm;
     child_frm.BorderStyle:=bsNone;
     child_frm.Align:=alClient;
          child_frm.Show;
@Mohamed Allam إجابة أكثر من رائعة
@العيد1403 الموضوع ممتاز لكن تذكر في عالم البرمجة هونك أكثر من طريقة لفعل نفس الشئ لكن هناك طريقة واحدة جيدة او مثالية لفعل الشئ
Huh Huh Blush Idea Idea 

شكرا لكل من  delphi17 و Mohamed Allam
كنت أعتقد أني سأفيد المنتدى من موضوعي فأستفدت أنا من ردودكما بارك الله فيكما وشكرا
بالعكس أخ العيد الموضوع جيد جدا ونقاش حوله مثير للغاية "اعمل بحث في منتدى العازر و سا تلاحظ مدى النقاش الذي اثره هذا الموضوع  " ان روح النفاش هي  ما تنقص هذا المنتدى  الغالي

إطلاع على هذا : من هنا[url=http://www.oocities.org/br/hipernetjr/lmdi/index_ptbr.html][/url]

ملاحظة : إذا كان الغرض من هذ هو  عذم تكرار إنشاء الفورم إذا كانت نشطة كيفي هذا

كود :
if not Assigned(form_name) then begin form_name:= Tform_name.Create(self); form_name.Parent:=Panel; end; ipform.Show

اخ العيد مهم كنت ترئ ان الموضوع لا يهم Huh اعرف ان هنك من يهتم   Idea 
مع خلاص التحية والنذكير وفي نقاش أخر إن شاء الله