我在一个窗口上放了一个PageControl控件,该控件的每个PAGE上都放了一个DBGRID控件,在我点击某DBGRID的相应字段时,打开另一个窗体并在该窗体上显示相应的树形菜单,双击该树形菜单中的某字段,将该字段的值写入DBGRID的相应字段中。但DBGRID和DBGRID中的字段都是不定的,部分代码如下:生成树形菜单:
procedure treecreate1(tabnam1:string);
begin
form1.ADOQuery3.Close;
form1.ADOQuery3.SQL.Clear;
form1.ADOQuery3.SQL.Add('select * from '+tabnam1);
form1.ADOQuery3.Open;
form3.TreeView1.Items.Clear ;
form3.TreeView1.Enabled:=true;
while not form1.ADOQuery3.eof do
begin
form3.TreeView1.Items.Add(form3.TreeView1.TopItem,form1.ADOQuery3.Fields[0].AsString+form1.ADOQuery3.Fields[1].AsString);
form1.ADOQuery3.Next ;
end;
form3.Show;
end;procedure treecreate2(tabnam1,tabnam2:string);
var
mynode:array[0..2] of ttreenode;
str:string;
begin
form1.ADOQuery3.Close;
form1.ADOQuery3.SQL.Clear;
form1.ADOQuery3.SQL.Add('select * from '+tabnam1);
form1.ADOQuery3.Open;
form3.TreeView1.Items.Clear ;
form3.Enabled:=true;
while not form1.ADOQuery3.Eof do
begin
mynode[0]:=form3.TreeView1.Items.Add(form3.TreeView1.TopItem,form1.ADOQuery3.Fields[0].AsString+form1.ADOQuery3.Fields[1].AsString);
mynode[0].ImageIndex:=1;
str:=form1.ADOQuery3.Fields[0].AsString ;
form1.ADOQuery4.Close;
form1.ADOQuery4.SQL.Clear;
form1.ADOQuery4.SQL.Add('select * from '+tabnam2+' where id like '+''''+str+'%'+'''');
form1.ADOQuery4.Open ;
while not form1.ADOQuery4.Eof do
begin
form3.TreeView1.Items.AddChild(mynode[0],form1.ADOQuery4.Fields[0].AsString+form1.ADOQuery4.Fields[1].AsString);
form1.ADOQuery4.Next;
end;
form1.ADOQuery3.Next;
end;
form3.Show;
end;根据鼠标点击调用该过程:procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
if form3.Visible =true then form3.Close
else
begin
if dbgrid1.SelectedField=dbgrid1.DataSource.DataSet.FieldByName('单位代码') then
treecreate1('单位代码');
if dbgrid1.SelectedField=dbgrid1.DataSource.DataSet.FieldByName('单位地址') then
treecreate3('中国行政区划分','中国行政区划分代码1','中国行政区划分代码2');
if dbgrid1.SelectedField=dbgrid1.DataSource.DataSet.FieldByName('隶属关系') then
treecreate1('单位隶属关系');
if dbgrid1.SelectedField=dbgrid1.DataSource.DataSet.FieldByName('单位级别') then
treecreate1('单位级别');
if dbgrid1.SelectedField=dbgrid1.DataSource.DataSet.FieldByName('单位性质') then
treecreate1('单位性质');
if dbgrid1.SelectedField=dbgrid1.DataSource.DataSet.FieldByName('经济类型') then
treecreate2('经济类型代码','经济类型代码1'); end;
end;procedure TForm1.DBGrid3DblClick(Sender: TObject);
begin
if form3.Visible=true then form3.Close
else
if dbgrid3.SelectedField=dbgrid3.DataSource.DataSet.FieldByName('拨款形式') then
treecreate1('拨款形式');
end;树形菜单传值:procedure TForm3.TreeView1DblClick(Sender: TObject);
begin
form1.Edit1.Text:=treeview1.Selected.Text;
form1.Edit1.Text:=treeview1.Selected.Text;
form3.Close;
end;我想知道我该在哪里将值传到相应DBGRID的相应字段中。
procedure treecreate1(tabnam1:string);
begin
form1.ADOQuery3.Close;
form1.ADOQuery3.SQL.Clear;
form1.ADOQuery3.SQL.Add('select * from '+tabnam1);
form1.ADOQuery3.Open;
form3.TreeView1.Items.Clear ;
form3.TreeView1.Enabled:=true;
while not form1.ADOQuery3.eof do
begin
form3.TreeView1.Items.Add(form3.TreeView1.TopItem,form1.ADOQuery3.Fields[0].AsString+form1.ADOQuery3.Fields[1].AsString);
form1.ADOQuery3.Next ;
end;
form3.Show;
end;procedure treecreate2(tabnam1,tabnam2:string);
var
mynode:array[0..2] of ttreenode;
str:string;
begin
form1.ADOQuery3.Close;
form1.ADOQuery3.SQL.Clear;
form1.ADOQuery3.SQL.Add('select * from '+tabnam1);
form1.ADOQuery3.Open;
form3.TreeView1.Items.Clear ;
form3.Enabled:=true;
while not form1.ADOQuery3.Eof do
begin
mynode[0]:=form3.TreeView1.Items.Add(form3.TreeView1.TopItem,form1.ADOQuery3.Fields[0].AsString+form1.ADOQuery3.Fields[1].AsString);
mynode[0].ImageIndex:=1;
str:=form1.ADOQuery3.Fields[0].AsString ;
form1.ADOQuery4.Close;
form1.ADOQuery4.SQL.Clear;
form1.ADOQuery4.SQL.Add('select * from '+tabnam2+' where id like '+''''+str+'%'+'''');
form1.ADOQuery4.Open ;
while not form1.ADOQuery4.Eof do
begin
form3.TreeView1.Items.AddChild(mynode[0],form1.ADOQuery4.Fields[0].AsString+form1.ADOQuery4.Fields[1].AsString);
form1.ADOQuery4.Next;
end;
form1.ADOQuery3.Next;
end;
form3.Show;
end;根据鼠标点击调用该过程:procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
if form3.Visible =true then form3.Close
else
begin
if dbgrid1.SelectedField=dbgrid1.DataSource.DataSet.FieldByName('单位代码') then
treecreate1('单位代码');
if dbgrid1.SelectedField=dbgrid1.DataSource.DataSet.FieldByName('单位地址') then
treecreate3('中国行政区划分','中国行政区划分代码1','中国行政区划分代码2');
if dbgrid1.SelectedField=dbgrid1.DataSource.DataSet.FieldByName('隶属关系') then
treecreate1('单位隶属关系');
if dbgrid1.SelectedField=dbgrid1.DataSource.DataSet.FieldByName('单位级别') then
treecreate1('单位级别');
if dbgrid1.SelectedField=dbgrid1.DataSource.DataSet.FieldByName('单位性质') then
treecreate1('单位性质');
if dbgrid1.SelectedField=dbgrid1.DataSource.DataSet.FieldByName('经济类型') then
treecreate2('经济类型代码','经济类型代码1'); end;
end;procedure TForm1.DBGrid3DblClick(Sender: TObject);
begin
if form3.Visible=true then form3.Close
else
if dbgrid3.SelectedField=dbgrid3.DataSource.DataSet.FieldByName('拨款形式') then
treecreate1('拨款形式');
end;树形菜单传值:procedure TForm3.TreeView1DblClick(Sender: TObject);
begin
form1.Edit1.Text:=treeview1.Selected.Text;
form1.Edit1.Text:=treeview1.Selected.Text;
form3.Close;
end;我想知道我该在哪里将值传到相应DBGRID的相应字段中。
OnButtonClick
begin
if Form2.ShowModal=mrOK then
//do your things here
else
// do your things here
end;
B,建立通用索引类:按名称读入索引表
C,将所有的索引类登记到TStringList中: name=field, object=class
D,点击GRID时查找对应的索引类
E,建立通用窗口选择索引类子项
F,用所选子项更新数据库
G,更新显示yeah! all done