继承的窗体,新属性不能编辑!!!(50分)

  • 主题发起人 主题发起人 huazhb
  • 开始时间 开始时间
H

huazhb

Unregistered / Unconfirmed
GUEST, unregistred user!
我继承一个窗体,新加一个属性并published,但是在属性编辑器中不可见,同样的问题也
出现在Frame和DataModule上,请问能解决吗?
 
没有高手指点一下吗?
 
重新编译bpl、dcu覆盖老的
 
不可能,我看看你的源码。
你留下mail和qq
 
兄弟门,谢谢你们的回复,我想你们最好自己试一下。新建一个form,published一个新属性,
看看结果!!保证不能在inspertor中看见!!
 
你的意思是啥啊?
新建一个FORM,在 Published 部分写入一个属性?
这样子怎么可能在 Object Inspertor 里看得到呢?
这样子吧:
建一个新的组件,父是 TForm ,
然后在这个新的控件里加入想在 Object Inspertor 里看到的属性,
最后你要用的不是 TForm ,而是经过你扩展的 Form ,这时才可以的。。

怎么可以在你动态地写一个属性到 Published 里就可以在 Object Inspertor 里
看到呢?不知我把你的意思理解错没有?
 
必须是dcu
 
darnis兄,你的理解是对的。但是照你的方法,我作出了一个控件,只能生存在其他载体上,
而我希望我新生成的窗体能够象Delphi自己的TForm一样使用。请再指点!
 
:)
要怎么实现,我现在也发现,说起来简单,但是实现起来并不容易,
我想应该在新FORM控件的 Create 方法里做文章。。
如果在实现上花费的精力比起你直接用(只是多写一点代码而已)时,
要多得多的话,你何必又要一定这样子做呢?

如果真要这样的话,应该在一些大的控件集里可以找到一些例子。:)
 
呵呵,看来终于找到能够明白这个问题的同志了!!因为不光是一个Form的问题,其他的
如DataModule,Frame都存在这样的问题。Borland自己的TForm继承自TCustomForm只是
publishied了一些属性,可以在inspertor中编辑,而我把他的代码拷贝过来也没有用!!真
想问问Borland 公司的人他们是怎么作的!!这绝对是一个非常有用的技术。我们在开发一个
系统的框架,继承了自己的窗体,当然有一些特殊的属性,如果不能在inspertor中编辑,
那真是浪费了Delphi的IDE框架阿!!
 
给TForm的子类添加Published属性

1、给Tform的子类添加Published属性

2、把Form添加到Object Repository (对象仓库)

3、添加这个窗体到一个设计时包中。

4、添加uses DsgnIntf(这里指Delphi5,在Delphi 6 改成DesignIntf,DesignEditors),…到单元中,并加入注册代码如下:

procedure Register;

begin
RegisterCustomModule(TMyForm, TCustomModule);
end;

5、最后在项目中从Repository中继承你添加的TmyForm,新的Published属性会显示在属性编辑器中。

当然还有更加复杂的创建方法,就是写一个模块创建专家,使用CreateModuleEx函数和不同的流机制来实现,但由于比较难,并且没有什么特殊的优势,这里就不介绍了
 
后退
顶部