[fpc-pascal]Message methods - DefaultHandler

Mr. Ego mr.ego at centrum.cz
Tue Jun 8 15:12:22 CEST 2004


Hello,
     I have some problem with DefaultHandler method. When I pass a message for which is special handler defined everything is ok, but when it should be passed to DefaultHandler (which is overriden) it does nothing. Here is some sample code:

{$MODE OBJFPC}
type TMyMessage = record
       MSGID : cardinal;
       text : string;
       end;
        
     TTest=class(TObject)
       constructor Init;
       procedure Handle (var MyMessage : TMyMessage); Message 1; virtual;
       procedure DefaultHandler(var MyMessage : TMyMessage); virtual;
       destructor Done;
       end;
 
constructor TTest.Init;
begin
end;
 
procedure TTest.Handle (var MyMessage : TMyMessage);
begin
  writeln(MyMessage.text);
end;
 
procedure TTest.DefaultHandler(var MyMessage : TMyMessage);
begin
  writeln(MyMessage.Text);
end;
 
destructor TTest.Done;
begin
end;
 
var MyMessage : TMyMessage;
    Moje : TTest;
 
begin
Moje:=TTest.Init;
MyMessage.MSGID:=1;
MyMessage.text:='Hello, world';
Moje.Dispatch(MyMessage); {this is handled by TTest.Handle method}
MyMessage.MSGID:=2;
Moje.Dispatch(MyMessage); {this should be handled by DefaultHandler, but it isn't}
Moje.Done;
end.

It should write two times the "Hello world message". For the first time from method TTest.Handle, and for the second time from method TTest.DefaultHandler. But TTest.DeafultHandler doesn't do anything (it writes only one message).

Could anybody help me, please?


Pavel B.








More information about the fpc-pascal mailing list