delphi4arab منتديات دلفي للعرب

نسخة كاملة : اود انشآء او التعديل على ال Listbox ؟
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم ورحمة الله,,

اخوآني الكرام,

اود ان اعدل على ال Listbox حتى يصبح بالشكل التآلي,, (او شئ مثل هذا)

[صورة: speciallistbox.jpg]

اطلعت على درس الدورة عن النشآء الكومبننتات لكن حقيقة رغم ذلك لا اعرف من اين ابدئ,

هناك في الحقيقة امرين احتاج التعديل عليهما,

الأول,
كل Item يحتاج الى Border حتى يصبح كما في الأعلى,

ثانيا,
عند الضغط على Item,
بدل الّون الإفترآضي الأزرق سيكون مثلا لون الأحمر او شئ من هذا,,

حسب البحث, فهناك شئ يجب عمله على OnDrawItem والله اعلم,

السمكة مهمّة بالنسبة لي, لكن الأهم هو ان اتعلم كيف اصيدها,,

بارك الله لكم

وجزآكم خيرا
اي نسخة من دلفي تعمل عليها .؟
إقتباس :اي نسخة من دلفي تعمل عليها .؟

آسف, نسيت كتآبة هذا,

الدلفي 2010

بارك الله لك.,
لي مكون على شكل 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]
جزآك الله خيرا اخي هاني,

بالنسبة لهذا, عند وضعه وعمل 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 ... نعم هكدا احسن ...
PHP كود :
Font.color := $888888; 
الصفحات : 1 2