Здравствуйте. Подскажите пожалуйста как тут можно исправить. Хочу в real-time менять размер иконок. Но при смене у меня выходит, какбы одна лежит на другой. Как сделать правильно? Сделал тестовый код, который чётко показывает проблему
| Код | unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls;
type TForm1 = class(TForm) ListView1: TListView; Button1: TButton; Button2: TButton; procedure ListView1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); var Rect: TRect; begin Rect:= Item.DisplayRect(drIcon); case Item.Index of 0: ListView1.Canvas.Brush.Color:= clBlack; 1: ListView1.Canvas.Brush.Color:= clRed; 2: ListView1.Canvas.Brush.Color:= clLime; end; ListView1.Canvas.FillRect(Rect); DefaultDraw:= False; end;
procedure TForm1.Button1Click(Sender: TObject); var ImgList: TImageList; begin ImgList:= TImageList.Create(Self); with ImgList do begin Width:= 60; Height:= 60; end; ListView1.LargeImages:= ImgList; end;
procedure TForm1.Button2Click(Sender: TObject); var ImgList: TImageList; begin ImgList:= TImageList.Create(Self); with ImgList do begin Width:= 200; Height:= 200; end; ListView1.LargeImages:= ImgList; end;
end.
|
|