Hallo,
Hier was für Message-Spazialisten unter NT:<p>
Ich möchte eine von TPanel abgeleitete Komponente bauen,
die auf eine selbstgebaute Message reagiert.<br>
Diese Message wird in einer globale Unit im Initialisierungsteil erzeugt:<p>
<pre>
implementation
uses windows;
const
szPrivateMsgString='irgendwaseindeutiges';
initialization
GlobalerMessagewert := RegisterWindowMessage( szPrivateMsgString);
end.
</pre>
In der Komponente selbst verwende ich diesen Wert in der überschriebenen WndProc-Procedure:<p>
<pre>
procedure TMsgPanelPTV.WndProc( var Message: TMessage);//override !!
begin
if (Message.Msg = GlobalerMessagewert) then
begin
Caption := DateTimeToStr(Now);
end;
inherited WndProc(Message);
end;
</pre>
Das Programm dass diese Message 'lostritt' enthält natürlich die Unit mit dem 'GlobalerMessagewert' und arbeitet so:<p>
<pre>
dwRecipient := BSM_ALLCOMPONENTS;//BSM_APPLICATIONS;
BroadcastSystemMessage(BSF_POSTMESSAGE, @dwRecipient,
GlobalerMessagewert, wMsgValue, 0);
</pre>
Eigentlich sollte sich beim Auftreten der Message die Caption des abgeleiteten Panels ändern.<br>
Praktisch tut sie das aber nicht.<br>
Ein <b>Formular</b> dessen WndProc-Routine ich genauso überschrieben habe, reagiert richtig.<br>
Warum das Eigenbau-Panel nicht?<p>
Stimmt der dwRecipient - wert nicht?<br>
Der Wert NULL, der sich ganz nett anhört ('If this parameter is NULL, the function broadcasts to all components', laut Windows-Hilfe), führt zur Fehlermeldung, dass ein Konvertierungsfehler aufgetreten ist.<br>
Wer kann mir helfen?<br>
Gruß an alle, Alex
Hier was für Message-Spazialisten unter NT:<p>
Ich möchte eine von TPanel abgeleitete Komponente bauen,
die auf eine selbstgebaute Message reagiert.<br>
Diese Message wird in einer globale Unit im Initialisierungsteil erzeugt:<p>
<pre>
implementation
uses windows;
const
szPrivateMsgString='irgendwaseindeutiges';
initialization
GlobalerMessagewert := RegisterWindowMessage( szPrivateMsgString);
end.
</pre>
In der Komponente selbst verwende ich diesen Wert in der überschriebenen WndProc-Procedure:<p>
<pre>
procedure TMsgPanelPTV.WndProc( var Message: TMessage);//override !!
begin
if (Message.Msg = GlobalerMessagewert) then
begin
Caption := DateTimeToStr(Now);
end;
inherited WndProc(Message);
end;
</pre>
Das Programm dass diese Message 'lostritt' enthält natürlich die Unit mit dem 'GlobalerMessagewert' und arbeitet so:<p>
<pre>
dwRecipient := BSM_ALLCOMPONENTS;//BSM_APPLICATIONS;
BroadcastSystemMessage(BSF_POSTMESSAGE, @dwRecipient,
GlobalerMessagewert, wMsgValue, 0);
</pre>
Eigentlich sollte sich beim Auftreten der Message die Caption des abgeleiteten Panels ändern.<br>
Praktisch tut sie das aber nicht.<br>
Ein <b>Formular</b> dessen WndProc-Routine ich genauso überschrieben habe, reagiert richtig.<br>
Warum das Eigenbau-Panel nicht?<p>
Stimmt der dwRecipient - wert nicht?<br>
Der Wert NULL, der sich ganz nett anhört ('If this parameter is NULL, the function broadcasts to all components', laut Windows-Hilfe), führt zur Fehlermeldung, dass ein Konvertierungsfehler aufgetreten ist.<br>
Wer kann mir helfen?<br>
Gruß an alle, Alex
Comment