Показать сообщение отдельно
  #4  
Старый 11.04.2009, 06:02
Erl Erl вне форума
Прохожий
 
Регистрация: 01.04.2009
Сообщения: 6
Репутация: 10
По умолчанию

Цитата:
Сообщение от Nyctos Kasignete
Уберите callback-функцию EnumProc из списка методов формы. Когда это будет обычная функция, а не метод, ошибка должна исчезнуть. =)

удалил stdcall; но проблемма не исчезла
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,Menus;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  procedure WinMSG(var Msg:TMsg;var Handled:Boolean);
  procedure DoWhatEver;
  Function EnumProc(h:HWND):BOOL;

  end;

var
  Form1: TForm1;

implementation
{$R *.dfm}
const
ItemID=99;

Procedure TForm1.WinMSG(var Msg:TMsg;var Handled:Boolean);
begin
  if
    Msg.message=WM_SYSCOMMAND then
      if Msg.wParam = ItemID then
        DoWhatEver;
end;

Function TForm1.EnumProc(h:HWND):BOOL;
begin
Application.OnMessage:=WinMSG;
AppendMenu(GetSystemMenu(h,false),MF_SEPARATOR,0,'');
AppendMenu(GetSystemMenu(h,False),MF_BYPOSITION,ItemID,'My Menu');
EnumProc:=true;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
EnumWindows(@EnumProc,0);//<---ошибка тут не исчезла
end;

procedure TForm1.DoWhatEver;
begin
ShowMessage('00000');
end;
end.

вот собственно ошибки которые возникают при компиляции:
[Error] Unit1.pas(58): Variable required
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
Ответить с цитированием