بسم الله الرحمن الرحيم
اخوتي الأعزاء اليكم هذه الهدية البيسطة وهي عبارة عن كود قمت بكتابته يقوم بتحويل الكائنات الى الى شكل مسطح ( Flat )
مع امكانية اختيار الألوان وتنسيقها على حسب الرغبة
procedure Flat (Compnents:TWinControl;FocusedColor: TColor;BorderColor: TColor; FFlatColor: TColor; AdvColorFocused: integer; FAdvColorBorder:integer);
var
DC: HDC;
R: TRect;
BtnFaceBrush, WindowBrush, FocusBrush: HBRUSH;
begin
DC := GetWindowDC(Compnents.Handle);
try
GetWindowRect(Compnents.Handle, R);
OffsetRect(R, -R.Left, -R.Top);
BtnFaceBrush := CreateSolidBrush(ColorToRGB(BorderColor));
WindowBrush := CreateSolidBrush(ColorToRGB(FFlatColor));
FocusBrush := CreateSolidBrush(ColorToRGB(FocusedColor));
begin
{ non Focus }
FrameRect(DC, R, BtnFaceBrush);
InflateRect(R, -1, -1);
FrameRect(DC, R, WindowBrush);
InflateRect(R, -1, -1);
FrameRect(DC, R, WindowBrush);
end;
finally
ReleaseDC(Compnents.Handle, DC);
end;
DeleteObject(WindowBrush);
DeleteObject(BtnFaceBrush);
DeleteObject(FocusBrush);
end;
طبعا كما هو موضح لك في الكود فعند استدعائه تقوم بتحديد الكائن الذي تريد ان تجعله بشكل مسطح ويجب ان يكون من نوع TWinControl ومن ثم تحدد ألوان الحدود التي تريد
مثال على استخدام الفانكشن السابق :
اولاً ضع الكائن Timer على الفورم ثم قم بكتابة الأمر التالي بداخلة :
var i:integer; begin for i:=0 to Form1.ComponentCount-2 do Flat(TWinControl(Form1.Components),clWhite,$008396A0,clWhite,10,50);
(( يفضل جعل قيمة ال Interval لل Timer قليلة ويفضل ان تكون 1 وذلك حتى يتم تغيير شكل الكائنات اسرع وضمان عدم اعادة رسمها بشكلها الأصلي وخاصة الكائن Button ))
بعدها قم بوضع اي كائن تشاء على الفورم وقم بتشغيل البرنامج وأنظر الى النتيجة ;)
وتقبلوا اطيب تحياتي اخوكم SUM