1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
procedure TfrmMain.lvpenetAdvancedCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage;
var DefaultDraw: Boolean);
var r: TRect;
i,t:integer;
begin
r:=item.DisplayRect(drbounds);
r.Right:=sender.BoundsRect.Right; //toute la ligne
r.left:=r.left+20-1;
if (item.Selected) then
begin
sender.canvas.Brush.color := clNavy;
sender.canvas.font.Color:=clWhite;
end
else if (item.checked) then //sélectionné
begin
sender.canvas.Brush.color := $00CACAFF;
sender.canvas.font.Color:= clNavy;
end
else
begin
sender.canvas.Brush.color := $00DFFFDF;
sender.canvas.font.Color:= clNavy;
end;
sender.canvas.font.Style:=[fsbold];
sender.canvas.FillRect(r);
sender.Canvas.textout(r.Left+2, r.top,item.caption);
r:=item.DisplayRect(drbounds);
r.Right:=r.left+5 + 1; //check box marge = 5 ... + 1 car sinon bord blancs :s
sender.canvas.FillRect(r); //gauche
r.left:=r.Right;
r.right:=r.left+15 - 1; //Size box = 15 -1 pour pas dépasser
i:=r.Bottom-r.Top; //i=fourre tout;
r.Bottom:=r.Top + ((i-15) div 2) + 1; //+ 1 car sinon bord blancs :s
sender.canvas.FillRect(r); //dessus
r.Top:=r.top+15;
r.Bottom:=r.Top + ((i-15) div 2); //dessous -2 pour pas dépasser
sender.canvas.FillRect(r);
//On custom draw subitem fonctionne pas, on dessine les subitems tout de suite !
r:=item.DisplayRect(drbounds);
sender.canvas.font.Style:=[];
t:=2; //2 pour la marge
for i := 0 to item.SubItems.Count - 1 do
begin
t:=t+sender.column[i].width;
sender.Canvas.textout(r.Left + t, r.top,item.subitems[i]);
end;
end;
procedure TfrmMain.lvpenetChange(Sender: TObject; Item: TListItem;
Change: TItemChange);
begin
lvpenet.Repaint; //se déclenche lors du click sur un checkbox(entre autres...)
end; |
Partager