Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Message-Behandlung an eigene Klasse abgeben?


FloFri - Do 09.10.03 08:14
Titel: Message-Behandlung an eigene Klasse abgeben?
Hi!
Ich habe mal wieder eine Frage:

Gibt es eine Möglichkeit (möglichst einfach) die Behandlung aller selbst definierten Messages, die ein Fenster bekommt, an eine eigene Klasse weiterzugeben?


MSCH - Sa 18.10.03 10:02

ja. Hier ein Beispiel:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
const
  wm_SelfMessage_1 = wm_user + 1;
  wm_SelfMessage_2 = wm_user + 2;
  ...

type
  tMyMessageform = CLass(TForm)
  public
    procedure WMSelfMessage_1(var Msg:TMessage);Message wm_SelfMessage_1;
    procedure WMSelfMessage_2(var Msg:TMessage);Message wm_SelfMessage_2;
end;


jetzt die Implementierung (spar ich mir)

Nun Musst du nur deine MainForm statt von TForm, von TMyMessageForm ableiten.

grez
msch


maxk - Sa 18.10.03 21:11

Oder meinst du eine Klasse von TComponent? Dann geht es so:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure MyWndProc(var Msg:TMessage);
begin
 inherited;
end;

constructor TMyComponent.Create(AOwner:TComponent);
begin
 (AOwner as TForm).DefWndProc:=@MyWndProc;
end;

Dann gehen alle Nachrichten an deine Prozedur. (inherited nicht Vergessen)