关于窗体多实例?各位大侠帮帮忙啦。。。(80分)

  • 主题发起人 主题发起人 otqsoft
  • 开始时间 开始时间
O

otqsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
我在写查询时,把查询生成一个Dll,所有的查询都要调用这一个Dll,怎么让每一个创建的窗体互不影响呢?
调用接口如下:
function DllFindInterFace(var tmpADO: TADOConnection; tmpNo,tmpName,tmpTable,tmpCaption: pchar): TForm;
var
count: integer;
AForm: array of TfrmFindMain;
begin
ADOCONN:= tmpADO;
FindUserID:= string(tmpNo);
FindUserName:= string(tmpName);
TableName:= string(tmpTable);
TitCaption:= string(tmpCaption);
try
count:= high(AForm) - low(AForm) + 1;
SetLength(AForm, count+1);
AForm[high(AForm)]:= TfrmFindMain.Create(Application);
Application.ProcessMessages;
AForm[high(AForm)].Caption:= TitCaption;
ThemeColor:= LoadInterFace(AForm[high(AForm)]);
AForm[high(AForm)].GetFindInfo(TitCaption);
Result:= AForm[high(AForm)];
except
on E: Exception do
begin
WriteLog('UfindInterFace -> DllFindInterFace -> 查询窗体初始化加载失败!'+ e.Message);
WriteUserLog('查询窗体创建失败!',e.Message);
if Assigned(AForm[high(AForm)]) then
begin
AForm[high(AForm)].Close;
AForm[high(AForm)]:= nil;
end;
end;
end;
end;
 
你搞
AForm: array of TfrmFindMain;
这么一个内部变量干嘛呢?
随着函数调用的结束,这个变量会被自动释放。
你只要创建了窗体并返回这个创建的窗体就是了。
 
我就是怕创建多个实例时,发生冲突,唉谁知道还不行啊。。。。
我现在作一个查询,查询里面是一套完整的程序,包括表格设置,图例显示等。
现在就只要传进一些参数(如表名,工号等),类里就可以完成查询。不过我
它封在Dll里,现在在主控台里调用创建多个时,就发生了冲突。。。。不知道
现在怎么办呢?各位大侠帮帮忙吧。不过以前也实例过,是用消息传来传去,麻烦。。。
 
什么冲突?
 
后退
顶部