CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

在MDI主窗口中创建child窗体问题!

楼主yosoft()2005-04-01 16:40:34 在 Delphi / VCL组件开发及应用 提问

我在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;  
  问题点数:50、回复次数:8Top

1 楼malamala(还真是笨)回复于 2005-04-01 17:19:07 得分 30

procedure   TMainForm.NewMyFormClick(Sender:TObject);  
  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;  
  Top

2 楼pengxuan(网虫先生)回复于 2005-04-01 17:34:38 得分 10

if   not   Assigned(Form1)   then  
        Form1:=TForm1.Create(Application);  
  Form1.show;Top

3 楼Breakc0de(学无止境)回复于 2005-04-01 17:53:29 得分 0

 
  IF     not     Assigned(Form1)   then    
  Form1:=   TForm1.Create(self)  
  else  
  Form1.Show   ;  
  Top

4 楼yosoft()回复于 2005-04-01 18:34:50 得分 0

IF     not     Assigned(Form1)   then    
  Form1:=   TForm1.Create(self)  
  else  
  Form1.Show   ;  
  这种方式在我这里不好使用,因为不直接引用到form1的unit。所以使用不了form1变量。Top

5 楼Maple119(枫叶)回复于 2005-04-01 20:55:26 得分 10

你可以在   form1   的   unit   里写一个过程.比如:  
  proceudre   form1show;  
  begin  
      if   form1   =   nil   then   tform1.create....  
  end;Top

6 楼yosoft()回复于 2005-04-02 17:07:47 得分 0

to   maple119():你这样处理还是需要use   Form1的unit啊。  
  Top

7 楼cyblueboy83(爱情白痴—电脑迷)回复于 2005-04-02 17:44:41 得分 0

to   maple119():你这样处理还是需要use   Form1的unit啊。  
   
  当然要呀,你没继承单元,怎么创建你要的类?Top

8 楼yosoft()回复于 2005-04-08 18:34:30 得分 0

获取VForm类。(我有数据来源)。为了不应用Form类,我把Form类存在别的数据中,然后获取的。  
   
  后用这个函数来判断了。问题解决就行了,不过感觉应该有简单的方法。  
  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;Top

相关问题

  • MDI窗体中的“窗口”菜单中的“当前打开窗口列表”的Click事件怎么调用?
  • MDI窗体中的“窗口”菜单中的“当前打开窗口列表”的问题
  • 已知一个窗口的Handle,如何将该窗体设置成本程序的MDI子窗体?
  • mdi子窗口的关闭(不是窗体上打叉的那个close的)
  • ■如何让MDI子窗体的查询进度条在主窗口显示■
  • 关于主子窗体(MDI)的问题!控制窗口的大小?
  • 我将VB窗体设为顶层窗体(TOPMOST),始终居于其它窗体之上,是这个窗体如果为MDI子窗体就不能置于其它窗口之上,怎么解决?
  • 请教,如何判断MDI窗口中某一个子窗体是否已经打开.....????
  • 请教各位高手,在开发多窗口MDI中如何在主窗体上加入背景
  • 我脸红,请问一下MDI子窗体和一般窗口的区别是什么?

关键词

  • application
  • ttestpp
  • vform
  • mdichildren
  • 创建
  • child窗体
  • mainform
  • 实例
  • tform
  • 的unit

得分解答快速导航

  • 帖主:yosoft
  • malamala
  • pengxuan
  • Maple119

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo