D
Dock1100
Вот мой код отрисовки листбокса, но
1. рисунок блымает, и глючит
2. Почемуто надписи видны токо при выделении
1. рисунок блымает, и глючит
2. Почемуто надписи видны токо при выделении
Код:
procedure TForm8.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
ListBox1.Canvas.Brush.Color:=rgb(120,120,120);
ListBox1.Canvas.pen.Style :=psclear;
listbox1.Canvas.Font.Color:=rgb(255,255,255);
ListBox1.Canvas.StretchDraw(bounds(0,0,listbox1.Width,listbox1.Height),bmp);
//если вместо етого написать ListBox1.Canvas.fillrect(bounds(0,Rect.Top,rect.Right,listbox1.ItemHeight));
//то надписи видны и нету ефкта блыманья
ListBox1.Canvas.TextRect(rect,rect.left+3,rect.top+20,'');
listbox1.Canvas.TextOut(rect.left+3,rect.top+3,ListBox1.Items[Index]);
listbox1.Canvas.TextOut(rect.left+3,rect.top+20,ListBox1.Items[Index]);
if odselected in state then
begin
ListBox1.Canvas.pen.Width:=1;
ListBox1.Canvas.pen.Color :=rgb(100,100,100);
ListBox1.Canvas.Brush.Color:=rgb(120,139,130);
ListBox1.Canvas.roundrect(0,rect.Top,rect.Right,rect.bottom,10,10);
ListBox1.Canvas.Brush.Style:=bsclear;
ListBox1.Canvas.Font.Color:=rgb(255,255,255);
ListBox1.Canvas.Font.style:=[fsbold];
ListBox1.Canvas.TextRect(rect,rect.left+3,rect.top+20,'');
listbox1.Canvas.TextOut(rect.left++3,rect.top+3,ListBox1.Items[Index]);
listbox1.Canvas.TextOut(rect.left++3,rect.top+20,ListBox1.Items[Index]);
end;
if odFocused in State then
ListBox1.Canvas.DrawFocusRect(Rect);
end;