الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

اجعل الكائنات تظهر بشكل مسطح ( Flat )

مغلق
بدأه SUM في 6 يونيو 2002 · 3 رد · 1,400 مشاهدة · في أرشيف منتدى الدلفي
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

اخوتي الأعزاء اليكم هذه الهدية البيسطة وهي عبارة عن كود قمت بكتابته يقوم بتحويل الكائنات الى الى شكل مسطح ( 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

#2

السلام عليكم

مشكور اخ SUM على هذه الهديه .

لدي تساؤل بسيـــــــط :

اما من طريقة اخرى بدلا عن استخدام Timer ؟ لدي حساسيه من استخدامه :D

(f)

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#3

اهلاً وسهلاً بك اخي العزيز Tmaaa

يمكنك مراجعة المسشفى لكي تيم الكشف عن الحساسية ;)

بالنسبة لأستخدام الكود فيمكنك استخدامه في الحدث OnCreate في ولكن عندما تستخدم الكائن Button او اي كائن تفاعلي شبيه به فأنه لان تجد معك استخدام OnCreate

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

وتوجد طريقة اخرى جيده ولكنه تحتاج جهد وهي انك تقوم بتصنيع كائنات جديدة وتجعلها متوافقه على الكود السابقة :D

وتقبل اطيب تحياتي اخوك SUM

#4

السلام عليكم

الطريقة الاولى جربتها قبل ما اكتب الرد السابق :)

الحل الثاني تبادر الى ذهنى ايضا :)

مشكور

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

هذا الموضوع مغلق.

مواضيع مشابهة