Hi,
so funktiert das. Form2 ist zwar erzeugt aber noch nicht dargestellt.
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var
TestHandle: HWND;
begin
// Erstellen
TestHandle:= AllocateHWnd( form2.GetMessages); // Übergeben wird die Methode zum Empfangen der Nachricht
SendMessage(TestHandle, SET_LNG_CMD, 0, 0 );
// Freigeben
DeallocateHWnd( TestHandle);
end;
public
{ Public-Deklarationen }
procedure GetMessages(var msg: Tmessage); message SET_LNG_CMD;
procedure TForm2.GetMessages(var msg: Tmessage);
begin
if msg.msg = SET_LNG_CMD then
begin
ShowMessage('Fenster 2');
end;
end;
Jetzt reagiert das Fenster obwohl es noch nicht angezeigt wird.
Zum Hintergrund:
Wir hatten die Sprachabhängigen Texte usw immer im onactivate des entsprechenden Fensters geladen.
Das ganze wurde aus Performancegründen so gemacht. Unsere Fenster sind all modal.
Vorteil:
Jedes Fenster ist dann wenn es gebraucht wird auf dem aktuellen Stand (siehe sprachwechsel oder so).
Nachteil:
Ich muss den Code (unnötigerweise) immer wieder durchlaufen (jedesemal wenn ich das fenster öffne)
Ich plane das Ganze zentral über Botschaften zu initiieren und zwar dann wenn das Fenster erzeugt ist und auch wenn die Sprache gewechselt wird.
Danke an alle
Grüsse
Rainer