Type THackControl = class(TControl); procedure ChangeColor(vControl:...">
EasyDelphi Q&A
+4 تصويتات
186 مشاهدات
أريد تمرير مكون عن طريق اجراء بحيث يكون المكون غير محدد النوع (Edit أو GroupBox1 أو ...  الخ ) المهم انه له خاصية  color   ويقوم الاجراء بتغيير لون هذا المكون الممرر
في تصنيف Delphi بواسطة (11,240 نقاط) | 186 مشاهدات

2 إجابة

+3 تصويتات
أفضل إجابة
Type
  THackControl = class(TControl);

procedure ChangeColor(vControl: TControl; vColor: TColor);
begin
  THackControl(vControl).Color := vColor;
end;

using:
ChangeColor(Edit1, clRed);
ChangeColor(GroupBox1, clBlack);
 

 

بواسطة (810 نقاط)
مختارة بواسطة
0
جربت الاجراء  بدون الكلاس THackControl  هكذا  

procedure ChangeColor(vControl: TControl; vColor: TColor);
begin
  vControl.Color := vColor;
end;  
ونجح الامر سؤالي ما فائدة الكلاس THackControl يعني لو كتبته بالطريقة التي ذكرتها أنا هل فيه مشكلة
0
خاصيه Color هي protected بالنسبه Control عند استخدام VCL
لذلك يتم الوصول اليها عبر THackControl
بالنسبه لتطبيفات .Net هذه الخاصيه Public
0
بماذا تفسر اشتعال الكود الذي ذكرته أنا
0
انت تستخدم Delphi .Net
" بالنسبه لتطبيفات .Net هذه الخاصيه Public"
0
أنا أستخدم lazarus
0
اذا هذا هو السبب :)
الكود السابق يعمل على كل من lazarus و Delphi اذا اردت التوافق :)
اذا لم ترد استخدام THackControl فان الكود السابق لن يعمل على Delphi (برامج VCL)
0
شكرا لك وجدت الخاصية color في لازاروس public
+1 تصويت
  1.  نقوم بتعريف الوحدة  System.TypInfo   في Interface uses  .
    uses 
    System.SysUtils
  2. نقوم بتعريف نوع خاص بنا مشتق من TWinControl ونستدعي الخاصية Color .
     
     type
      TControlWithColor = class(TWinControl)
       public
        property Color;
      end;
  3.  في هذا الاجراء نقوم بالتحقق من وجود الخاصية Color قبل تغيير اللون .
     
    procedure _ChangeColor(AControl : TWinControl; MyColor : TColor = clBlue);
     begin
        if IsPublishedProp(AControl, 'Color') = true then
              TControlWithColor(AControl).Color := MyColor;
     end;
  4. تجربة تغير اللون للمكونات القياسية .

 

   _ChangeColor(Panel1);
   _ChangeColor(Radiogroup1, ClWhite);
   _ChangeColor(Edit1);



 

 

 

 

 
 
#s3gt_translate_tooltip_mini { display: none !important; }
بواسطة (8,060 نقاط)
عُدل بواسطة

اسئلة متعلقة

+4 تصويتات
4 إجابة
سُئل يونيو 27، 2018 بواسطة Amar Gozim (11,240 نقاط) | 311 مشاهدات
+3 تصويتات
2 إجابة
+4 تصويتات
2 إجابة
سُئل أكتوبر 18، 2018 في تصنيف Delphi بواسطة Amar Gozim (11,240 نقاط) | 213 مشاهدات
+2 تصويتات
0 إجابة
سُئل يوليو 24، 2019 في تصنيف Delphi بواسطة Amar Gozim (11,240 نقاط) | 57 مشاهدات
+3 تصويتات
1 إجابة
سُئل يوليو 3، 2018 في تصنيف Components بواسطة مجهول | 482 مشاهدات
ادعُ اصدقائك في الفايسبوك لمشاركتك
Comodo SSL

مرحبًا بك إلى EasyDelphi Q&A، حيث يمكنك طرح الأسئلة والحصول على الإجابة عليها من المستخدمين الآخرين.

لا يسمح بطلب او السؤال عن كراك او تفعيل او كسر او فك او اي شيء يخالف اتفاقيات الترخيص  مهما كان السبب ومهما كان البرنامج ونوعه. ولا حتى نشر روابط تحتوي على مثل هذه الاشياء لا في الاسئلة ولا في الاجابات ولا التعليقات . نهائيا

497 سؤال
752 إجابة
1,417 تعليق
278 مستخدم