请教有关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; delphi + oracle 递归的问题 类型匹配问题 求助:我怎么使 PopupMenu1 不弹起来?谢谢! 我想从摄像头获取图片,但是视频窗口必须出现在屏幕上,如何在后台获得摄像头的图片。 为什么我动态创建的QRLabel看不到? 如何获得用ADOConnection1连接的服务器名和当前连接的数据库名 如何把Memo中的字符(中文或英文)换为区位码依次存到一个数组中? 在delphi中如何向某控件发 单击消息 ?? 消息名称是什么?? 急.. 哪位高手帮忙看一下代码哪里有错啊 在送50(DLL) 请求一些消息处理实例,哪会大侠手头有这方面的资料??谢谢 提示信息
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;