如何实现程序从SDI向MDI的快速转变!(50分)

  • 主题发起人 主题发起人 jackie_han
  • 开始时间 开始时间
J

jackie_han

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个程序是sdi的,现在要变成MDI的,如何能够用最少的改动,完成该功能!!
谢谢!!
 
不容易
1,建一个MDI主窗体,建一个基类为TMDIChildForm
2,把所有要成为MDI子窗体的SDI窗体的基类改为TMDIChildForm的子类,有时要改.dfm文件,
具体方法是,查看窗体,在窗体上按右键选择View as Text
3,如果有的话,把所有ShowModal改为Show
4,MDI子窗体不能Hide,要不用API函数Hide,要不在OnClose中设Action:=cafree;来释放它
好象就这么多了,可能记不全,如果还有问题就发EMail给我,我的油箱是0731ys@sohu.com
 
是在VC中,还是Delphi 中。
如果是Delphi ,把现在的Sdi 改成MDiChild .
外面加个壳。
 
谢谢ysai和jsxjd!
不过我还有些疑问:
(1)yasi所说的“建一个MDI主窗体,建一个基类为TMDIChildForm”,请问TMDIChildForm是不是
Delphi本身定义的类?(我想应该不是?)
(2)如何修改。dfm文件,具体该哪些地方?
谢谢!!!
 
TMDIChildForm为自己建的,直接从TForm继承,是为了方便管理所有MDI子窗体,
大部分不用改dfm文件,如果你直接改pas文件的
TYouForm = class(TForm)

TYouForm = class(TMDIChildForm)
出现错误时可能要改dfm文件,方法就是上面说的,找到dfm文件中的TForm改为TMDIChildForm
 
是MDI的主窗口还是子窗口,通过FormStyle属性控件。
添加一个窗口,将它的Formstyle设为 fsMDIForm,作为主窗口。
将原来的SDI窗口的FormStyle改为fsMDIChild,作为MDI子窗口。
建议不要直接修改 dfm
 
为什么要用MDI?据说MDI是淘汰了的技术,你看Office系列现在都不是MDI了,MDI的不好有
很多,正如MDI的优点也很明显。
 
后退
顶部