如何更改treenode矩形尺寸?
问题描述:
我想我的树视图显示为folows。 如何更改treenode矩形尺寸?
这是我正在使用的代码。
procedure TForm1.FormShow(Sender: TObject);
begin
TreeView1.FullExpand
end;
procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
const
_Right = 100;
_Left = 50;
var
R : TRect;
begin
if Node.Level = 0 then
begin
R := Node.DisplayRect(true);
R.Right := R.Right + _Right;
R.Left := R.Left + _Left;
Sender.Canvas.Brush.Color := clRed;
Sender.Canvas.FillRect(R);
end;
end;
的问题是,我可以延长R.right但如果在OnAdvancedCustomDrawItem
事件进行绘制,不能扩展R.left ...
答
,也有更多的选择。
这确实对我来说(过滤掉cdPostPaint阶段):
procedure TForm1.TreeView1AdvancedCustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage;
var PaintImages, DefaultDraw: Boolean);
const
_Right = 100;
_Left = 50;
var
R : TRect;
begin
if (Node.Level = 0) and (stage = cdPostPaint) then
begin
R := Node.DisplayRect(true);
R.Right := R.Right + 2;
Sender.Canvas.FillRect(R); // Just clear default text area
R.Right := R.Right + _Right;
R.Left := R.Left + _Left;
Sender.Canvas.Brush.Color := clRed;
Sender.Canvas.FillRect(R);
{- Make sure writing text with transparent background }
SetBkMode(Sender.Canvas.Handle, TRANSPARENT);
Sender.Canvas.TextOut(R.Left,R.Top,Node.Text);
PaintImages := true;
DefaultDraw := false;
end;
end;
你是说你要缩进的节点字幕(但只有字幕)? – TLama 2014-09-29 11:10:24
取决于你想要达到的目标,你可能会在FillRect或DefaultDraw:= false之后设置Sender.Canvas.Brush.Color:= clWhite;并自己绘制任何东西。 – bummi 2014-09-29 11:12:38
是的,我想缩进节点标题 – azad 2014-09-29 11:15:45