请教有关TREEVIEW的结点DATA属性的用法 如题,最好能详细点,在TREEVIEW里有很多结点,怎么对每个结点指定一数据库中指定的的个ID值. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 procedure TfrmAmmeter.LoadTree(Pid: string);const SQL = 'SELECT * from 规约明细表 where pid=%s and atype=%s'; procedure BuildTree(tmpNode: TTreeNode; Pid, aid: string); var adoDataSet: TADODataSet; Node: TTreeNode; Data: PCommand; begin adoDataSet := TADODataSet.Create(self); adoDataSet.Connection := DM.adoConnection; adoDataSet.CommandText := format(SQL, [Pid, aid]); adoDataSet.Open; adoDataSet.First; while not adoDataSet.Eof do begin new(Data); Data.cid := adoDataSet.Fields[0].AsInteger; Data.cmd := trim(adoDataSet.Fields[1].AsString); Data.cmdName := trim(adoDataSet.Fields[2].AsString); Data.flag := adoDataSet.Fields[3].AsInteger; Data.dataLen := adoDataSet.Fieldbyname('DataLen').AsInteger; Data.units := trim(adoDataSet.Fieldbyname('unit').AsString); Data.display := trim(adoDataSet.Fieldbyname('Display').AsString); Node := tvCommand.Items.AddChild(tmpNode, trim(adoDataSet.Fields[2].AsString)); Node.Data := Data; Node.ImageIndex := 1; BuildTree(Node, adoDataSet.Fields[0].AsString, aid); adoDataSet.Next; end; adoDataSet.close; freeandnil(adoDataSet); end;var Nodes: TTreeNode; Data: PCommand; Form: TForm;begin self.Enabled := false; Form := TForm.Create(self); Form.BorderStyle := bsNone; Form.Position := poMainFormCenter; Form.Show; tvCommand.Items.Clear; Nodes := tvCommand.Items.AddChild(nil, '命令树'); new(Data); Nodes.Data := Data; tvCommand.Items.BeginUpdate; BuildTree(Nodes, '0', Pid); tvCommand.Items.EndUpdate; Nodes.Expanded := true; freeandnil(Form); self.Enabled := true;end; //用于标记树结点的指针结构type PCommand = ^TCommand; TCommand = record cid: integer; cmd: string; cmdName: string; flag: integer; dataLen: integer; pid:integer; units: string; display: string; end;访问时,可以var Node:TTREENODE;如访问CIDPCommand(Node.Parent.Data)^.cid; 菜鸟问题一大堆 熟悉dxNavbar使用的朋友进(带图) delphi中chart如何显示数据表中的数据 有个问题,不知怎么说出口~ 【专家榜】2005-09专家榜名单 设置属性edit1.enable:=false ,如何把edit1.text中显示的数据变成别的颜色? 怎样能过HTTP获得将远程的文件存到本机上来? 有关多媒体技术? 华泰贝通和北京创智你去那家? 现在有哪些朋友在用reportmachine 报表控件,希望互相交流! 请求一些消息处理实例,哪会大侠手头有这方面的资料??谢谢 提示信息
const
SQL = 'SELECT * from 规约明细表 where pid=%s and atype=%s';
procedure BuildTree(tmpNode: TTreeNode; Pid, aid: string);
var
adoDataSet: TADODataSet;
Node: TTreeNode;
Data: PCommand;
begin
adoDataSet := TADODataSet.Create(self);
adoDataSet.Connection := DM.adoConnection;
adoDataSet.CommandText := format(SQL, [Pid, aid]);
adoDataSet.Open;
adoDataSet.First;
while not adoDataSet.Eof do
begin
new(Data);
Data.cid := adoDataSet.Fields[0].AsInteger;
Data.cmd := trim(adoDataSet.Fields[1].AsString);
Data.cmdName := trim(adoDataSet.Fields[2].AsString);
Data.flag := adoDataSet.Fields[3].AsInteger;
Data.dataLen := adoDataSet.Fieldbyname('DataLen').AsInteger;
Data.units := trim(adoDataSet.Fieldbyname('unit').AsString);
Data.display := trim(adoDataSet.Fieldbyname('Display').AsString);
Node := tvCommand.Items.AddChild(tmpNode, trim(adoDataSet.Fields[2].AsString));
Node.Data := Data; Node.ImageIndex := 1;
BuildTree(Node, adoDataSet.Fields[0].AsString, aid);
adoDataSet.Next;
end;
adoDataSet.close;
freeandnil(adoDataSet);
end;var
Nodes: TTreeNode;
Data: PCommand;
Form: TForm;
begin
self.Enabled := false;
Form := TForm.Create(self);
Form.BorderStyle := bsNone;
Form.Position := poMainFormCenter;
Form.Show;
tvCommand.Items.Clear;
Nodes := tvCommand.Items.AddChild(nil, '命令树');
new(Data);
Nodes.Data := Data;
tvCommand.Items.BeginUpdate;
BuildTree(Nodes, '0', Pid);
tvCommand.Items.EndUpdate;
Nodes.Expanded := true;
freeandnil(Form);
self.Enabled := true;end;
type
PCommand = ^TCommand;
TCommand = record
cid: integer;
cmd: string;
cmdName: string;
flag: integer;
dataLen: integer;
pid:integer;
units: string;
display: string;
end;
访问时,可以
var
Node:TTREENODE;
如访问CIDPCommand(Node.Parent.Data)^.cid;