在uses中加types;
procedure TForm1.TreeView1CustomDraw(Sender: TCustomTreeView;
const ARect: TRect; var DefaultDraw: Boolean);
var
btop, bLeft: Integer;
rect: Trect;
x, y, h: integer;
begin
x := GetScrollPos(sender.Handle, SB_HORZ);
y := GetScrollPos(sender.Handle, SB_VERT);
h := 17;
rect := sender.ClientRect;
rect.Bottom := rect.Top + sender.Height;
btop := rect.Bottom - Image1.Picture.Bitmap.Height - y * h;
bleft := rect.Right - Image1.Picture.Bitmap.Width - x;
sender.Canvas.FillRect(Arect);
rect := Types.rect(bleft - 1, btop - 1, bleft + Image1.Picture.Bitmap.Width + 1, bTop + Image1.Picture.Bitmap.Height + 1);
if IntersectRect(rect, rect, arect) then
BitBlt(sender.Canvas.Handle, Arect.Left, Arect.Top, Arect.Right - Arect.Left ,
Arect.Bottom - Arect.top , Image1.Picture.Bitmap.Canvas.Handle, Arect.Left - bleft, Arect.Top - btop, SRCCOPY);
DefaultDraw := true;
end;
解决图片闪烁,移动:
procedure TForm1.TreeView1Expanding(Sender: TObject; Node: TTreeNode;
var AllowExpansion: Boolean);
begin
treeview1.Invalidate;
end;
procedure TForm1.TreeView1Collapsing(Sender: TObject; Node: TTreeNode;
var AllowCollapse: Boolean);
begin
treeview1.Invalidate;
end;
还有2种方法给treeview添加背景图片:
在formcreate事件中写:treeview.brush.bitmap:=image.picture.bitmap;
在treeview的oncustomDraw事件中写:
with treeview do
begin
Canvas.Brush.bitmap:=image.picture.bitmap;
canvas.FillRect(ARect);
end;