我在mainForm中双击treeview菜单创建child窗体。
现在的问题是:点一次就创建一次child窗体实例。我只想存在一个child窗口实例。不希望创建多个实例。
package1中包含了test.pas. Ttestpp = class(TForm); testpp: Ttestpp;实做代码:
LoadPackage('Pkgtest.bpl');
if TFormClass(FindClass('Ttestpp')) <> nil then
begin
try
TFormClass(FindClass('Ttestpp')).Create(self);
finally
end;
end;
现在的问题是:点一次就创建一次child窗体实例。我只想存在一个child窗口实例。不希望创建多个实例。
package1中包含了test.pas. Ttestpp = class(TForm); testpp: Ttestpp;实做代码:
LoadPackage('Pkgtest.bpl');
if TFormClass(FindClass('Ttestpp')) <> nil then
begin
try
TFormClass(FindClass('Ttestpp')).Create(self);
finally
end;
end;
解决方案 »
- DELPHI中如何取得 重载函数的地址?
- 求教:用windows.SetParent将一外部程序的某个视频预览窗口移植到自己程序的一个BUTTON上面,可这个窗口移过来后它的位置却不合适,如何
- 一个有关Quickrep报表保存的问题!真的很急啊!!!!大家帮忙看看
- query1.delete;删除错误是什么原因
- 求一好算法——如何去掉注释符??各位请近
- 超复杂问题,大家来帮帮看看,如何显示数据~!
- 如何用delphi的excel控件在程序中做出嵌入excel表页面的效果?以MDI自窗口方式显示
- 用一个数据表更新另一个数据表,update怎么写?
- 救命!!我们的正则表达式不正确,求一正确表达式
- 日期输入?
- 如何让DBGridEh显示出来的文字,垂直居中?
- 三层结构客户端怎么调用装载中间层bpl?
var
i : Integer
Begin
For i := 0 To MDIChildCount-1 do
if MDIChildren[i] is TMyForm then
begin
MDIChildren[i].BringToFront;
Exit;
End; Application.CreateForm(TMyform,Myform);
end;
Form1:=TForm1.Create(Application);
Form1.show;
IF not Assigned(Form1) then
Form1:= TForm1.Create(self)
else
Form1.Show ;
Form1:= TForm1.Create(self)
else
Form1.Show ;
这种方式在我这里不好使用,因为不直接引用到form1的unit。所以使用不了form1变量。
proceudre form1show;
begin
if form1 = nil then tform1.create....
end;
function IsAlreadForm(vForm: string): boolean;
var
i: integer;
begin
result := false;
for i := 0 to application.MainForm.MDIChildCount - 1 do
begin
if string(application.MainForm.MDIChildren[i].classname) = vForm then
begin
application.MainForm.MDIChildren[i].BringToFront;
result := true;
exit;
end;
end;
end;