PItemData=^_ItemData;
_ItemData=packed record
S:shortstring;
i:integer;
f:double;
B:boolean;
P:Pointer;
Next:PItemData;
end;
初始化窗体
procedure TFrm_ClientGameRecord.InitTree;
var Str:string;
XmlNode:IXMLNode;
i:integer;
Node:TtreeNode;
begin
Tree_Time.Items.Clear;
Query_1.Connection:=Global.DM.AdoDb;
Str:=\'select GCODE nodedata,GNAME nodestr,1 subnodeflag \'+
\'from T_GameDevice order by id \';
if Global.DM.Db_Select(Str)>0 then
LoadTreeNode(nil,Global.DM.Q_Select);
end;
//绑定节点
procedure TFrm_ClientGameRecord.LoadTreeNode(ParNode: TTreeNode; DataSet: TDataSet);
var i:integer;
Node:TTreeNode;
NodeData:PItemData;
begin
DataSet.First;
for i:=1 to DataSet.RecordCount do
begin
NodeData :=AllocMem(sizeof(NodeData^));
NodeData^.S:=dataset.fieldbyname(\'Nodedata\').AsString ;
Node:=Tree_Time.Items.AddChildObject(ParNode,dataset.fieldbyname(\'nodestr\').AsString,
nodedata);
if dataset.FieldByName(\'subnodeflag\').AsInteger =1 then
begin
Node.ImageIndex :=0;
Node.SelectedIndex :=0;
Tree_Time.Items.AddChild(node,\'\');
end
else
begin
Node.ImageIndex :=2;
Node.SelectedIndex :=2;
end;
dataset.next;
end;
end;
//得到根节点的方法
function TFrm_ClientGameRecord.GetTreeTopNode(Node: TTreeNode): TTreeNode;
begin
if Node.Parent <>nil then
Result:=GetTreeTopNode(Node.Parent)
else
Result:=Node;
end;