Hallo Wolfgang, hallo Chris
erst mal Danke für die Info´s. Wolgang, Du hast natürlich recht. Ein direkter Aufruf auf die
Unit des
MDI-Formular genügt beim schließen des Clientfensters vollkommen.
Chris muß allerdings geahnt haben wo ich hin wollte. Meine Client-
Formulare werden dynamisch erzeugt und hinterher vom Hauptformular freigegeben. Da der direkte Aufruf "Gib mich frei" beim Rücksprung ins tiefe Nirwana geht ist die Message-Variante bei mir passend.
Was nun entstanden ist hänge ich gerade noch an:
// Definition -
Unit
interface
uses messages;
Type TMessage = record
Msg: Cardinal;
WParam: Longint;
LParam: Longint;
Result: Longint
end;
Const
UM_TransferData = WM_USER + 200;
implementation end.
// Senden
Unit
inteface
procedure InternalWindowMessage_Send
( const WParam : integer;
const LParam : integer);
implementation
procedure TForm2.InternalWindowMessage_Send
( const WParam : integer;
const LParam : integer);
var
hReceiver : LongInt;
begin
hReceiver := FindWindow('Form1', Nil);
If IsWindow( hReceiver ) Then
Begin
PostMessage( hReceiver , UM_TransferData, WParam, LParam );
End;
End;
// oder im Client Window zum Senden an das
MDI-Window
procedure TForm2.InternalWindowMessage_Send
( const WParam : integer;
const LParam : integer);
var
hReceiver : LongInt;
hReceiverName : string;
begin
hReceiverName := Owner.ClassName; { wandelt short in longstring }
hReceiver := FindWindow( PChar( hReceiverName ), Nil);
If IsWindow( hReceiver ) Then
Begin
PostMessage( hReceiver , UM_TransferData, WParam, LParam );
End;
End;
// Empfangen
Unit
inteface
Procedure Receive_InternalWindowMessage( Var msg: TMessage );
message UM_TransferData;
implementation
Procedure TForm1.Receive_InternalWindowMessage
( var msg: TMessage );
Begin
Case msg.WParam of
0 : Begin
Select_MDI_Form( msg.LParam );
End;
1 : Begin
// zweite Aufgbe ...
End;
End; {Case}
End;
Soweit zu den Taten des Tages..
..
Grüße // Martin