起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 2146|回复: 55

【结贴】[请求]为什么触发不到InfoCreate(Sender: TObject)事件?**

[复制链接]
发表于 2009-3-9 16:40:29 | 显示全部楼层 |阅读模式
procedure TCXLSJLCT.BizFormCreate(Sender: TObject);
var
  myinfo: TInfoBroker;
  dv: TDocView;
  tab: TTabSheet;
begin
  myinfo := TInfoBroker.Create(Self);
  myinfo.AutoBroker := True;
  myinfo.AutoKind := TAutoKind.akPrivate;
  myInfo.FuncBroker := FuncBroker1;
  myInfo.BizClassRef.BizURL.URL := 'Biz:\LFRDGC\CSHTXX.Info';
end;

这样子为什么触发不到
TCSHTXX.InfoCreate(Sender: TObject)事件。

如果TInfoBroker不是动态创建的话,就可以触发的到?

为什么?
回复

使用道具 举报

发表于 2009-3-9 16:46:46 | 显示全部楼层
必须访问信息里面的某个对象才行。

InfoBroker的创建只会触发到infoBroker的create


Info创建的时候才会触发到info的create
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-9 16:49:17 | 显示全部楼层
那我动态创建时,要啥触发呢??
兄弟,教我一下
回复 支持 反对

使用道具 举报

发表于 2009-3-9 16:51:01 | 显示全部楼层
你随便调用信息里的某个函数就可以
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-9 16:56:16 | 显示全部楼层
我在TInfo里,只有一个Create事件,没有其它的。
我想在InfoBroker创建完后,直接手动去创建TInfo可以吗?
TInfo(myInfo.Info).Create(Context)
回复 支持 反对

使用道具 举报

发表于 2009-3-10 08:41:27 | 显示全部楼层
不知道会不会出异常,您试验一下。
回复 支持 反对

使用道具 举报

发表于 2009-3-10 08:50:02 | 显示全部楼层
up
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-10 09:05:28 | 显示全部楼层
还是执行不了,郁闷哟!
我要在TInfoBroker引用TInfo时,手动打开TInfo中的数据集,

请问,有没有什么解决方法?
回复 支持 反对

使用道具 举报

发表于 2009-3-10 09:24:42 | 显示全部楼层
可以在外部直接调用信息的数据集对象。
信息(信息代理.info).数据集.open
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-10 09:53:03 | 显示全部楼层
在标准风格主窗体上放一个InforBroker1,引用信息层MBYSJJ,
在信息层MBYSJJ创建的时候,用线程在后台打开信息层上的所有数据集。
为什么一运行,整个程序就死掉了?代码如下:

unit MBYSJJ;

interface

uses
  Business.System, Business.Model, Business.Data;

type
  TMBYInfoThread = class(TThread)
private
  FMBYInfo: TInfo;
public
  property MBYInfo: TInfo read FMBYInfo write FMBYInfo;
  procedure Execute; override;
end;

type
  TMBYSJJ = class(TInfo)
    DataSetAXTYH: TSQLDataSet;
    DataSetABTZBJLDBRJSYYDM: TSQLDataSet;
    DataSetABYQBHSYYDM: TSQLDataSet;
    DataSetATBDW: TSQLDataSet;
    DataSetAJSJZYYDM: TSQLDataSet;
    DataSetAJCJSJZYYDM: TSQLDataSet;
    DataSetAJCQBHSYYDM: TSQLDataSet;
    DataSetAQZCS: TSQLDataSet;
    DataSetAQBHSYYDM: TSQLDataSet;
    DataSetASXZM: TSQLDataSet;
    procedure InfoCreate(Sender: TObject);
  private
    {private declarations}
  public
    {public declarations}
  end;

implementation

procedure TMBYInfoThread.Execute;
var
  i: Integer;
  sDMPath: String;
begin
  FreeOnTerminate := True;
  sDMPath := JSCommon.ModulePath + '350200000000' + 'xml\';
  with FMBYInfo.DataSets do
  begin
    SysUtils.CreateDir(sDMPath);
    for i := 1 to Count - 1 do
    begin
      Items.Open;
      Items.SaveToFile(sDMPath + Items.ID + '.xml', TDataPacketFormat.dfXML);
    end;
  end;
end;

procedure TMBYSJJ.InfoCreate(Sender: TObject);
var
  t: TMBYInfoThread;
begin
  t := TMBYInfoThread.Create(False);
  t.MBYInfo := Self;
  t.Resume;
end;

end.
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-24 11:56 , Processed in 0.039523 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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