to : cybercake(数字蛋糕) 能提示一下怎麼做嗎,如果能在標准TreeView中實現,我想盡量不用第三方控件。
呵呵,不知是不是这种效果!procedure TForm1.FormCreate(Sender: TObject); var i: Integer; Node: TTreeNode; begin With TreeView1 do begin Node := Items.AddChild(nil,'test'); for i:=0 to 9 do Items.AddChild(Node,'Node'+IntToStr(i)); end; end;procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean); var r: TRect; oldColor: TColor; begin r := Node.DisplayRect(true); OffsetRect(r,Sender.Canvas.TextWidth(Node.Text)+10,0); oldColor := Sender.Canvas.Font.Color; if (cdsSelected in State) then Sender.Canvas.Font.Color := clWhite else Sender.Canvas.Font.Color := clBlue; Sender.Canvas.TextRect(r,r.Left,r.Top,Node.Text); end;
改进一步 procedure TForm1.FormCreate(Sender: TObject); var i: Integer; Node: TTreeNode; begin With TreeView1 do begin Node := Items.AddChild(nil,'test'); for i:=0 to 9 do Items.AddChild(Node,'Node'+IntToStr(i)); end; end;procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean); var r: TRect; oldColor: TColor; begin r := Node.DisplayRect(true); OffsetRect(r,Sender.Canvas.TextWidth(Node.Text),0); r.Right := r.Right + 10; oldColor := Sender.Canvas.Font.Color; if (cdsSelected in State) then Sender.Canvas.Font.Color := clWhite else Sender.Canvas.Font.Color := clBlue; Sender.Canvas.TextRect(r,r.Left+10,r.Top,Node.Text); end;
myy() : 先謝了,我下午再去試試看
var
i: Integer;
Node: TTreeNode;
begin
With TreeView1 do
begin
Node := Items.AddChild(nil,'test');
for i:=0 to 9 do
Items.AddChild(Node,'Node'+IntToStr(i));
end;
end;procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
var
r: TRect;
oldColor: TColor;
begin
r := Node.DisplayRect(true);
OffsetRect(r,Sender.Canvas.TextWidth(Node.Text)+10,0);
oldColor := Sender.Canvas.Font.Color;
if (cdsSelected in State) then
Sender.Canvas.Font.Color := clWhite
else
Sender.Canvas.Font.Color := clBlue;
Sender.Canvas.TextRect(r,r.Left,r.Top,Node.Text);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
Node: TTreeNode;
begin
With TreeView1 do
begin
Node := Items.AddChild(nil,'test');
for i:=0 to 9 do
Items.AddChild(Node,'Node'+IntToStr(i));
end;
end;procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
var
r: TRect;
oldColor: TColor;
begin
r := Node.DisplayRect(true);
OffsetRect(r,Sender.Canvas.TextWidth(Node.Text),0);
r.Right := r.Right + 10;
oldColor := Sender.Canvas.Font.Color;
if (cdsSelected in State) then
Sender.Canvas.Font.Color := clWhite
else
Sender.Canvas.Font.Color := clBlue;
Sender.Canvas.TextRect(r,r.Left+10,r.Top,Node.Text);
end;