用ExpressQuantumGrid dxDbTreeList
www.51delphi.com可下载
www.51delphi.com可下载
解决方案 »
- 两个输入参数,想得到三个返回值,这样的函数该怎么写?
- Delphi调用VC编译的DLL
- 使用ADO控件时,怎样判断数据已经被修改?
- 设置和读取格子里面的内容,方便得选择某一行,用什么控件比较好
- 某文件存在于电脑硬盘里,delphi程序运行时如何打开此文件?
- 关于dbgrid的问题
- ★★如何计算π的值并使其不受数据类型精度的限制?(请给出具体的程序源码)
- DBGrid的什么事件触发使得其中一行记录中每个字段值写到相应的文本框?
- 请告诉我那可以下载到有颜色的BUTTON,最好单个文件,在线给分
- 生成按钮,单击事件释放问题 ,求解
- 我要写一个软件,大家提建议吧
- 请教有没有判断日期格式是否正确的函数?
DBgird和Treeview
嘻嘻,看一看:)
procedure TForm8.LoadTreeView;
var
strsql,tid:string;
begin
try DataModule3.ADOTable3.open;
DataModule3.ADOTable3.Locate('DTname',RzComboBox1.Text,[lopartialkey]);
tid:=inttostr(DataModule3.ADOTable3.FieldByName('id').value);
strsql:='select * from T where TypeID='+tid;
DQ.Active :=false;
DQ.SQL.Clear ;
DQ.SQL.Add(strsql);
DQ.Active :=true;
DQ.Filtered :=true;
DQ.Filter := 'Parent=0';
U_DiGui(0,seltv.TopItem );//从当前0层开始递归建树
except
showmessage('字典里没有数据!');
end;
end;
procedure TForm8.U_DiGui(parentID:Cardinal;ParentNode:TTreeNode);
var
tmpTBData:array of TableData;
i,j:integer;
tmpNode:TTreeNode;begin
j:=DQ.RecordCount;
setlength(tmpTBData,j);//保存递规上一层结点值
for i:=0 to j-1 do begin
tmpTBData[i].ID := Cardinal(DQ.fieldbyname('ID').value);
tmpTBData[i].Name := DQ.fieldbyname('Name').value;
tmpTBData[i].ParentID := Cardinal(DQ.fieldbyname('Parent').value);
DQ.Next;
end;
for i:=0 to j-1 do begin //递规调用建立所有结点
tmpNode:=seltv.Items.AddChild(ParentNode,tmpTBData[i].Name);
// tmpNode.ImageIndex:=2;
new(pData);
pData^.ID:=tmpTBData[i].ID;
tmpNode.Data:=pData;
DQ.Filter := 'Parent=' + IntToStr(Integer(tmpTBData[i].ID));
if DQ.RecordCount >0 then begin
U_DiGui(tmpTBData[i].ID,tmpNode );
end;
end;
end;
procedure TForm8.LoadTreeView;
var
strsql,tid:string;
begin
try DataModule3.ADOTable3.open;
DataModule3.ADOTable3.Locate('DTname',RzComboBox1.Text,[lopartialkey]);
tid:=inttostr(DataModule3.ADOTable3.FieldByName('id').value);
strsql:='select * from T where TypeID='+tid;
DQ.Active :=false;
DQ.SQL.Clear ;
DQ.SQL.Add(strsql);
DQ.Active :=true;
DQ.Filtered :=true;
DQ.Filter := 'Parent=0';
U_DiGui(0,seltv.TopItem );//从当前0层开始递归建树
except
showmessage('字典里没有数据!');
end;
end;
procedure TForm8.U_DiGui(parentID:Cardinal;ParentNode:TTreeNode);
var
tmpTBData:array of TableData;
i,j:integer;
tmpNode:TTreeNode;begin
j:=DQ.RecordCount;
setlength(tmpTBData,j);//保存递规上一层结点值
for i:=0 to j-1 do begin
tmpTBData[i].ID := Cardinal(DQ.fieldbyname('ID').value);
tmpTBData[i].Name := DQ.fieldbyname('Name').value;
tmpTBData[i].ParentID := Cardinal(DQ.fieldbyname('Parent').value);
DQ.Next;
end;
for i:=0 to j-1 do begin //递规调用建立所有结点
tmpNode:=seltv.Items.AddChild(ParentNode,tmpTBData[i].Name);
// tmpNode.ImageIndex:=2;
new(pData);
pData^.ID:=tmpTBData[i].ID;
tmpNode.Data:=pData;
DQ.Filter := 'Parent=' + IntToStr(Integer(tmpTBData[i].ID));
if DQ.RecordCount >0 then begin
U_DiGui(tmpTBData[i].ID,tmpNode );
end;
end;
end;