ImageList1.Draw(CheckListBox1.Canvas, CheckListBox1.Canvas.TextWidth('W'+CheckListBox1.I tems[Index])+2+Rect.Left, Rect.Top, Index);
Я сделал лучше но все равно
Код:
procedure TForm1.CheckListBox4DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var i:integer;
cc:TCanvas;
begin
PngIcon:=TPngImage.Create;
if odSelected in State then begin
CheckListBox4.Canvas.Brush.Color:=DynamicColor[40];
CheckListBox4.Canvas.Font.Color:=DynamicColor[39];
end
ELSE begin
CheckListBox4.Canvas.Brush.Color:=CheckListBox4.Color;
CheckListBox4.Canvas.Font.Color:=DynamicColor[38];
end;
CheckListBox4.ItemHeight:=20;
CheckListBox4.Canvas.Font.Size:=12;
CheckListBox4.Canvas.FillRect(Rect);
if (Length(ParamIconSaveLang[index])>0)and(ParamIconSaveLang[index]<>'...') then begin
PngIcon.LoadFromFile(ExtractFileDir(Application.ExeName)+ParamIconSaveLang[index]);
CheckListBox4.Canvas.Draw(Rect.Left,Rect.Top+3,PngIcon);
end;
CheckListBox4.Canvas.TextOut(Rect.Left+PngIcon.Width+5,Rect.Top,DynamicLangSaveLang[index]);
PngIcon.Free;
end;
Не решает проблемы иконка должна быть по середине height текста и это число надо получить CheckListBox4.ItemHeight:=20; программно