起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 159|回复: 3

【搞定】如何将主窗体的对象赋值到子窗口?**

[复制链接]
发表于 2007-5-11 09:21:05 | 显示全部楼层 |阅读模式
目的:
    将功能中指定的业务信息和数据集以及表现文档对象作为参数传递到子窗体中(子窗体在资源集中),在子窗体能显示所传递的对象及数据。

我现在的方法是:
1.在业务功能中的“配置项目属性”引入子窗体所在资源集。
2.在业务功能中写调用子窗体代码:
procedure TMainForm.Button1Click(Sender: TObject);
begin
  TEST_DATASET.TTEST_SELECTFORM.ShowForm(TEST_INFO.Info,
                                         dsWhere.DataSet,dsResult.DataSet,
                                         'dsQueryWhere', 'QUERYRESULT_G');
end;

3.在子窗体中,放置了TInfoBroker、TDataSetBroker、TDocView,对属性分别设置为:
InfoBroker1 —— AutoBroker  := False;    AutoOpenInfo := False
DataSetBroker1 ——  InfoBroker :=InfoBroker1
DocView1 —— InfoBroker :=InfoBroker1

代码如下:
static procedure TTEST_SELECTFORM.ShowForm(AInfo: TInfo;
                              AdsQueryWhere,AdsQueryResult: TDataSet;
                              AWhereDataSetID, AResultDodID: String);
var
  lForm: TTEST_SELECTFORM;
begin
   lForm:= TTEST_SELECTFORM.Create(nil);

  try
    lForm.InfoBroker1.Info := AInfo;
    lForm.dsQueryWhere.DataSet := AdsQueryWhere;
    lForm.DocView1.DocClassID := AResultDodID;
    lForm.InfoBroker1.AutoBroker := True;
    lForm.InfoBroker1.AutoOpenInfo := True;
  except
    Dialogs.ShowMessage('传入参数错误');
  end;
  lForm.ShowModal;
end;

问题:子窗体中被调用打开后为空。
请问这种情况该如何处理?
回复

使用道具 举报

发表于 2007-5-11 09:59:07 | 显示全部楼层
用代码跟踪一下,看各个对象的状态如何?
回复 支持 反对

使用道具 举报

发表于 2007-5-11 14:59:57 | 显示全部楼层
去掉以下代码
   lForm.InfoBroker1.AutoBroker := True;
    lForm.InfoBroker1.AutoOpenInfo := True;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-11 16:03:14 | 显示全部楼层
我已经搞定了,不过谢谢两位楼主的回复!
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-10 03:44 , Processed in 0.036756 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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