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里显示出单条信息。。如何修改?大虾帮帮我啊!
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里显示出单条信息。。如何修改?大虾帮帮我啊!
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如果是根结点(所有产品)就显示所有产品信息
如果不是根结点就显示以所选的那个结点(不管是叶结点或者中间结点)为条件
查询出来的的产品信息,上面的代码好象没有效果了。。执行可以通过,
但没有效果
--