这样才行procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var
R: TRect;
begin if Item.Index mod 2 = 0 then
ListView1.Canvas.Brush.color := clAqua
else
ListView1.Canvas.Brush.color := clWhite;
if cdsSelected in state then
ListView1.Canvas.Brush.Color := clRed;
R := Item.DisplayRect(drBounds);
ListView1.Canvas.FillRect(R);
ListView1.Canvas.TextOut(R.Left + 1, R.Top + 1, Item.Caption);
DefaultDraw:= False;
end;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var
R: TRect;
begin if Item.Index mod 2 = 0 then
ListView1.Canvas.Brush.color := clAqua
else
ListView1.Canvas.Brush.color := clWhite;
if cdsSelected in state then
ListView1.Canvas.Brush.Color := clRed;
R := Item.DisplayRect(drBounds);
ListView1.Canvas.FillRect(R);
ListView1.Canvas.TextOut(R.Left + 1, R.Top + 1, Item.Caption);
DefaultDraw:= False;
end;
var
i : integer;
r : TRect;
s : string;
begin
with Sender.Canvas do
begin
if odSelected in state then
begin
Brush.Color := clNavy;
Font.Color := clWhite;
end
else
begin
Brush.Color := clWhite;
Font.Color := clBlack;
end;
r := rect; fillRect(r);
if (item.SubItems[colReadFlag] <> '1') and
(TreeView1.Selected.Index = 0) then
begin
Font.Style := [fsBold];
r.Right := r.Left + Sender.Column[0].Width;
s := item.Caption;
if Length(s) > Sender.Column[0].Width div TextWidth('A') - 3 then
s := Copy(s, 1, Sender.column[0].Width div TextWidth('A') - 3) +
'...';
TextOut(r.Left, r.Top, s);
r.left := r.right;
for i := 0 to item.SubItems.Count - 1 do
begin
if Sender.Column[i + 1].Width <> 0 then
begin
r.Right := r.Right + Sender.Column[i + 1].Width; s := item.subitems[i];
if Sender.Canvas.TextWidth(s) > Sender.Column[i + 1].Width then
s := Copy(s, 1, Sender.column[i + 1].Width div TextWidth('A')
- 3) + '...';
TextOut(r.Left, r.Top, s);
r.Left := r.Right;
end; end;
end
else
begin
Font.Style := [];
r.Right := r.Left + Sender.Column[0].Width;
s := item.Caption;
if Length(s) > Sender.Column[0].Width div TextWidth('A') - 3 then
s := Copy(s, 1, Sender.column[0].Width div TextWidth('A') - 3) +
'...';
TextOut(r.Left, r.Top, s);
r.left := r.right;
for i := 0 to item.SubItems.Count - 1 do
begin
if Sender.Column[i + 1].Width <> 0 then
begin
r.Right := r.Right + Sender.Column[i + 1].Width; s := item.subitems[i];
if Sender.Canvas.TextWidth(s) > Sender.Column[i + 1].Width then
s := Copy(s, 1, Sender.column[i + 1].Width div TextWidth('A')
- 3)
+ '...';
TextOut(r.Left, r.Top, s);
r.Left := r.Right;
end; end;
end;
end;end;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var R:TREct;
var i:integer;
begin
if Item.Index mod 2 = 0 then
ListView1.Canvas.Brush.color := clAqua
else
ListView1.Canvas.Brush.color := clWhite;
if cdsSelected in state then
begin
ListView1.Canvas.Brush.Color := clRed;
R := Item.DisplayRect(drBounds);
ListView1.Canvas.FillRect(R);
ListView1.Canvas.TextOut(R.Left + 1, R.Top + 1, Item.Caption);
For i:=0 to Item.SubItems.Count-1 do
begin
R.Left:=R.Left+ListView1.Columns[i].Width;
ListView1.Canvas.TextOut(R.Left+1,R.Top+1,Item.SubItems.Strings[i]);
DefaultDraw:= False;
end;
end;
end;
再次感谢!
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if odd(Item.Index) then
ListView1.Canvas.Brush.color := clAqua
else
ListView1.Canvas.Brush.color := clWhite;
ListView1.Canvas.FillRect(drBounds);
end;