Einzelnen Beitrag anzeigen

Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#6

Meine Lösung

  Alt 1. Mai 2003, 19:43
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
Martin Schaefer
  Mit Zitat antworten Zitat