我的一段例程,
慢慢看。
CTreeView::OnInitialUpdate();
//成员变量
m_imageState.Create( IDB_STATE, 13, 1, RGB(255,255,255) );//创建ImageList
GetTreeCtrl().SetImageList( &(m_imageState), TVSIL_STATE );//在TreeList中加入表示状态的ImageList。 HTREEITEM p_pItem,p_pItem1,p_pItem2,p_pItem3;
GetTreeCtrl().DeleteAllItems();
p_pItem=GetTreeCtrl().InsertItem("进程管理",NULL,NULL);
GetTreeCtrl().SetItemData(p_pItem,DEFMGM_TRANPROCALL);
GetTreeCtrl().SetItemImage(p_pItem,1,1);
//GetTreeCtrl().SetItemState( p_pItem, INDEXTOSTATEIMAGEMASK( 1),
// TVIS_STATEIMAGEMASK );
p_pItem1=GetTreeCtrl().InsertItem("通信进程管理",NULL,
NULL,p_pItem);
GetTreeCtrl().SetItemData(p_pItem1,DEFMGM_TRANSTATUS); p_pItem2=GetTreeCtrl().InsertItem("业务进程管理",NULL,
NULL,p_pItem);
GetTreeCtrl().SetItemData(p_pItem1,DEFMGM_TRANPROCMAN);
p_pItem3=GetTreeCtrl().InsertItem("本端通信进程状态",NULL,
NULL,p_pItem1);
GetTreeCtrl().SetItemData(p_pItem3,DEFMGM_TRANTranStatus);
p_pItem3=GetTreeCtrl().InsertItem("本端通信进程名",NULL,
NULL,p_pItem1);
GetTreeCtrl().SetItemData(p_pItem3,DEFMGM_TRANTranName); p_pItem3=GetTreeCtrl().InsertItem("本端结点号",NULL,
NULL,p_pItem1);
GetTreeCtrl().SetItemData(p_pItem3,DEFMGM_TRANNodeId);
p_pItem3=GetTreeCtrl().InsertItem("对端通信进程状态",NULL,
NULL,p_pItem1);
GetTreeCtrl().SetItemData(p_pItem3,DEFMGM_TRANOpsStatus); p_pItem3=GetTreeCtrl().InsertItem("本端模块ID",NULL,
NULL,p_pItem1);
GetTreeCtrl().SetItemData(p_pItem3,DEFMGM_TRANLocModId); p_pItem3=GetTreeCtrl().InsertItem("对端模块ID",NULL,
NULL,p_pItem1);
GetTreeCtrl().SetItemData(p_pItem3,DEFMGM_TRANOpsModId);
p_pItem3=GetTreeCtrl().InsertItem("是否关闭本端通信进程",NULL,
NULL,p_pItem1);
GetTreeCtrl().SetItemData(p_pItem3,DEFMGM_TRANClsTrans);
慢慢看。
CTreeView::OnInitialUpdate();
//成员变量
m_imageState.Create( IDB_STATE, 13, 1, RGB(255,255,255) );//创建ImageList
GetTreeCtrl().SetImageList( &(m_imageState), TVSIL_STATE );//在TreeList中加入表示状态的ImageList。 HTREEITEM p_pItem,p_pItem1,p_pItem2,p_pItem3;
GetTreeCtrl().DeleteAllItems();
p_pItem=GetTreeCtrl().InsertItem("进程管理",NULL,NULL);
GetTreeCtrl().SetItemData(p_pItem,DEFMGM_TRANPROCALL);
GetTreeCtrl().SetItemImage(p_pItem,1,1);
//GetTreeCtrl().SetItemState( p_pItem, INDEXTOSTATEIMAGEMASK( 1),
// TVIS_STATEIMAGEMASK );
p_pItem1=GetTreeCtrl().InsertItem("通信进程管理",NULL,
NULL,p_pItem);
GetTreeCtrl().SetItemData(p_pItem1,DEFMGM_TRANSTATUS); p_pItem2=GetTreeCtrl().InsertItem("业务进程管理",NULL,
NULL,p_pItem);
GetTreeCtrl().SetItemData(p_pItem1,DEFMGM_TRANPROCMAN);
p_pItem3=GetTreeCtrl().InsertItem("本端通信进程状态",NULL,
NULL,p_pItem1);
GetTreeCtrl().SetItemData(p_pItem3,DEFMGM_TRANTranStatus);
p_pItem3=GetTreeCtrl().InsertItem("本端通信进程名",NULL,
NULL,p_pItem1);
GetTreeCtrl().SetItemData(p_pItem3,DEFMGM_TRANTranName); p_pItem3=GetTreeCtrl().InsertItem("本端结点号",NULL,
NULL,p_pItem1);
GetTreeCtrl().SetItemData(p_pItem3,DEFMGM_TRANNodeId);
p_pItem3=GetTreeCtrl().InsertItem("对端通信进程状态",NULL,
NULL,p_pItem1);
GetTreeCtrl().SetItemData(p_pItem3,DEFMGM_TRANOpsStatus); p_pItem3=GetTreeCtrl().InsertItem("本端模块ID",NULL,
NULL,p_pItem1);
GetTreeCtrl().SetItemData(p_pItem3,DEFMGM_TRANLocModId); p_pItem3=GetTreeCtrl().InsertItem("对端模块ID",NULL,
NULL,p_pItem1);
GetTreeCtrl().SetItemData(p_pItem3,DEFMGM_TRANOpsModId);
p_pItem3=GetTreeCtrl().InsertItem("是否关闭本端通信进程",NULL,
NULL,p_pItem1);
GetTreeCtrl().SetItemData(p_pItem3,DEFMGM_TRANClsTrans);
解决方案 »
- 用IdFTP连接FTP时候 出现的问题
- 不知道哪位仁兄能给我推荐一个比较好的程序换皮肤的控件
- 关于如何用installshiedl进行MSDE及应用程序的发布?
- 有谁用过Dev的Print System,请进来看看!
- 如何将一全局字符型变量的值打印到报表上?
- 怎么在网页中调用窗体??大散分
- 有关COM,求教
- 如何用TFileStream变量来读取文本文件里的浮点数据?
- 各位高手,我想问一个小问题,怎样作一个在网上可以查询的网页式的数据库程序,分数没问题,我有的是,关注有分,不够再加!!
- delphi 窗体风格 不一致 变来变去的!!
- 还有怎么原窗口最大化后窗口上的一些组件跟位置按比例调节呢
- 关于报表的问题__急救!!!
不知道你是什么意思?要实现什么功能呀?
我想你可以在存入的时候把各个层的leve属性保存到同一个字段中。
然后在读出的时候再做处理就好了。
从表中读取将DisPlayString读取出来显示在TreeView上的过程为:
{显示依附于所有根节点的所有子节点过程:
参数说明:1.Tree 要显示的目标树组件,类型为TTreeView
2.NodeDataSet 表示存放节点的表,类型为TDataSet
3.NodeIDField 表示节点表中存放节点ID号的字段名,类型为TString
4.ParentIDField 表示节点表中存放父节点ID号的字段名,类型为TString
5.DisplayField 表示节点表中存放要显示在树组件中的文本的字段名,类型为TString}
procedure DisplayAllSubNodes(Tree:TTreeView;NodeDataName,dbsName:String;NodeIDField,
ParentIDField,DisplayField:String;ParentNode:TTreeNode);
var
CurParentNode,OldParentNode:TTreeNode;
CurParentID:Integer;
ChildNum:Integer;
iNode:TTreeNode;
iData:^Integer;
tmpQry:TQuery;
begin
tmpQry:=TQuery.Create(nil);
with tmpQry do
try
DatabaseName:=dbsName;
Sql.Add('Select * from '+NodeDataName+' Order by '+NodeIdField);
Open;
CurParentNode:=ParentNode;
Repeat
CurParentID:=Integer(CurParentNode.Data^);
ChildNum:=0;
with tmpQry do begin
First;
while not Eof do
begin
if FieldByName(ParentIDField).AsInteger=CurParentID then begin
iNode:=Tree.Items.AddChild(CurParentNode,FieldByName(DisplayField).AsString);
New(iData);
iData^:=FieldByName(NodeIDField).AsInteger;
iNode.Data:=iData;
Inc(ChildNum,1);
end;
Next;
end;
end;
OldParentNode:=CurParentNode;
if ChildNum>0 then begin //如果当前父节点有子节点则递归执行DisplayAllSubRoad
CurParentNode:=CurParentNode.GetFirstChild;
DisplayAllSubNodes(Tree,NodeDataName,dbsName,NodeIDField,ParentIDField,DisplayField,CurParentNode);
end;
CurParentNode:=OldParentNode;
CurParentNode:=CurParentNode.GetNextSibling;
until CurParentNode=nil;
finally
Free;
end;
end;能解决你的问题吗?如能请给我加分吧!