我現在有四個節點,案件名,設備名,組部件名,零件名.他們的關係是;案件裡面包含很多設備,設備裡面包含很多組部件,組部件裡面包含很多的零件.我想鼠標左鍵點了'案件名'之後,所有的'設備名'都能顯示為子節點,同樣的道理,再用鼠標左鍵點顯示出來的設備名能將所有的'組部件名'顯示為子節點.請問如何實現,希望能給出代碼例子

解决方案 »

  1.   

    没怎么看懂,如果只是树的显示,你可以写到click事件里。
    根据该父节点显示子节点,应该不难。
    下次不要用繁体,看了有点困难。
      

  2.   

    用treeview显示procedure TForm1.FormShow(Sender: TObject);
    var
      TreeNodeProvince,TreeNodeCity : TTreeNode;
      NodeDataRecPtr : PNodeDataRec;
      RegAdmiCode,Temp : String;
    begin
      TreeView1.Items.Clear;
      //TreeNodeProvince := nil;
      //TreeNodeCity := nil;
      with Query1 do
      begin
        Close;
        SQL.Clear;
        SQL.Text := 'select * from Admipartition order by ADMIPARTITIONNO asc';
        try
          Open;
        except
          Close;
          Exit;
        end;
        //----^    if not (bof and eof) then
        begin
          First;
          while Not eof do
          begin
            Temp := fieldbyname('AdmipartitionNo').AsString;        if Copy(fieldbyname('AdmipartitionNo').AsString,3,4) = '0000' then
            begin
              New(NodeDataRecPtr);
              NodeDataRecPtr^.AdmiName := FieldByName('ADMIPARTITIONNAME').AsString;
              NodeDataRecPtr^.AdmiCode := FieldByName('ADMIPARTITIONNO').AsString;
              TreeNodeProvince := TreeView1.Items.AddObject(nil,FieldByName('ADMIPARTITIONNAME').AsString +
                            '' + FieldByName('ADMIPARTITIONNO').AsString,NodeDataRecPtr);         // TreeNodeProvince := TreeView1.Items.Add(nil,FieldByName('ADMIPARTITIONNAME').AsString
                  //          );
            end
            else
              if Copy(FieldByName('ADMIPARTITIONNO').AsString,5,2) = '00' then
              begin
                New(NodeDataRecPtr);
                NodeDataRecPtr^.AdmiName := FieldByName('ADMIPARTITIONNAME').AsString;
                NodeDataRecPtr^.AdmiCode := FieldByName('ADMIPARTITIONNO').AsString;
                TreeNodeCity := TreeView1.Items.AddChildObject(TreeNodeProvince,FieldByName('ADMIPARTITIONNAME').AsString,NodeDataRecPtr);
              end
              else
              begin
                New(NodeDataRecPtr);
                NodeDataRecPtr^.AdmiName := FieldByName('ADMIPARTITIONNAME').AsString;
                NodeDataRecPtr^.AdmiCode := FieldByName('ADMIPARTITIONNo').AsString;
                TreeView1.Items.AddChildObject(TreeNodeCity,FieldByName('ADMIPARTITIONNAME').AsString,NodeDataRecPtr);          end;
            Next;
          end;
        end;
      end;
      TreeView1.SetFocus;
      TreeView1Click(Self);
    end;