Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с CheckListBox1DrawItem [D7, XP]


Mozgan ©   (2008-10-31 10:16:00) 

Добрый день!

Мне необходимо реализовать прорисовку элементов компонента CheckListBox1. Если элемент выбран - окрасить определенным цветом, если элемент списка не выбран - в другой цвет.

Использую такой код. Но он работает не так как хотелось бы. Такое ощущение что не "хватает" одного элемента.

Подскажите пожалуйста, что я не так делаю?


procedure TForm1.CheckListBox1DrawItem(Control: TWinControl;
 Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
 myColor: TColor;
 myBrush: TBrush;
begin
 myBrush := TBrush.Create;
 with (form1.CheckListBox1).Canvas do
 begin
   if not form1.CheckListBox1.Checked[index] then
   begin
     form1.CheckListBox1.UpdateControlState;
     myColor := $00CCCCFF;
     font.Color:= clblack;
   end else
   begin
     form1.CheckListBox1.UpdateControlState;
     myColor := $00FFE4CA;
     font.Color:= clblack;
   end;
   myBrush.Style := bsSolid;
   myBrush.Color := myColor;
   Windows.FillRect(handle, Rect, myBrush.Handle);
   Brush.Style := bsClear;
   TextOut(Rect.Left, Rect.Top, (form1.CheckListBox1).Items[Index]);
   MyBrush.Free;
 end;


Palladin   (2008-10-31 10:38:00) [1]

или вместо последней, даже предпочтительней
TCheckListBox.OnClickCheck, CheckListBox1.Repaint;


Mozgan   (2008-10-31 10:32:00) [2]

Спасибо большое! разобрался!


Palladin   (2008-10-31 10:28:00) [3]

TForm.OnCreate, CheckListBox1.DoubleBuffered:=True;
TCheckListBox.OnMouseUp, CheckListBox1.Repaint;


Наверх

Титульная страница Поиск, карта сайта Написать письмо