提供给你参考:
http://www.csdn.net/expert/topic/688/688364.xml?temp=4.366702E-02
http://www.csdn.net/expert/topic/688/688364.xml?temp=4.366702E-02
解决方案 »
- 哪位能发下Forms.pas这个文件给我,谢谢了~
- 如何向mousemove发送消息
- DELPHI7.0如何与仿问ACCESS数据库
- 有在dephi中用过OLEVARIANT类型的吗?
- 关于Delphi6的ListView的问题,难道是bug?
- 急急急!我的程序用TMemo对象显示信息,为何在WindowsXP下能正常显示,而在WindowsMe下TMemo显示的底色全是黑的,当用鼠标选一个区域时才
- 如何选择Listbox的某一项数据,并使它亮白显示?
- 一个简单的问题
- 请问CreateParams有什么用?一定给分!
- 求救!!!!!!!!!!!!
- 十万火急(100分酬谢):up
- treeview
procedure TForm5.LoadTreeView;
var
strsql:string;
begin
try
strsql:='select * from T where NodeType="bs"';
DQ.Active :=false;
DQ.SQL.Clear ;
DQ.SQL.Add(strsql);
DQ.Active :=true;
DQ.Filtered :=true;
DQ.Filter := 'Parent=0';
U_DiGui(0,RzTreeView1.TopItem );//从当前0层开始递归建树
except
showmessage('字典里没有数据!');
end;
end;
procedure TForm5.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:=RzTreeView1.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 TForm5.FormShow(Sender: TObject);
begin
LoadTreeView;
rzTreeView1.TopItem.Expanded:=true;
end;
mFieldNameParent: string; //父节点标识字段名
mFieldNameTreeText: string; //节点文本字段名
mFieldNameTreeId: string; //节点标识字段名
mTreeView: TTreeView; mTreeNode: TTreeNode;
mParentText: string): Boolean;
var
vTreeNode: TTreeNode;
vFieldValues: Variant;
vFieldNames: string;
begin
Result := False;
if not Assigned(mDataSet) then Exit;
if not Assigned(mTreeView) then Exit;
if not mDataSet.Active then Exit;
vFieldNames := Format('%s;%s;%s',
[mFieldNameParent, mFieldNameTreeText, mFieldNameTreeId]);
mDataSet.Filtered := False;
mDataSet.Filter := Format('%s=%s', [mFieldNameParent, QuotedStr(mParentText)]);
mDataSet.Filtered := True;
if mDataSet.RecordCount = 0 then Exit;
mDataSet.First;
while not mDataSet.Eof do begin
vTreeNode := mTreeView.Items.AddChild(mTreeNode,
mDataSet.FieldByName(mFieldNameTreeText).AsString);
vFieldValues := mDataSet[vFieldNames];
DataSetToTreeNode(mDataSet, mFieldNameParent, mFieldNameTreeText,
mFieldNameTreeId, mTreeView, vTreeNode,
mDataSet.FieldByName(mFieldNameTreeID).AsString);
///////Begin 恢复位置
mDataSet.Filtered := False;
mDataSet.Filter := Format('%s=%s', [mFieldNameParent, QuotedStr(mParentText)]);
mDataSet.Filtered := True;
mDataSet.Locate(vFieldNames, vFieldValues, []);
///////End 恢复位置
mDataSet.Next;
end;
Result := True;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
TreeView1.Items.Clear;
DataSetToTreeNode(Table1, 'UpperTreeId', 'TreeName', 'TreeId',
TreeView1, nil, 'NULL');(*//你用此调试
DataSetToTreeNode(Table1, 'parent_id', 'id', 'id', TreeView1, nil, 'NULL');
//*)
end;
http://kingron.myetang.com/zsfunc19.htm