我在公共单元中写了个函数,用来打开无模式窗口
function TGnv_App.of_OpenSheet(FormClass: TFormClass; Fm :TForm): Integer;
begin
If Not Assigned(Fm) Then
Begin
Fm := FormClass.Create(Application);
Fm.Show;
End;
Result := 1;
end;然后在主程序中调用
procedure TUfc_F_AppManage.dxBarButton26Click(Sender: TObject);
begin
Gnv_App.of_OpenSheet(TUfc_F_About,Ufc_F_About);
end;每点击按钮,就弹出窗口,希望第2次点击相同按钮不要再打开窗口
主要是 If Not Assigned(Fm) Then 不起作用,Fm每次进来总是空的!
哪位能帮帮忙!
function TGnv_App.of_OpenSheet(FormClass: TFormClass; Fm :TForm): Integer;
begin
If Not Assigned(Fm) Then
Begin
Fm := FormClass.Create(Application);
Fm.Show;
End;
Result := 1;
end;然后在主程序中调用
procedure TUfc_F_AppManage.dxBarButton26Click(Sender: TObject);
begin
Gnv_App.of_OpenSheet(TUfc_F_About,Ufc_F_About);
end;每点击按钮,就弹出窗口,希望第2次点击相同按钮不要再打开窗口
主要是 If Not Assigned(Fm) Then 不起作用,Fm每次进来总是空的!
哪位能帮帮忙!
解决方案 »
- 2009使用人数调查,有在用的进来顶下吧
- delphi 7 项目如何设置pre build及post build,我想在编译之前执行一段代码生成脚本。
- 文件夹过滤
- 如何利用接口helpintfs实现 联机帮助
- 请教,能不能像TRACKBAR一样的
- 点DBGrid某列单元格时能否每次都占满这个单元格?
- 建立一棵树的好方法
- 请问:登陆窗体及序幕窗体执行完进入主窗体后,光标处于运行状态,不能进行下一步操作,光标带有SQL字母,如何解决?
- 很初级的问题,delphi中去字符串的子串用什么函数?
- delphi/枚举在运行的所有窗口
- 要做一个MIS程序,各位有什么规划的文档或现成的项目,或者有什么建议,请近来说说!
- ※※北京:卖李维的3本Delphi书籍※※
begin
//If Not Assigned(Fm) Then 改为
if fm=nil then
Begin
Fm := FormClass.Create(Application);
Fm.Show;
End;
Result := 1;
end;
如果不存在就枚举不到.(很恶的方法.)
if fm=nil then这两句话的效果一样的吧!
我试过了,还是不行!
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
Self := nil;
end;
而将指指针置为空
Action := Free只是将自己占用的内存释放掉, 它并不知道哪个指针指向了它
所以你的判断应该用FindWindow or FindWindowEx
如 if FindWindow(你的窗体类名, 窗口标题) = 0 then //其中任何一个就可, 也可两个都要)
创建你的窗体
function TGnv_App.of_OpenSheet(FormClass: TFormClass;
var Fm :TForm): Integer; //注意本行
....
Gnv_App.of_OpenSheet(TUfc_F_About, TForm(Ufc_F_About));我以前遇到過, 是這樣解決的!
用你的方法解决的,其实就是实参和形参的问题,不过我没有注意到类型转化,所以造成错误!非常感谢!同时也谢谢其它朋友!接分吧!
begin
if not Assigned(Form2) then
Form2 := TForm2.Create(Application);
Form2.Show;
end;---------------------------------------------------------------------
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;procedure TForm2.FormDestroy(Sender: TObject);
begin
Self := nil;
end;