Delphi新手问题,消息函数的用法
来源:百度知道 编辑:UC知道 时间:2024/07/04 13:09:28
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
private
procedure my_MsgProcess(var Msg: TMsg); override;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure Tform1.my_MsgProcess(var Msg: TMsg);
begin
//
end;
end.
//===============================================================
{
结果出现
[Error] Unit1.pas(12): Method my_MsgProcess' not found in base class
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
}
问,应该如何修改?
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
private
procedure my_MsgProcess(var Msg: TMsg); override;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure Tform1.my_MsgProcess(var Msg: TMsg);
begin
//
end;
end.
//===============================================================
{
结果出现
[Error] Unit1.pas(12): Method my_MsgProcess' not found in base class
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
}
问,应该如何修改?
procedure my_MsgProcess(var Msg: TMsg); override;
为什么要加override?
直接去掉OVERRIDE.就可以了
在override时,如果override的是procedure,则加上关键字inherited; 就会执行父类同名procedure的所有过程,然后再执行子类中特有的过程。
override是用于覆盖基类同名方法的的关键字。你这个消息是自定义的,基类中当然没有相应的方法名,所以会提供 not found in base class.
如果你想捕捉特定的消息,要使用关键字message SOME_MESSAGE
procedure my_MsgProcess(var Msg: TMessage); message CM_MYMESSAGE;