如题,最好能详细点,在TREEVIEW里有很多结点,怎么对每个结点指定一数据库中指定的的个ID值.

解决方案 »

  1.   

    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;
      

  2.   

    //用于标记树结点的指针结构
    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;