Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Form mit Button auf anderer Form schließen

  Alt 14. Apr 2013, 10:22
Delphi-Quellcode:
  lForm := TForm3.Create(nil);

  with lForm do
  try
    if ShowModal = mrOK then
    begin
    end;
  finally
    FreeAndNil(lForm);
  end;
die form wird von der mainform aufgerufen.. will sie jediglch auf der form2 schließen
Form3 ist lediglich eine globale Variable und kein irgendwie geartetes god-like Gedöns, was dir den Zugriff auf alle Instanzen von TForm3 gibt.

Wenn du also eine Instanz von TForm3 erstellst und willst diese von irgendwo behandeln/zugreifen, dann solltest du diese Instanz-Referenz auch weitergeben.

Wenn du eine Instanz von TForm2 auf die gleiche Art und Weise erzeugst, dann ist das auch nicht Form2 sondern eben eine Instanz von TForm2 (gleiches Spiel wie mit Form3 ).

Am klügsten wird es wohl sein, ein Event in TForm2 und eine passende Methode in TForm3 zu implementieren.

Diese Methode von TForm3 wird dann dem Event von TForm2 übergeben und dann bei Bedarf aufgerufen.

Delphi-Quellcode:
TForm3 = class( TForm )
public
  procedure CallbackMethod( Sender : TObject );
end;

TForm2 = class( TForm )
private
  FOnCallbackEvent : TNotifyEvent;
protected
  procedure DoCallback;
public
  property OnCallbackEvent : TNotifyEvent read FOnCallbackEvent write FOnCallbackEvent;
end;

procedure TForm2.DoCallback;
begin
  if Assigend( OnCallbackEvent ) then
    OnCallBackEvent( Self );
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (14. Apr 2013 um 10:27 Uhr)
  Mit Zitat antworten Zitat