Ich habe Formular mit MainMenu und ich möchte abfangen, wenn der Benutzer einen Befehl aus einem Menü auswählt. Dies funktioniert in Delphi:Problem mit WM_COMMAND auf Lazarus/FPC
type
TForm1 = class(TForm)
... // Memo and MainMenu created
protected
procedure WMCommand(var Info: TWMCommand); message WM_COMMAND;
end;
procedure TForm1.WMCommand(var Info: TWMCommand);
begin
if (Info.ItemID < 10) then
Memo1.Lines.Add('WMCommand ' + IntToStr(Info.ItemID));
end;
In MainMenu ich einige Elemente hinzugefügt und wenn ich diese Elemente aus dem Menü wählen Sie dann meine Memo1 ist gefüllt mit:
WMCommand 2
WMCommand 3
WMCommand 3
WMCommand 2
WMCommand 5
...
ich portiert diese Anwendung zu FPC/Lazarus , aber es scheint, dass WM_COMMAND Handler nicht aufgerufen wird! Als ich den Haltepunkt in TForm1.WMCommand
in Delphi setzte, dann wurde Delphi viele Male gestoppt, bevor das Hauptformular erschien. Lazarus stoppte niemals an diesem Haltepunkt. Ich denke, etwas ist mit WM_COMMAND in Lazarus gebrochen, aber vielleicht weiß ich nichts. Irgendeine Idee?
Ich benutze Lazarus 0.9.28.2 Beta mit FPC 2.2.4 auf WinXP.
EDIT:
Winspector Mit überprüfte ich, dass MainMenu WM_COMMAND erzeugt:
WM_COMMAND
Code: 0
Control ID: 2
Control HWND: 0x00000000
Message Posted
Time: 09:37:14.0968
Ich denke, es gibt Fehler in Lazarus/FPC in WM_COMMAND Nachricht Verfahren Handhabung und ich berichtete sie: http://bugs.freepascal.org/view.php?id=15521
Ist es nicht vielleicht ein Fehler/fehlende Funktion, dass LM_COMMAND und CN_COMMAND auch nicht funktionieren, ist das Capturen auf der portablen Ebene des Ereignisses auch nicht möglich? –