Virtual TreeView是一个功能强大的delphi树型组件,从它带的例子就能看出来。下面我把我做的如下图所示的树型的代码贴出来,供大家参考:
源码:
-
-
-
unitUnit4;
-
-
interface
-
-
uses
- Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,
- Dialogs,VirtualTrees,ImgList,Menus,AdvMenus;
-
-
type
-
-
-
TMyRec=record
-
Text:string;
-
ImageIndex:Integer;
-
Id:string;
-
CheckType:TCheckType;
-
CheckState:TCheckState;
-
end;
-
-
- PMyRec=^TMyRec;
-
-
TForm4=class(TForm)
- vsttree:TVirtualStringTree;
- il1:TImageList;
- advpmn1:TAdvPopupMenu;
- N1:TMenuItem;
-
procedureFormCreate(Sender:TObject);
-
procedurevsttreeGetText(Sender:TBaseVirtualTree;Node:PVirtualNode;
-
Column:TColumnIndex;TextType:TVSTTextType;varCellText:WideString);
-
procedurevsttreeInitNode(Sender:TBaseVirtualTree;ParentNode,
-
Node:PVirtualNode;varInitialStates:TVirtualNodeInitStates);
-
procedurevsttreeGetImageIndex(Sender:TBaseVirtualTree;Node:PVirtualNode;
-
Kind:TVTImageKind;Column:TColumnIndex;varGhosted:Boolean;
-
varImageIndex:Integer);
-
procedureN1Click(Sender:TObject);
-
procedurevsttreeFreeNode(Sender:TBaseVirtualTree;Node:PVirtualNode);
-
procedurevsttreeGetPopupMenu(Sender:TBaseVirtualTree;Node:PVirtualNode;
-
Column:TColumnIndex;constP:TPoint;varAskParent:Boolean;
-
varPopupMenu:TPopupMenu);
-
private
-
-
public
-
-
end;
-
-
var
- Form4:TForm4;
-
-
implementation
-
-
{$R*.dfm}
-
-
procedureTForm4.FormCreate(Sender:TObject);
-
var
- RootNode,ChileNode:PVirtualNode;
- Data:PMyRec;
-
begin
-
vsttree.NodeDataSize:=SizeOf(TMyRec);
-
vsttree.Images:=il1;
-
-
RootNode:=vsttree.AddChild(nil);
-
Data:=vsttree.GetNodeData(RootNode);
-
Data^.Text:='根结点';
-
Data^.Id:='RootID';
-
Data^.ImageIndex:=0;
- Data^.CheckType:=ctTriStateCheckBox;
- Data^.CheckState:=csUncheckedNormal;
-
-
-
ChileNode:=vsttree.AddChild(RootNode);
-
Data:=vsttree.GetNodeData(ChileNode);
-
Data^.Text:='子结点1';
-
Data^.Id:='ChildId1';
-
Data^.ImageIndex:=1;
- Data^.CheckType:=ctTriStateCheckBox;
- Data^.CheckState:=csUncheckedNormal;
-
-
ChileNode:=vsttree.AddChild(RootNode);
-
Data:=vsttree.GetNodeData(ChileNode);
-
Data^.Text:='子结点2';
-
Data^.Id:='ChildId2';
-
Data^.ImageIndex:=1;
- Data^.CheckType:=ctTriStateCheckBox;
- Data^.CheckState:=csUncheckedNormal;
-
-
vsttree.Expanded[RootNode]:=True;
-
-
-
-
-
end;
-
procedureTForm4.N1Click(Sender:TObject);
-
var
- CurrentNode:PVirtualNode;
- Data:PMyRec;
-
Checked:string;
-
begin
-
-
-
CurrentNode:=vsttree.FocusedNode;
-
ifAssigned(CurrentNode)then
-
begin
-
Data:=vsttree.GetNodeData(CurrentNode);
-
ifCurrentNode.CheckState=csCheckedNormalthen
-
begin
-
Checked:='是';
-
end
-
else
-
begin
-
Checked:='否';
-
end;
-
ShowMessage('当前结点:'+#13
-
+'Id='+Data^.Id+#13
-
+'Text='+Data^.Text+#13
-
+'是否选中='+Checked);
-
end;
-
end;
-
-
procedureTForm4.vsttreeFreeNode(Sender:TBaseVirtualTree;Node:PVirtualNode);
-
var
- Data:PMyRec;
-
begin
-
Data:=Sender.GetNodeData(Node);
- Finalize(Data^);
-
end;
-
-
procedureTForm4.vsttreeGetImageIndex(Sender:TBaseVirtualTree;
- Node:PVirtualNode;Kind:TVTImageKind;Column:TColumnIndex;
-
varGhosted:Boolean;varImageIndex:Integer);
-
var
- Data:PMyRec;
-
begin
-
Data:=Sender.GetNodeData(Node);
- ImageIndex:=Data^.ImageIndex;
-
end;
-
-
procedureTForm4.vsttreeGetPopupMenu(Sender:TBaseVirtualTree;
-
Node:PVirtualNode;Column:TColumnIndex;constP:TPoint;
-
varAskParent:Boolean;varPopupMenu:TPopupMenu);
-
begin
-
ifAssigned(Node)then
-
begin
- PopupMenu:=advpmn1;
-
end
-
else
-
begin
-
PopupMenu:=nil;
-
end;
-
end;
-
-
procedureTForm4.vsttreeGetText(Sender:TBaseVirtualTree;Node:PVirtualNode;
-
Column:TColumnIndex;TextType:TVSTTextType;varCellText:WideString);
-
var
- Data:PMyRec;
-
begin
-
Data:=Sender.GetNodeData(Node);
- CellText:=Data^.Text;
-
end;
-
-
procedureTForm4.vsttreeInitNode(Sender:TBaseVirtualTree;ParentNode,
-
Node:PVirtualNode;varInitialStates:TVirtualNodeInitStates);
-
var
- Data:PMyRec;
-
begin
-
Data:=Sender.GetNodeData(Node);
-
Node.CheckType:=Data^.CheckType;
-
Node.CheckState:=Data^.CheckState;
-
end;
-
-
end.
分享到:
相关推荐
Virtual TreeView功能强大,但似乎不是那么容易用,我看了一下英文文档,写了这么一个例子。 例子环境: delphi:2007 Virtual TreeView:4.5.2
Virtual TreeView最新示例
一个完整的Virtual TreeView的例子,很好的内容,想用Virtual TreeView的必看
这是对Virtual TreeView使用的最新实例,主要添加了复选框遍历功能,解决了很多的问题。需要安装的组件有:virtual treeview;TMS Component Pack v4.6.0.7 (完整源码)
VirtualTreeview 使用数据库的例子!
Virtual Treeview是为软件开发人员设计的,它代表了用高级Delphi树控件从头构建的树视图控件。根据它的制造商,该工具的树管理范例与其他控件不同。 数据是通过事件(或者通过覆盖数据从应用程序中提取的),因为...
VirtualTreeView自动显示数据库数据到树,递归查找、遍历,Delphi10.4.2编译通过
virtualtreeview 的使用例子,好用
最近在大富翁论坛上,许多朋友提出如何用treeview从数据库中动态装载信息,以及如何输入信息来定位treeview上的节点。针对这两个问题,我做个一个小巧但功能全面的...要查看源代码,请下载VirtualTreeview4.3.1控件!
也可以退出当前模块,使用一个空 while 循环,示例如下: void CH(double X1) { bool bl=true; while (bl) { if (X1==1.0) { MessageBox.Show("YES"); break; } MessageBox.Show("no"); bl=false; } } 输出格式 ...