TREEVIEW先显示一个组织结构表如图,再在组织结构的末端部门下显该部门的员工名数据表,来实现末端部门显示员工名,如:工程部A下有成飞飞,张明明等,人事部下面有张三、李四等,我想,如果能取得有多少末端,和每个末端的位置,基本能解决问题,不知应怎么做为好?
显示组织结构是循环一个表: AddClass(0,nil);
procedure TForm1.AddClass(AId: integer;FatherNode:TTreeNode);
var
QryTmp:TADOQuery;
myNode:TTreeNode;
myLabel:TLabel;
NewNode: TCPCCheckBoxNode;
begin
QryTmp:=TADOQuery.Create(self);
QryTmp.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+extractfilepath(application.ExeName)+'test.mdb;Persist Security Info=False';
QryTmp.SQL.Add('select * from tb1');
QryTmp.SQL.Add('where FatherId='+inttostr(AId));
QryTmp.Open;
while not QryTmp.Eof do
begin
myNode:=Treeview1.Items.AddChild(FatherNode,QryTmp.fieldbyname('CName').AsString);
//创建标签,caption存放各分支的AutoId表识
myLabel:=TLabel.Create(self);
myLabel.Visible:=false;
myLabel.Caption:=QryTmp.fieldbyname('AutoId').AsString; myNode.Data:=myLabel;
AddClass(QryTmp.fieldbyname('AutoId').AsInteger,myNode); //递归调用过程
//NewNode:=TreeView1.AddCheckBoxNode(FatherNode,'5727');
QryTmp.Next;
end;
QryTmp.Free;
end;如图:http://bbs.2ccc.com/attachments/2006/xbbtzhao_200662382040.jpg
显示组织结构是循环一个表: AddClass(0,nil);
procedure TForm1.AddClass(AId: integer;FatherNode:TTreeNode);
var
QryTmp:TADOQuery;
myNode:TTreeNode;
myLabel:TLabel;
NewNode: TCPCCheckBoxNode;
begin
QryTmp:=TADOQuery.Create(self);
QryTmp.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+extractfilepath(application.ExeName)+'test.mdb;Persist Security Info=False';
QryTmp.SQL.Add('select * from tb1');
QryTmp.SQL.Add('where FatherId='+inttostr(AId));
QryTmp.Open;
while not QryTmp.Eof do
begin
myNode:=Treeview1.Items.AddChild(FatherNode,QryTmp.fieldbyname('CName').AsString);
//创建标签,caption存放各分支的AutoId表识
myLabel:=TLabel.Create(self);
myLabel.Visible:=false;
myLabel.Caption:=QryTmp.fieldbyname('AutoId').AsString; myNode.Data:=myLabel;
AddClass(QryTmp.fieldbyname('AutoId').AsInteger,myNode); //递归调用过程
//NewNode:=TreeView1.AddCheckBoxNode(FatherNode,'5727');
QryTmp.Next;
end;
QryTmp.Free;
end;如图:http://bbs.2ccc.com/attachments/2006/xbbtzhao_200662382040.jpg
解决方案 »
- DELPHI支持ActiveMQ吗
- 出现 eaccessviolation with message ,出错的地方是 xxx.free;怎么解决?
- 如何获取字符串的长度
- 如何关掉cmd窗口
- 请问ListBox添加内容后该如何使它自动向下卷轴?
- 如何去掉系统窗口的边框
- RichEdit中的文本拖曳复制的问题。
- delphi 获取webbrowser编辑框源代码问题
- 怎样把www虚拟目录下的一个文件(例如127.0.0.1/image/1.gif)寸到本地硬盘上(up有分)
- 如何输入和显示音标?
- Hwnd和Handle的区别
- TreeView生成树形结构,数据库结构比较特别,本人是通过递归画树的方式,画TreeView树,但是不成功,请各位高手不吝赐教;
树图结构
ID Name ParentID
1 工程部 0
3 张x 1
AddClass(QryTmp.fieldbyname('AutoId').AsInteger,myNode); //递归调用过程
procedure TForm1.AddClass(AId: integer;FatherNode:TTreeNode);
过程写对了吗?
2、通过遍历模式查找即可如果不是多级部门,直接通过遍历一级即可for I:=0 to TreeView.Items.Count-1 do
begin
P(TreeView.Items.Item[I].Data).
//具体看Delphi关于Data的例子即可
end;
2、当你添加了员工后,最后一级实际上多了子级这个对吧。
完全可以通过Data控制啊,这个时候主要是为了控制没有员工的最后一级和员工区分,指针变量里面加一个项目就得了,具体看DATA帮助
The following code defines a record type of TMyRec and a record pointer type of PMyRec.type
PMyRec = ^TMyRec;
TMyRec = record
FName: string;
LName: string;
end;Assuming these types are used, the following code adds a node to TreeView1 as the last sibling of a specified node. A TMyRec record is associated with the added item. The FName and LName fields are obtained from edit boxes Edit1 and Edit2. The Index parameter is obtained from edit box Edit3. The item is added only if the Index is a valid value.procedure TForm1.Button1Click(Sender: TObject);var
MyRecPtr: PMyRec;
TreeViewIndex: LongInt;
begin
New(MyRecPtr);
MyRecPtr^.FName := Edit1.Text;
MyRecPtr^.LName := Edit2.Text;
TreeViewIndex := StrToInt(Edit3.Text);
with TreeView1 do
begin
if Items.Count = 0 then
Items.AddObject(nil, 'Item' + IntToStr(TreeViewIndex), MyRecPtr)
elseif (TreeViewIndex < Items.Count) and (TreeViewIndex >= 0) then
Items.AddObject(Items[TreeViewIndex], 'Item' + IntToStr(TreeViewIndex), MyRecPtr); end;
end;After an item containing a TMyRec record has been added, the following code retrieves the FName and LName values associated with the item and displays the values in a label.procedure TForm1.Button2Click(Sender: TObject);begin
Label1.Caption := PMyRec(TreeView1.Selected.Data)^.FName + ' ' +
PMyRec(TreeView1.Selected.Data)^.LName;
end;