Конференция "Основная" » Как изменить цвет item'a в TCheckListBox? [D6, D7, WinXP]
 
  • Ukrainec (09.02.08 00:36) [0]
    Собственно, сабж - Как изменить цвет item'a в TCheckListBox?

    В TListBox изменяю цвет следующим образом:

    procedure TForm1.CheckListBox1DrawItem(Control: TWinControl;
     Index: Integer; Rect: TRect; State: TOwnerDrawState);
    begin
    with CheckListBox1 do
    begin
     Canvas.Brush.Color:=clSkyBlue;
     Canvas.FillRect(Rect);
     Canvas.TextOut(Rect.Left+2,Rect.Top,Items[index]);
    end;
    end;

  • Германн © (09.02.08 00:47) [1]

    > Ukrainec   (09.02.08 00:36)
    >
    > Собственно, сабж - Как изменить цвет item'a в TCheckListBox?
    >
    >
    > В TListBox изменяю цвет следующим образом:
    >
    > procedure TForm1.CheckListBox1DrawItem(Control: TWinControl;
    >
    >  Index: Integer; Rect: TRect; State: TOwnerDrawState);
    > begin
    > with CheckListBox1 do
    > begin
    >  Canvas.Brush.Color:=clSkyBlue;
    >  Canvas.FillRect(Rect);
    >  Canvas.TextOut(Rect.Left+2,Rect.Top,Items[index]);
    > end;
    > end;
    >

    Откуда "надыбал" сей пример?
  • Ukrainec (09.02.08 00:55) [2]
    В DelphiWorld6
  • Германн © (09.02.08 01:06) [3]

    > Ukrainec   (09.02.08 00:55) [2]

    И что не получается?
  • Ukrainec (09.02.08 01:12) [4]
    В TListBox цвет item'a меняется на Ура! А вот в TCheckListBox - не хочет меняться...

    procedure TForm1.CheckListBox1DrawItem(Control: TWinControl;
     Index: Integer; Rect: TRect; State: TOwnerDrawState);
    begin
    with CheckListBox1 do
    begin
     Canvas.Brush.Color:=clSkyBlue;
     Canvas.FillRect(Rect);
     Canvas.TextOut(Rect.Left+2,Rect.Top,Items[index]);
    end;
    end;

  • Ukrainec (09.02.08 01:15) [5]
    Извиняюсь... не так написал код в первом посте. Так правильней:
    procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
    begin
    with ListBox1 do
    begin
     if FileExists(ENewPath.Text+ListBox1.Items.Strings[Index]) then
      Canvas.Brush.Color:=clSkyBlue;
     Canvas.FillRect(Rect);
     Canvas.TextOut(Rect.Left+2,Rect.Top,Items[index]);
    end;
    end;

  • Германн © (09.02.08 01:31) [6]

    > Ukrainec   (09.02.08 01:15) [5]

    Свойство Style в обоих случаях одинаковое?
  • Ukrainec (09.02.08 01:36) [7]
    Да, lbStandard
  • Ukrainec (09.02.08 01:37) [8]
    Спасибо за идею!

    Поставил свойство Style в lbOwnerDrawFixed - и всё стало на свои места!
  • Германн © (09.02.08 01:45) [9]

    > Ukrainec   (09.02.08 01:37) [8]
    >
    > Спасибо за идею!
    >
    > Поставил свойство Style в lbOwnerDrawFixed - и всё стало
    > на свои места!
    >

    Ой что-то ты врал в
    > Ukrainec   (09.02.08 01:12) [4]
    >
    > В TListBox цвет item'a меняется на Ура! А вот в TCheckListBox
    > - не хочет меняться...
    >

    Я даже догадываюсь что.
  • Ukrainec (09.02.08 01:47) [10]
    С чего это вдруг я врал?? В TListBox'e со стандартными настройками, цвет item'a нормально изменяется
  • Германн © (09.02.08 02:16) [11]

    > Ukrainec   (09.02.08 01:47) [10]
    >
    > С чего это вдруг я врал?? В TListBox'e со стандартными настройками,
    >  цвет item'a нормально изменяется
    >

    Ты это сам проверял? В своём проекте? На своей Дельфи? На своём компьютере?
 
Конференция "Основная" » Как изменить цвет item'a в TCheckListBox? [D6, D7, WinXP]
Есть новые Нет новых   [134482   +34][b:0][p:0.001]