Ich frage mich, was an dem Beispiel aus der Delphi-Hilfe so falsch gelesen werden kann...
Das Message muss in die Deklaration der Methode, nicht in deren Implementation.
Also suchst du ganz oben in der
Unit nach dem "type", was irgenwo gefolgt wird von der Struktur deiner TForm1. Dort ergänzt du wie bei jeder anderen Methode auch deinen eigenen Funktionsnamen und machst dahinter ein " message WM_TEST;".
Die Implementation erfolgt dann ohne "message".
Und wenn du direkt auf lParam und wParam zugreifen willst, solltest du nicht TWMChar nehmen, sondern die Basis"klasse" TMessage, die leitet nämlich nur die Felder der Windows-Message weiter, während Delphi bei den diversen TWMxxx-Records die Message bereits entsprechend vorbereitet und die Informationen passend weiterleitet. (Zugegeben, sowas steht nicht in der Hilfe, aber dafür der Rest...)
Und jetzt schütten wir erlangtes Wissen in einen großen Topf voll Gemüsebrühe und rühren kräftig um, bei kleiner Flamme kurz aufköcheln lassen, fertig zum Servieren:
Delphi-Quellcode:
unit Unit1;
interface
const
WM_TEST = WM_USER + 1;
{...}
type
TForm1 =
class(TForm)
private
{ Private declarations }
public
{ Public declarations }
procedure OnTest(
var Message: TMessage);
message WM_TEST
end;
{...}
implementation
{...}
procedure TForm1.OnTest(
var Message: TMessage);
begin
ShowMessage(IntToStr(
Message.lParam) + '
- ' + IntToStr(
Message.wParam));
end;
end.