قد تبرمج بنامجا دو مستوى جيد و يطلب منك الزبون أن تجعل البرنامج كله في نافدة واحدة أو تود أن تجعل جميع نوافدك تظهر في نافدة واحدة هدا المثال سيوصل لك الفكرة ان شاء الله.
بالتوفيق.
لا اله الا أنت سبحانك اني كنت من الضالمين
كل من 1 user says قال شكرا ل me_delphi على المشاركة المفيدة1 user says Thank You to me_delphi for this post • Tamer17
27-02-2011, 01:21 PM (آخر تعديل لهذه المشاركة: 23-02-2012, 09:31 PM بواسطة kachwahed.)
وعليكم السلام ورحمة الله
مثال جميل
بشكل عام، في الحالات حيث نريد تمرير متغير يختلف صنفه (هنا TForm2, TForm3, TForm4)
يمكننا مبدئيا استعمال أحد الطريقتين:
1- تمرير الصنف نفسه صنفه class of TForm في هذا مثال
معرف مسبقا باسم TFormClass في المكتبة Forms
في هذه الحالة لا يمكن فحص إنشاء النموذج مباشرة... لذلك نلجأ إلى طريقة ثانية:
2- تمرير متغير غير ذي نمط Untyped Reference
لأجل نفس المثال السابق مثلا:
PHP كود :
procedure CreateAndCheck(var AForm; FormClass: TFormClass); begin with TForm(AForm) do if not Assigned(TForm(AForm)) then begin Application.CreateForm(FormClass, TForm(AForm)); Parent := Form1.Panel1; Width:= 380; Height:= 500; Top:=0; Left:= 0; end else Show; end;
وهنا ينبغي تمرير المتغير وصنفه أيضا إذ لا يمكن جلب صنف المتغير باستخدام ClassParent ثم قولبتها بشيء مثل:
السلام عليكم
فكرة رائعة جدا
ولكن هناك مشكل عند فتح مثلا Form2 وبعدها فتح Form3 وبعدها فتحت Form4 ستبقى جميعها مفتوحة وهذا سيجعل البرنامج بطيئ . تخيل لو كانت لديك عدة نوافذ مليئة بالمكونات .ماذا يحصل في رأيك ؟ أكيد البطئ وهذا يؤثر على البرنامج
المهم الفكرة طيبة جدا لكن تنقصها بعض التعديلات لإغلاق النوافذ الأخرى