Q
Qingzhong
Unregistered / Unconfirmed
GUEST, unregistred user!
先谢谢你了:关于TForm的继承(因为我不想对每一个新建的Form都去设字体、图标、DosKey模仿?) <求求你了,我已经把贴子提前了10次以上了> (100分)<br /> 我的所有Form都想继承于一个我自己的TMyBaseForm,如此:要改变所有Form的字体、
图标等,实现DosKey的回车跳转,我仅仅改变一下我的自己的祖先Form---TMyBaseForm
就可以了,试问怎么实现?
See Also: http://www.delphibbs.com/delphibbs/dispq.asp?lid=761277
>>来自于ddev:
>>继承!!!
>>别忘记了这个最重要的要素。
>>作个 TForm 的派生类,然后在新建的窗体中总是从这个类派生,
>>一切问题不都解决了吗?
我当然知道
TMyBaseForm = class(TForm) // 我的"TObject级"Form,已经做好
希望:
TMyForm1 = class(TMyBaseForm1)
TMyForm2 = class(TMyBaseForm1)
......
但问题是如何让TMyForm1, TMyForm2,....等等我所有的Form均以TMyBaseForm为父类
准备:
已经在frmMyBase.pas单元内定义了TMyBaseForm
方案1:
将自定义的TMyBaseForm加入Repository的Form页面,Title设为MyBaseForm,
并选上New Form复选框(设为New Form默认)
但是:1)每次用New Form快捷图标生成的却是
TMyBaseForm = class(TForm),显然是copy了TMyBaseForm,不符合我的要求
2)迫不得以,每次File=>New=>Other=>选Form页面=>
=>选MyBaseForm=>从Copy,Inherit,Use三个选项中选Inherit=>OK
你说烦不烦???
方案2:
手动法
1)在project的dpr文件中加入Use frmMyBase in 'frmMyBase.pas'
2)在新建的Form中Use子句中加入对frmMyBase的引用,然后
将TForm1=Class(TForm)人为地改为:
TForm1=Class(TMyBaseForm)
结果:检查对应的dfm, view as text 发现
object Form1: TForm1
.....
Font.Name = 'MS Sans Serif'
.....
(显然不是我要的Font, 所以判断没有真正继承TMyBaseForm)
结论:行不通
方案3:
封装一个自己的 Form 组件,如何封装?如何使用?这是小雨哥提的建议,只是
小雨哥你自己做过吗?
初步结论:行不通!
图标等,实现DosKey的回车跳转,我仅仅改变一下我的自己的祖先Form---TMyBaseForm
就可以了,试问怎么实现?
See Also: http://www.delphibbs.com/delphibbs/dispq.asp?lid=761277
>>来自于ddev:
>>继承!!!
>>别忘记了这个最重要的要素。
>>作个 TForm 的派生类,然后在新建的窗体中总是从这个类派生,
>>一切问题不都解决了吗?
我当然知道
TMyBaseForm = class(TForm) // 我的"TObject级"Form,已经做好
希望:
TMyForm1 = class(TMyBaseForm1)
TMyForm2 = class(TMyBaseForm1)
......
但问题是如何让TMyForm1, TMyForm2,....等等我所有的Form均以TMyBaseForm为父类
准备:
已经在frmMyBase.pas单元内定义了TMyBaseForm
方案1:
将自定义的TMyBaseForm加入Repository的Form页面,Title设为MyBaseForm,
并选上New Form复选框(设为New Form默认)
但是:1)每次用New Form快捷图标生成的却是
TMyBaseForm = class(TForm),显然是copy了TMyBaseForm,不符合我的要求
2)迫不得以,每次File=>New=>Other=>选Form页面=>
=>选MyBaseForm=>从Copy,Inherit,Use三个选项中选Inherit=>OK
你说烦不烦???
方案2:
手动法
1)在project的dpr文件中加入Use frmMyBase in 'frmMyBase.pas'
2)在新建的Form中Use子句中加入对frmMyBase的引用,然后
将TForm1=Class(TForm)人为地改为:
TForm1=Class(TMyBaseForm)
结果:检查对应的dfm, view as text 发现
object Form1: TForm1
.....
Font.Name = 'MS Sans Serif'
.....
(显然不是我要的Font, 所以判断没有真正继承TMyBaseForm)
结论:行不通
方案3:
封装一个自己的 Form 组件,如何封装?如何使用?这是小雨哥提的建议,只是
小雨哥你自己做过吗?
初步结论:行不通!