起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 252|回复: 16

【结】子窗口中的数据无法取出。**

[复制链接]
发表于 2008-10-27 22:10:52 | 显示全部楼层 |阅读模式
我在掉用子窗口中的数据时,程序不走到我需要的代码。
具体代码如下:
   with TChoiseCmpWindow.Create((DocView2.Doc as TTENANCYAPPLYINBD).Context) do
   begin
     try
       PType:='代理';
       //ShowModal;
       if ShowModal = Business.Forms.Controls.mrOk then
       begin
         DatasetApply.DataSet.Edit;
         DataSetApply.DataSet.FieldByName('ProxyCompanyID').AsString :=PAutoIn;
         DataSetApply.DataSet.FieldByName('ProxyCompanyName').AsString :=PCnName;
         DatasetApply.DataSet.ApplyUpdates;
       end;
       Free;
     finally
     end;
   end;

在子窗口的代码如下 :
  if not DataSetCompanyDB.Active Then Exit;
  PCnName :=DataSetCompanyDB.FieldByName('CnName').Asstring;
  PAutoIn :=DataSetCompanyDB.FieldByName('autoin').AsString;
  ModalResult:=Business.Forms.Controls.mrOk;


但是在主窗口中 程序就走到if ShowModal = Business.Forms.Controls.mrOk then 这句 就不进去了,请问一下 我这么写代码 有问题伐?  为什么我明明返回的是Business.Forms.Controls.mrOk,就是不执行代码呢?
请问我要看ShowModal 的值怎么看法呢?
回复

使用道具 举报

发表于 2008-10-28 08:49:05 | 显示全部楼层
dialogs.showmessage(sysutils.inttostr(ShowModal ));
回复 支持 反对

使用道具 举报

发表于 2008-10-28 08:50:34 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-28 09:31:42 | 显示全部楼层
我查了一下 不管我在子窗口中把 ModalResult:=Business.Forms.Controls.mrOk;
还是设成 ModalResult:=Business.Forms.Controls.mrCancle;
我用 dialogs.showmessage(sysutils.inttostr(ModalResult)); 看它的返回值都是 0 这是为什么?
回复 支持 反对

使用道具 举报

发表于 2008-10-28 10:23:22 | 显示全部楼层
可以弹出窗体上,放个TBitBtn按钮
设置它的ModalResult属性为mrok或mrcancel
用这个按钮关闭弹出窗体就可以了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-28 12:36:46 | 显示全部楼层
不行 放TBitBtn按钮上去 也没有用。
子窗口还是没有返回ModalResult值
回复 支持 反对

使用道具 举报

发表于 2008-10-28 13:08:10 | 显示全部楼层
楼主,请参考我做的例子,

temp.rar

9.41 KB, 下载次数: 60

回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-28 14:29:37 | 显示全部楼层
老大 我之前的代码 就是按照这样来写 ,可程序就是不返回值啊
现在的代码如下:
procedure TMAINFORM.DoCompany(Sender: TObject);
var
  ChoiseCmpWindow: TChoiseCmpWindow;
begin
   ChoiseCmpWindow:=TChoiseCmpWindow.Create((DocView2.Doc as TTENANCYAPPLYINBD).Context);
   ChoiseCmpWindow.PType:='客户';
     try
       if ChoiseCmpWindow.ShowModal = Business.Forms.Controls.mrOk then
       begin
         DatasetApply.DataSet.Edit;
         DataSetApply.DataSet.FieldByName('CompanyID').AsString :=ChoiseCmpWindow.DataSetCompanyDB.FieldByName('autoin').AsString;
         DataSetApply.DataSet.FieldByName('CompanyName').AsString :=ChoiseCmpWindow.DataSetCompanyDB.FieldByName('CnName').AsString;
         DatasetApply.DataSet.ApplyUpdates;
       end else
       begin
         DatasetApply.DataSet.Edit;
         DataSetApply.DataSet.FieldByName('CompanyID').AsString :=ChoiseCmpWindow.DataSetCompanyDB.FieldByName('autoin').AsString;
         DataSetApply.DataSet.FieldByName('CompanyName').AsString :=ChoiseCmpWindow.DataSetCompanyDB.FieldByName('CnName').AsString;
         DatasetApply.DataSet.ApplyUpdates;
       end;
     finally
       ChoiseCmpWindow.Free;
     end;
end;

不管我在子窗口中是用TBitBtn按钮 还是用代码的方式赋值 它主窗口就是执行ELSE里面的程序。这是为什么啊?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-28 15:39:15 | 显示全部楼层
???? 急等啊!!
回复 支持 反对

使用道具 举报

发表于 2008-10-28 16:24:11 | 显示全部楼层
我得例子可以用吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-24 12:18 , Processed in 0.047328 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表