Delphi 使用Child';s事件
我有一个自定义组件(TScrollBox),当它被放到表单上时,它会在滚动框中添加一个标签。如何禁用ScrollBox的事件(onClick、OnMouseDown、etc..),而代之以启用子项(Tlabel)的事件Delphi 使用Child';s事件,delphi,delphi-xe2,Delphi,Delphi Xe2,我有一个自定义组件(TScrollBox),当它被放到表单上时,它会在滚动框中添加一个标签。如何禁用ScrollBox的事件(onClick、OnMouseDown、etc..),而代之以启用子项(Tlabel)的事件 t控件的事件处理程序声明为受保护和动态。在派生类中使用override指令重新声明它们-请参阅 还有很多其他的页面 但是:如果你想实现你自己的新事件,你必须这样做: ... private fNewEvent:TNotifyEvent; pro
t控件
的事件处理程序声明为受保护
和动态
。在派生类中使用override
指令重新声明它们-请参阅还有很多其他的页面 但是:如果你想实现你自己的新事件,你必须这样做:
...
private
fNewEvent:TNotifyEvent;
procedure setNewEvent(notify:TNotifyEvent);
function getNewEvent:TNotifyEvent;
procedure DoOnNewEvent;
....
published
property OnNewEvent:TNotifyEvent read getNewEvent write setNewEvent;
i、 e.-您需要实现方法类型的属性,如内置于Delphi中的TNotifyEvent
。如果需要,您也可以创建自己的。如果您想在IDE中像其他Delphi组件的事件一样查看您的事件,则必须将其声明为published
然后:在“新组件实现”部分中,执行以下操作:
procedure TMyclass.DoOnNewEvent;
begin
if assigned (fNewEvent) then
begin
....doStuff...
fNewEvent(self);
end;
end;
当要控制的事件在代码中“发生”时,调用DoOnNewEvent
,这样分配给fNewEvent
的函数将在代码中的该点被调用。(这通常被称为回调
——当模块a中的某个“发生”时,它会回调到模块B,让它知道它发生了,等等。)
如果您想定义新的GUI行为,您必须检查您感兴趣的控件,并了解如何捕获它们的实际“物理”事件,即滚动条何时滚动,鼠标何时单击,以及何时调用DoOnNewEvent
方法。(这通常涉及检查进入应用程序的Windows消息、“消息破解”等-这些消息通知应用程序“外部世界”中发生的情况。)
在使用者类中,例如,在放置滚动框的主窗体中,一旦成功发布新事件,您将在IDE中的新组件上看到您的事件,并在使用者类中分配它并定义您想要它的行为,就像IDE中的任何其他事件一样
查看一个简单组件的VCL源代码,更好地了解它的外观
但是:只有当您确实需要自己的新发布的事件时,才可以这样做,因为覆盖父事件不足以满足您的需要。用于
t控件的事件处理程序声明为受保护的和动态的。在派生类中使用override
指令重新声明它们-请参阅
还有很多其他的页面
但是:如果你想实现你自己的新事件,你必须这样做:
...
private
fNewEvent:TNotifyEvent;
procedure setNewEvent(notify:TNotifyEvent);
function getNewEvent:TNotifyEvent;
procedure DoOnNewEvent;
....
published
property OnNewEvent:TNotifyEvent read getNewEvent write setNewEvent;
i、 e.-您需要实现方法类型的属性,如内置于Delphi中的TNotifyEvent
。如果需要,您也可以创建自己的。如果您想在IDE中像其他Delphi组件的事件一样查看您的事件,则必须将其声明为published
然后:在“新组件实现”部分中,执行以下操作:
procedure TMyclass.DoOnNewEvent;
begin
if assigned (fNewEvent) then
begin
....doStuff...
fNewEvent(self);
end;
end;
当要控制的事件在代码中“发生”时,调用DoOnNewEvent
,这样分配给fNewEvent
的函数将在代码中的该点被调用。(这通常被称为回调
——当模块a中的某个“发生”时,它会回调到模块B,让它知道它发生了,等等。)
如果您想定义新的GUI行为,您必须检查您感兴趣的控件,并了解如何捕获它们的实际“物理”事件,即滚动条何时滚动,鼠标何时单击,以及何时调用DoOnNewEvent
方法。(这通常涉及检查进入应用程序的Windows消息、“消息破解”等-这些消息通知应用程序“外部世界”中发生的情况。)
在使用者类中,例如,在放置滚动框的主窗体中,一旦成功发布新事件,您将在IDE中的新组件上看到您的事件,并在使用者类中分配它并定义您想要它的行为,就像IDE中的任何其他事件一样
查看一个简单组件的VCL源代码,更好地了解它的外观
但是:只有当您确实需要自己的新发布的事件时,才可以这样做,因为覆盖父事件不足以满足您的需要。用于t控件的事件处理程序声明为受保护的和动态的。在派生类中使用override
指令重新声明它们-请参阅
还有很多其他的页面
但是:如果你想实现你自己的新事件,你必须这样做:
...
private
fNewEvent:TNotifyEvent;
procedure setNewEvent(notify:TNotifyEvent);
function getNewEvent:TNotifyEvent;
procedure DoOnNewEvent;
....
published
property OnNewEvent:TNotifyEvent read getNewEvent write setNewEvent;
i、 e.-您需要实现方法类型的属性,如内置于Delphi中的TNotifyEvent
。如果需要,您也可以创建自己的。如果您想在IDE中像其他Delphi组件的事件一样查看您的事件,则必须将其声明为published
然后:在“新组件实现”部分中,执行以下操作:
procedure TMyclass.DoOnNewEvent;
begin
if assigned (fNewEvent) then
begin
....doStuff...
fNewEvent(self);
end;
end;
当要控制的事件在代码中“发生”时,调用DoOnNewEvent
,这样分配给fNewEvent
的函数将在代码中的该点被调用。(这通常被称为回调
——当模块a中的某个“发生”时,它会回调到模块B,让它知道它发生了,等等。)
如果您想定义新的GUI行为,您必须检查您感兴趣的控件,并了解如何捕获它们的实际“物理”事件,即滚动条何时滚动,鼠标何时单击