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'
}

问,应该如何修改?

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;