unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, Grids, DBGrids, DBTables, ComCtrls, SUITreeView, ExtCtrls,
  SUIForm;type
  TForm1 = class(TForm)
    suiForm1: TsuiForm;
    suiTreeView1: TsuiTreeView;
    Query1: TQuery;
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);var   RootNode, Node1, Node2,items: TTreeNode;   fldXilie, fldLeibie, fldChanpin: TField; begin   // 按排序的方式打开数据集   Query1.Close;
   query1.sql.clear;
   Query1.SQL.add('select * from kuchun2 order by leibie_id,xilie_id, chanpinname');   Query1.Open;   fldXilie := Query1.FieldByName('xilie_id'); // 同样找到fldLeibie, fldChanpin
   fldLeibie:= Query1.FieldByName('leibie_id');
   fldchanpin:=Query1.FieldByName('chanpinname');   // 清空旧数据   suiTreeview1.Items.Clear;
   // 添加根节点   RootNode := suiTreeview1.Items.Add(nil,'所有产品');   // 遍历数据库   Query1.First;   While not Query1.Eof do   begin     //查看是否是新的一个系列     if (Node1 = nil) or ( fldXilie.AsString <> Node1.Text)  then     begin        Node1 := suiTreeview1.Items.AddChild(RootNode, fldLeibie.Asstring);        Node2 := suiTreeview.Items.AddChild(Node1, fldXilie.AsString);     end     else       // 查看是否是新的一个类别       if (node2 = nil) or (fldXilie.AsString <> Node2.Text) then          Node2 := suiTreeview1.Items.AddChild(Node1, fldXilie.AsString);     // 添加这个产品     suiTreeview1.Items.AddChild(Node2, fldChanpin.AsString);     Query1.Next;   end;
end;end.
提示说:items没有定义?怎么会这样? 谁帮我改一下?我要的效果是:一个库存表里有好几个类,一个类有好几个系列,一个系列有好几个产品所有产品---
          类1------系列1------产品名1
                  |
          类2      系列2
                  |
                  系列3----产品3点击产品名后,在dbgrid里显示出单条信息。。如何修改?大虾帮帮我啊!

解决方案 »

  1.   

    出错行是在:suitreeview1.items.clear;说是没有定义items,是怎么回事啊?
      

  2.   

    procedure TForm8.suiForm1MouseUp(Sender: TObject; Button: TMouseButton; 
      Shift: TShiftState; X, Y: Integer); 
    var 
      myitem:ttreenode; 
      begin 
        myitem:=suitreeview1.getnodeat(x,y); 
        if (myitem<>nil) and (myitem.text='所有产品') 
           then 
             begin 
               query1.sql.clear; 
               query1.sql.add('select * from kucun2'); 
               query1.open; 
              end; 
       if (myitem<>nil) and (myitem.text<>'所有产品') 
            then 
            begin 
               query1.sql.clear; 
               query1.sql.add('select leibie_id,xilie_id,chanpinname,shuliang,ch uchangjia,guige from kucun2 where chanpinname="'+myitem.Text+'"'); 
      
               query1.open; 
            end; 
       end; 
    end. 
      
    想实现这样一个效果:点treeview如果是根结点(所有产品)就显示所有产品信息 
      
    如果不是根结点就显示以所选的那个结点(不管是叶结点或者中间结点)为条件 
    查询出来的的产品信息,上面的代码好象没有效果了。。执行可以通过, 
    但没有效果 
      
    --
      

  3.   

    啊?原来是写错地方了。有劳大家了。应该是写在suitreeview的mouseup事件里。