怎么定义自己的Frame类,并且能够在属性列表框中公开新增的事件(200分)

  • 主题发起人 主题发起人 superhero
  • 开始时间 开始时间
S

superhero

Unregistered / Unconfirmed
GUEST, unregistred user!
自己从TFrame继承一个TmyFrame,并且新增了一个事件
TmyFrame = class(TFrame)
protected
FOnCreate: TNotifyEvent;
published
property OnCreate: TNotifyEvent read FOnCreate write FOnCreate;
end;
但我通过file->new->other...选择本项目所属TabPage中的TmyFrame这一Frame后
OnCreate事件并不在属性列表的事件表中列出来,实际上如果新增的是一个数据属性倒无所谓,该怎么访问就怎么访问,但是事件就不能处理了,没有地方让OnCreate重指向某一处理
过程。

把TmyFrame做成控件的方法也试过,虽然能够列出来,但是必须依附在别的窗口上,不能做成单独的Frame

实际上这样的应用还有很多,例如我想在做Delphi项目的时候所有的Form都来自我自己定义的一个TmyForm,这其中可以设置一些共性的东西,而delphi本身提供的TForm隐藏掉了
很多windows message,只提供了部分事件让我们来写,总感觉不爽

各位牛人又没有碰到过,都是怎么解决的?

我现在应急做法是定义各事件对应的方法(如myCreate),但是加上virtual关键字,并且在constructor
create中指定OnCreate为此方法
子类中如果要在OnCreate事件中写代码,在子类中声明myCreate方法,加上override关键字
实现中写上相应代码。
 
你為什麼要找OnCreate事件,因為這是一個默認的事件,根本就不是新增的。
 
2 springson
希望你理解意思并且真正做过再认真回答别人的问题
我买的盗版delphi 6下TFrame没有OnCreate
 
盜版沒有,用你後在的方法加上去指向這個事件就行了。也可以用下面的
frame:=TmyFrame.create(null)

frame.干什麼事都行。
frame.show;
 
在属性列表中显示是另一回事.就象给FORM1加一些PUBLISHED也不会显示在列表中. 作为控件安装了才会有.

可以重载TFrame的Create方法, 增加调用ONCREATE的过程. 其他的也类似.
 
我现在就是这么干的,你们也是这么做的?
最终结论就是只能这么做?
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1364162
有關adoquery事件繼承的寫法?
参看一下里面人家的回答吧,我认为方法是一样的
 
看来各位没看懂题意,你们把问题想简单了。
说白了我就是想在delphi中只要New一个Form或者Frame,都自动替换成
我自己定义的Form或者Frame,而不用用户自己再去手工再把各种需要的事件
指定一遍
不知道这样说各位明白了吗

还有最近想要把自己定义的一个类保存到本地文件中(类似TForm写到本地的.dfm文件),程序中动态读出数据
但是类内嵌套子对象,不知道如何连子对象数据也写进去
 
后退
顶部