ودع كثرة النوافد المنبثقة
#2
وعليكم السلام ورحمة الله
مثال جميل Smile
بشكل عام، في الحالات حيث نريد تمرير متغير يختلف صنفه (هنا TForm2, TForm3, TForm4)
يمكننا مبدئيا استعمال أحد الطريقتين:
1- تمرير الصنف نفسه صنفه class of TForm في هذا مثال
معرف مسبقا باسم TFormClass في المكتبة Forms
PHP كود :
procedure CreateAForm(ClassForm: TFormClass);
var
  
AForm: TForm;
begin
  AForm 
:= ClassForm.Create(Application);
  
AForm.Parent := Form1.Panel1;
  
AForm.Width:= 380;
  
AForm.Height:= 500;
  
AForm.Top:=0;
  
AForm.Left:= 0;
  
AForm.Show;
end; 
في مثال النماذج، هناك خدعة مشابهة تقريبا بالبحث عن اسم الصنف باستخدام FindClass
Creating a Delphi Form from a String
PHP كود :
http://delphi.about.com/library/weekly/aa080905a.htm 
في هذه الحالة لا يمكن فحص إنشاء النموذج مباشرة... لذلك نلجأ إلى طريقة ثانية:
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 ثم قولبتها بشيء مثل:
PHP كود :
Application.CreateForm(TComponentClass(AForm.ClassParent), TForm(AForm)); 
لماذا؟ ببساطة لأن نمطه غير معروف!
هذه الطرق سارية على جميع إصدارات دلفي...
هناك حل آخر (أحسن إن أمكن) باستخدام نماذج مورثة:
http://www.delphi4arab.net/forum/showpos...ostcount=2
بالتوفيق.
الرد


الردود في هذا الموضوع
ودع كثرة النوافد المنبثقة - بواسطة me_delphi - 27-02-2011, 04:26 AM
ودع كثرة النوافد المنبثقة - بواسطة kachwahed - 27-02-2011, 01:21 PM
ودع كثرة النوافد المنبثقة - بواسطة Anter2010 - 27-02-2011, 03:16 PM
ودع كثرة النوافد المنبثقة - بواسطة me_delphi - 27-02-2011, 09:58 PM
ودع كثرة النوافد المنبثقة - بواسطة magicabdou - 04-03-2012, 01:10 PM
ودع كثرة النوافد المنبثقة - بواسطة saber-bsa - 27-12-2013, 11:31 PM
ودع كثرة النوافد المنبثقة - بواسطة me_delphi - 03-03-2011, 01:20 AM

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


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