unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure WMNCHitTest(var msg : TMessage); message WM_NCHITTEST;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
  close;
end;procedure WMNCHitTest(var msg : TMessage);
begin
  inherited;             //编译到这里的时候就出错了
  msg.Result:=HTCLIENT;
end;end.
以上代码是现实禁止窗体右上角各按钮,我是书上一模一样写的,但是为什么会出错呢?请赐教
而且不仅是这个程序在调用消息响应函数的时候出错,在调用其它消息响应函数的时候,也是这个地方编译的时候出错
出错信息为:
[Error] Unit1.pas(34): This form of method call only allowed in methods of derived types
[Error] Unit1.pas(12): Unsatisfied forward or external declaration: 'TForm1.WMNCHitTest'
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'

解决方案 »

  1.   

    type
      TForm1 = class(TForm)
        Button1: TButton;  private    //---------------------改
        { Private declarations }
        procedure WMNCHitTest(var msg : TMessage); message WM_NCHITTEST;
        procedure Button1Click(Sender: TObject);
      public
        { Public declarations }
      end;
    procedure TForm1.WMNCHitTest(var msg : TMessage);   //---------------------改
    begin
      inherited;             //编译到这里的时候就出错了
      msg.Result:=HTCLIENT;
    end;