delphi TreeView-在运行时创建节点
有谁能告诉我如何做到以下几点:delphi TreeView-在运行时创建节点,delphi,treeview,Delphi,Treeview,有谁能告诉我如何做到以下几点: 创建节点 启用/禁用单个节点 我想知道如何在应用程序运行时执行上述操作,例如在表单的OnCreate事件中。添加节点: 函数FindRootNode(acoption:String;ATreeView:TTreeView):TTreeNode; var-LCount:整数; 开始 结果:=无; l计数:=0; 而(LCount0) 添加多个节点 如果要使用 循环或其他你必须使用的东西 在进行更改之前开始更新 到树上看。当所有更改都被删除时 完成后,调用EndU
- 创建节点
- 启用/禁用单个节点
函数FindRootNode(acoption:String;ATreeView:TTreeView):TTreeNode;
var-LCount:整数;
开始
结果:=无;
l计数:=0;
而(LCount
(另见)
取消对节点的标记
据我所知,没有办法禁用TreeNode。您唯一能做的就是截取beforeSelect事件并在那里取消选择。不太好。@Remus,这里有一个添加节点的简单示例 添加根节点(级别0) 添加子节点(级别>0) 添加多个节点 如果要使用 循环或其他你必须使用的东西 在进行更改之前开始更新 到树上看。当所有更改都被删除时 完成后,调用EndUpdate以显示 屏幕上的变化。开始更新和 EndUpdate防止过度重画 并在需要时加快处理时间 添加、删除或插入节点
关于禁用节点,不存在任何类似的属性。您可以在OnChange事件处理程序中禁用选择。这是TTreeView的事件
procedure TForm.OnChanging(Sender: TObject; Node: TTreeNode; var AllowChange: Boolean);
begin
AllowChange := CheckSomePropertiesOfNode(Node);
end;
TCustomViewItem中存在一个“可选”属性,Item属性从中派生。这可能表现为一种禁用机制。我知道Selective是如何工作的,但我想在MainForm.OnCreate中执行此操作event@Mark:此“TCustomViewItem”在Delphi的哪个版本中?我找不到它@雷莫斯:这是否意味着你在试图避开事件处理程序。否则,您可以在表单的OnCreate中填充一个“禁用节点”列表或数组,并在树视图的onChange和OnCustomDrawItem上对照这些项进行检查。OTOH Shell Controls>ver有一个TVIS_EX_DISABLED标志。6.00(Vista?),但它真正做的只是用禁用的颜色绘制文本,而不是在单击时绘制选定的外观。事实上,该项目已被选中。@Sertac:我正在查看Delphi 7帮助文件。
Var
Node : TTreeNode;
begin
//function TTreeNodes.Add(Sibling: TTreeNode; const S: string): TTreeNode;
Node:=TreeView1.Items.Add(nil,'My Root Node') ;
Node.ImageIndex:=0;//now you can change any property of the node
end;
//in this case we add a child node in the current selected node.
Var
Node : TTreeNode;
begin
if TreeView1.Selected= nil then exit;
Node:=TreeView1.Items.AddChild(TreeView1.Selected,'My Child Node') ;
Node.ImageIndex:=0;//now you can change any property of the node
end;
Var
Node : TTreeNode;
i : Integer;
begin
TreeView1.Items.BeginUpdate;
try
for i:=1 to 100 do
begin
Node:=TreeView1.Items.Add(nil,'My Root Node '+IntToStr(i)) ;
Node.ImageIndex:=0;
end;
finally
TreeView1.Items.EndUpdate;
end;
end;
procedure TForm.OnChanging(Sender: TObject; Node: TTreeNode; var AllowChange: Boolean);
begin
AllowChange := CheckSomePropertiesOfNode(Node);
end;