السلام عليكم ورحمة الله,,
اخوآني الكرام,
اود ان اعدل على ال Listbox حتى يصبح بالشكل التآلي,, (او شئ مثل هذا)
اطلعت على درس الدورة عن النشآء الكومبننتات لكن حقيقة رغم ذلك لا اعرف من اين ابدئ,
هناك في الحقيقة امرين احتاج التعديل عليهما,
الأول,
كل Item يحتاج الى Border حتى يصبح كما في الأعلى,
ثانيا,
عند الضغط على Item,
بدل الّون الإفترآضي الأزرق سيكون مثلا لون الأحمر او شئ من هذا,,
حسب البحث, فهناك شئ يجب عمله على OnDrawItem والله اعلم,
السمكة مهمّة بالنسبة لي, لكن الأهم هو ان اتعلم كيف اصيدها,,
بارك الله لكم
وجزآكم خيرا
اي نسخة من دلفي تعمل عليها .؟
لي مكون على شكل ListBox ولكن برمجته كانت From scratch برمجته خصيصا للبتار فيه ميزات كثيرة منها ماذكرته ولكنني استعمله تحت delphi 7 , لم اجربه مع 2009 او 2010 اذا اردت سوف ارسل لك نسخة وتقوم بتجربتها تحت 2010 واذا استلزم الامر قم بالتعديل عليه لكي تعمل على 2009 او 2010
طيب حسناً, بارك الله فيك, انتظر المكون منك ان شاء الله,
ساستخدمه كحل مؤقت, (حتى اصنع وآحدا بنفسي)
ومع هذا, فأنا اود فعرفة الطريقة من البدآية بارك الله لكم
:bye1:
هدا عبارة عن مكون
ListBox عادى ... قم بلصق هده الكتابة على ال
Form
PHP كود :
object ListBox1: TListBox
Left = 16
Top = 24
Width = 249
Height = 100
Style = lbOwnerDrawVariable
BorderStyle = bsNone
Color = 11775662
ItemHeight = 20
Items.Strings = (
'Item 0'
'Item 1'
'Item 2'
'Item 3'
'Item 4')
TabOrder = 0
end
جرب هدا فى حدث
DrawItem
PHP كود :
begin
with ListBox1.Canvas do
begin
Pen.Color := RGB(127, 157, 185);
if Index < 1 then
Rectangle(Rect)
else
Rectangle(Rect.Left, Rect.Top - 1, Rect.Right, Rect.Bottom);
if (odSelected in State) then
begin
Brush.color := ListBox1.Color;
Font.color := 255;
Fillrect(Rect);
end;
TextOut(Rect.Left + 3, Rect.Top + 2, ListBox1.Items[Index]);
end;
end;
النتيجة
![[صورة: 725142558.png]](http://www13.0zz0.com/2010/01/01/06/725142558.png)
جزآك الله خيرا اخي هاني,
بالنسبة لهذا, عند وضعه وعمل Scroll بالموس يحدث خلل,
PHP كود :
begin
with ListBox1.Canvas do
begin
Pen.Color := RGB(222, 222, 222); // BorderColor
if Index < 1 then
Rectangle(Rect)
else
Rectangle(Rect.Left, Rect.Top - 1, Rect.Right, Rect.Bottom);
if (odSelected in State) then
begin
Brush.color := $00cccccc;//ListBox1.Color;
Font.color := $888888;//Text Color
Fillrect(Rect);
end;
TextOut(Rect.Left + 3, Rect.Top + 2, ListBox1.Items[Index]);
end;
end;
الخلل هو, بعد الضغط على احد ال items ولنفترض الخآمسة,
وبعدها عمل Scroll يحدث تلوّن في السيت بوكس غير صحيحة,,
هل هناك طريقة لتفآدي هذا الخطأ ؟
وهذا,
PHP كود :
if (odSelected in State) then
ال State معرّف TOwnerDrawState لكن ما هو على ارض الوآقع ؟
جزآك الله خيرا اخي الكريم
عذرا, يبدوا الخلل لا يحدث مع الدلفي 2010, فقط الدلفي 7,,
بقي هذه,
إقتباس :ال state معرّف townerdrawstate لكن ما هو ال state على ارض الوآقع ؟
TOwnerDrawState
هو عبارة عن مجموعة من الاحداث الخاصة بال Items كل حدث ودوره و odSelected حدث من بين تلك الاحداث وهو خاص ب ... ينفد عند اختيار احدى ال Item وينفد على هدا الاخير فقط .
بالنسبة لخلل التلوين انا لا يحدث عندى اى خلل ... ارفق صورة للخلل.
هدا غير شكل FocusRect ... نعم هكدا احسن ...