Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Formen öffnen und schließen (https://www.delphipraxis.net/130421-formen-oeffnen-und-schliessen.html)

otto06 8. Mär 2009 09:28


Formen öffnen und schließen
 
Ich habe folgendes Problem:

ich möchte in der Form1 über Buttons wählen, ob ich Form2 oder Form 3 öffnen möchte.
Nun habe ich mir folgendes überlegt:

Delphi-Quellcode:
form1.close;
form2.show;
end;

doch irgendwie schließt sich dann alles wenn Form1 geschlossen wird. Warum? Muss man das irgendwie unabhängig machen?

Dann wollte im Gegenzug wieder, dass wenn Form2 oder Form3 geschlossen wird wieder Form1 erscheint und man erneut wählen kann.

Vielen Dank schonmal für eure antworten. :-D

jaenicke 8. Mär 2009 09:31

Re: Formen öffnen und schließen
 
Wenn das Hauptformular geschlossen wird, dann schließt du damit das Programm.

Wie wäre es mit Form1.Hide, du willst doch Form1 nicht schließen sondern verstecken. ;-)

Um Form1 danach wieder anzuzeigen könntest du das so machen:
Delphi-Quellcode:
Form1.Hide;
Form2.ShowModal;
Form1.Show;
Meistens ist es aber nicht besonders sinnvoll das Hauptfenster auszublenden, da das zu Verwirrung führen kann.

otto06 8. Mär 2009 09:51

Re: Formen öffnen und schließen
 
Vielen Dank für die schnelle antwort! Läuft!

Aber was heißt form2.showmodal; ?

Das gibt es bei mir eine Fehlermeldung: Aus einem sichtbaren kann kein modales gemacht werden.
Aber wenn ich es weg lasse läuft es auch. :?:

jaenicke 8. Mär 2009 10:38

Re: Formen öffnen und schließen
 
Zitat:

Zitat von otto06
Aber was heißt form2.showmodal; ?

Das sorgt dafür, dass die Abarbeitung der Befehle nach diesem Befehl erst weitergeht, wenn das Fenster wieder geschlossen wird. So kannst du direkt nach diesem Befehl Form1 wieder anzeigen.

Zitat:

Zitat von otto06
Das gibt es bei mir eine Fehlermeldung: Aus einem sichtbaren kann kein modales gemacht werden.
Aber wenn ich es weg lasse läuft es auch. :?:

Dann war das Fenster aus irgendeinem Grund schon sichtbar als du ShowModal aufgerufen hast.

Fussel9 22. Jun 2009 17:21

Hi habe das selbe Problem, aber ich weiß nicht warum das Fenster schon vorher sichtbar war, soll ich auf die OnCreate einfach nen Form2.Free setzten, oder wäre das nicht so gut?

Fussel9 22. Jun 2009 17:24

Re: Formen öffnen und schließen
 
Ok, das klappt nicht, weiß jemand was?

Highttower 22. Jun 2009 17:28

Re: Formen öffnen und schließen
 
Setz mal in OnForm Create ein showMessage('Form geht auf'), oder geh mit dem Debugger durch und suche nach dem ersten aufruf von Form2

Mithrandir 22. Jun 2009 17:29

Re: Formen öffnen und schließen
 
Bisschen Quellcode wäre nicht schlecht... :glaskugel:

Fussel9 22. Jun 2009 17:32

Re: Formen öffnen und schließen
 
Delphi-Quellcode:
procedure TForm1.Button7Click(Sender: TObject);
var FDialog :TFDialog;
begin
name:=EName.Text;
Mediaplayer1.Stop;
Mediaplayer2.Play;
Form1.Caption:=EName.Text;
Button7.visible:=False;
EName.visible:=False;
Label1.visible:=False;
Panel5.visible:=False;
save := TIniFile.Create('.\save\SaveFile.ini');
//try
if save.SectionExists(name)=True then
  begin
    if MessageDlg('Kaktus existiert bereits, Laden oder anderen Namen eingeben! Laden?',mtConfirmation,mbYesNo,0)=mrYes then
      begin;
        sek:=save.ReadInteger(name,'ZeitSek',0);
        min:=save.ReadInteger(name,'ZeitMin',0);
        h:=save.ReadInteger(name,'ZeitH',0);
        hunger:=save.ReadInteger(name,'Hunger',30);
        durst:=save.ReadInteger(name,'Durst',30);
        laune:=save.ReadInteger(name,'Laune',50);
        alter:=save.ReadInteger(name,'Alter',0);
        gesundheit:=save.ReadInteger(name,'Gesundheit',100);
      end
    else
      begin
        FDialog:=TFDialog.Create(self);
        FDialog.ShowModal;
        name:=FDialog.ENeuName.Text;
      end;
  end;
//finally
save.Free;
LSekunden.caption:=IntToStr(sek);
LMinuten.caption:=IntToStr(min);
LStunden.caption:=IntToStr(h);
LAHunger.caption:=IntToStr(hunger);
LADurst.caption:=IntToStr(durst);
LALaune.caption:=IntToStr(laune);
LAAlter.caption:=IntToStr(alter);
LAGesundheit.caption:=IntToStr(gesundheit);
frame:=0;
EssenF:=0;
TrinkenF:=0;
SpielenF:=0;
PName.caption:=EName.Text;
end;



das is die Procedur an ders liegen muss, weil ich noch in ner anderen eine andere Form aufrufe und das klappt, auch modal...

Fussel9 22. Jun 2009 17:37

Re: Formen öffnen und schließen
 
Ps: Leider weiß ich nicht wie man mit dem Debugger umgeht...


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:55 Uhr.
Seite 1 von 2  1 2      

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