Thema: Delphi Halb VCL, halb nonVCL

Einzelnen Beitrag anzeigen

tommie-lie
(Gast)

n/a Beiträge
 
#9

Re: Halb VCL, halb nonVCL

  Alt 28. Apr 2004, 21:16
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.
  Mit Zitat antworten Zitat