引用bpl窗体的问题(100分)

  • 主题发起人 主题发起人 wstgfx
  • 开始时间 开始时间
W

wstgfx

Unregistered / Unconfirmed
GUEST, unregistred user!
请教各位大哥,帮帮小弟!
引用bpl窗体,用show打开,如果再按一次打开按钮,把已经打开的放到前面来,不打开第二个.现在的问题是--怎样把已经打开的放到前面来?
代码如下:
var
frm : TCustomForm;
begin
if ModuleInstance1 = 0 then //ModuleInstance1: HModule;全局变量
begin
ModuleInstance1 := LoadPackage('Unit1.bpl');
frm := CreateFormByClassName('Tform1');
try
frm.show;
finally
// frm.Release;
end;
end;
end;
 
function TShowFormClass.GetExistForm:TForm;
var
i:integer;
begin
Result := nil;
for i := 0 to (Application.ComponentCount - 1) do
begin
if (Application.Components is TForm) then
begin
//注意,关键判断这个类型名称是否存在。
if (application.Components as TForm).ClassType.ClassName = 'TForm1' then
begin
Result:=(application.Components as TForm);
exit;
end
end;
end;
end;

function TShowFormClass.IsFormExist:boolean;
var
i:integer;
begin
Result:=False;
for i := 0 to (Application.ComponentCount - 1) do
begin
if (Application.Components is TForm) then
begin
//注意,关键判断这个类型名称是否存在。
if (application.Components as TForm).ClassType.ClassName = 'TForm1' then
begin
Result:=True;
exit;
end
end;
end;
end;

以下是调用的过程(片断)
if not IsFormExist then
begin
frm := CreateFormByClassName('Tform1');
frm.Show;
end
else
begin
//存在,则得到窗体,并置前
frm := GetExistForm;
if not frm.Showing then frm.Show;
frm.BringToFront;
end;
 
谢谢高手!
这个TShowFormClass类怎么注册?下面这样好象不行.
type
TShowFormClass = class(TComponent)
...
 
不用注册,你使用的时候就当是两个一般的函数就可以了。

function GetExistForm:TForm;
function IsFormExist:boolean;
 
可以了,谢谢shunzi1220大哥!
送上100分,不成敬意,请笑纳!
我的调用过程是这样的:
var
frm : TCustomForm;
begin
if not IsFormExist then
begin
LoadPackage('Package1.bpl');
frm := CreateFormByClassName('Tform2');
frm.Show;
end else
begin
//存在,则得到窗体,并置前
frm := GetExistForm;
if not frm.Showing then frm.Show;
frm.BringToFront;
end;
 
后退
顶部