这个问题我问了多次了,也看了DELPHI的帮助,还是有问题。可能我太笨了,再来向大家请教一下。显示FORM3
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.ShowModal;
end;调用该函数
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
if form3.ShowModal=mrok then
begin
form3.ModalResult:=mrcancel;
form3.Close
end
else
begin
if dbgrid1.SelectedField=dbgrid1.DataSource.DataSet.FieldByName('单位代码') then
treecreate1('单位代码');双击FORM3中的树形菜单,传值回DBGRID
procedure TForm3.TreeView1DblClick(Sender: TObject);
begin
if treeview1.Selected=nil then
exit;
form1.Edit1.Text:=treeview1.Selected.Text;
form1.Edit1.Text:=treeview1.Selected.Text;
form3.ModalResult:=mrcancel;
form3.Close;
end;
为什麽每次我双击FORM中DBGRID中的不同字段时,打开的FORM3中显示的都是同样的内容呢。
各位高人可否耐心的看一下,我真的 被这个问题快烦死了。
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.ShowModal;
end;调用该函数
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
if form3.ShowModal=mrok then
begin
form3.ModalResult:=mrcancel;
form3.Close
end
else
begin
if dbgrid1.SelectedField=dbgrid1.DataSource.DataSet.FieldByName('单位代码') then
treecreate1('单位代码');双击FORM3中的树形菜单,传值回DBGRID
procedure TForm3.TreeView1DblClick(Sender: TObject);
begin
if treeview1.Selected=nil then
exit;
form1.Edit1.Text:=treeview1.Selected.Text;
form1.Edit1.Text:=treeview1.Selected.Text;
form3.ModalResult:=mrcancel;
form3.Close;
end;
为什麽每次我双击FORM中DBGRID中的不同字段时,打开的FORM3中显示的都是同样的内容呢。
各位高人可否耐心的看一下,我真的 被这个问题快烦死了。
另外,你ShowModal两次这个窗口,你的程序需要改进。
then
treecreate1('单位代码'); --------?
2. form1.ADOQuery3.SQL.Add('select * from '+tabnam1);
3. form3.TreeView1.Items.Add(form3.TreeView1.TopItem,form1.ADOQuery3.Fields
[0].AsString+form1.ADOQuery3.Fields[1].AsString);你的“treecreate1('单位代码');”传进去的“单位代码”是什么?
是一个表的名字?定值??如果是定值那你没次选的都是同一张表啊
..................
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('单位隶属关系');
...............
treecreate1,treecreate3都是生成树形菜单的函数。
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.ShowModal;
end;
你的内容取的是同一张表的同样的字段,所以显示的内容一定是相同的,我不知道你要完成的功能是不是要据选取的字段来填充TreeView,如果是的话,建议你把Fields[0]和Fields[1]换成选中的字段名,即加一个参数。
我要问的主要是SHOWMODAL的问题。请大家指教。
F7,追踪执行
F8,单步执行
你form3 showmodal状态下,是操作不了form1的,
TForm1.DBGrid1DblClick的时候form3肯定不是showmodal的 if form3.ShowModal=mrok then
begin
form3.ModalResult:=mrcancel;
form3.Close
end