Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Form mit Button auf anderer Form schließen (https://www.delphipraxis.net/174283-form-mit-button-auf-anderer-form-schliessen.html)

Blubbel 13. Apr 2013 22:28

Delphi-Version: 5

Form mit Button auf anderer Form schließen
 
Hallo Freunde der Nacht :)

ich habe insgesamt 3 Formen, 2 davon sind eingabe-Dialoge.
Mainform ruft die Form "eingabe" auf. Diese ruft, wenn eine Eingabe getätigt wurde, die Form "Bearbeiten" auf. Wenn ich bei der form "Bearbeiten" einen Button klicke, soll sich die Form "Eingabe" Schließen.

Ich habe es Schon mit "Form3.close" und "Form3.Destroy" versucht. Beides funktioniert nicht.

Vielleicht habt ihre eine Idee... Die nicht ganz so kompliziert ist ;)

Naja, das kann ja wohl nicht so schwer sein ;) danke euch schonmal

edit//

gerade nochmal release probiert... geht auch nicht
Zitat:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt *.exe ist eine Exception der Klasse EAccessViolation mit der Meldung 'Zugriffsverletzung bei Adresse 004CB70F in Modul '*.exe'. Lesen von Adresse 00000258' aufgetreten.

Bummi 13. Apr 2013 23:08

AW: Form mit Button auf anderer Form schließen
 
Mit welchem Owner wird Form3 erzeugt (oder ist es automatisch erzeugt)?
Wir wird Form3 aufgerufen Showmodal oder Show?

Blubbel 14. Apr 2013 09:08

AW: Form mit Button auf anderer Form schließen
 
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

Sir Rufo 14. Apr 2013 09:22

AW: Form mit Button auf anderer Form schließen
 
Zitat:

Zitat von Blubbel (Beitrag 1211438)
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

Delphi-Quellcode:
Form3
ist lediglich eine globale Variable und kein irgendwie geartetes god-like Gedöns, was dir den Zugriff auf alle Instanzen von
Delphi-Quellcode:
TForm3
gibt.

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

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

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

Diese Methode von
Delphi-Quellcode:
TForm3
wird dann dem Event von
Delphi-Quellcode:
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;

Blubbel 14. Apr 2013 11:54

AW: Form mit Button auf anderer Form schließen
 
Danke dir, werde es am nachmittag oder abend direkt ausprobieren.

Was würde ich bloß ohne euch machen ;)

Blubbel 14. Apr 2013 15:00

AW: Form mit Button auf anderer Form schließen
 
Sowas doofes habe es ganz einfach Lösen können. Wollte bevor ich den vorgeschlagenen Weg gehe etwas ausprobieren.
Delphi-Quellcode:
  with GForm do
  try
    if ShowModal = mrOK then
    begin
      Form1.CreateChartLines;
    end;
  finally
    FreeAndNil(GForm);
    self.Close;
  end;
Dort rufe ich erst die Form2 auf und im finally schließe ich Form3 einfach.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz