![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с 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;