Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Nahtlosen Formularwechsel erzeugen - Bin ratlos!!! (https://www.delphipraxis.net/78881-nahtlosen-formularwechsel-erzeugen-bin-ratlos.html)

Taxidriver05 12. Okt 2006 14:24


Nahtlosen Formularwechsel erzeugen - Bin ratlos!!!
 
Hallo Leutz...

Irgendwie hänge ich gerade in der Luft...

Ich habe in Delphi 7.0 das folgende Problem:

Ich möchte einen Wechsel von Form1 zu Form2 erzeugen, ohne dass auf einmal zwei Formulare offen sind.
Das heißt in der Praxis, dass der Anwender auf einen Button klickt und (scheinbar) umblättert.
Was soll eigentlich passieren? Normalerweise soll in der Prozedur "Button1Click" eine Close-Anweisung für Form1 ausgeführt werden. Parallel dazu soll das Form2 in der Form2Create - Prozedur geöffnet werden.

Selbstverständlich habe ich beide Units in der Uses-Anweisung der jeweils anderen Unit eingetragen.

Was habe ich gemacht, um dies umzusetzen?

Nun, ich habe in die "procedure(Button1Click)" der Unit1 ein "Form1.Close;" geschrieben.
In Unit2 habe ich in die "procedure(Form2Create)" ein "Form2.show;" eingetragen.

Rein theoretisch sollte diese Variante funktionieren. Doch starte ich die Anwendung und Klicke den Button, wird das Programm geschlossen.

Kann mir da irgendwie jemand weiterhelfen???


P.S.: Sorry, dass kein Quelltext gepostet ist. Der wird in den nächsten Tagen nachgereicht...

Sorry für den Post im falschen Forum...
Bitte ins richtige Forum verschieben!!!

mkinzler 12. Okt 2006 14:26

Re: Nahtlosen Formularwechsel erzeugen - Bin ratlos!!!
 
Hast du dir die PageControl-Komponente mal angesehen?

diComm 12. Okt 2006 14:28

Re: Nahtlosen Formularwechsel erzeugen - Bin ratlos!!!
 
Hallo

Vermutlich gäbe es noch bessere Varianten, aber versuch mal das Form1.Close ins Create von Form2 zu schreiben.

Gruss
DiComm

3_of_8 12. Okt 2006 14:28

Re: Nahtlosen Formularwechsel erzeugen - Bin ratlos!!!
 
Außerdem erzeugt das Schließen des Hauptformulars in der Regel die Terminierung des Programms.

@diComm: Nein, das geht nicht. Grund siehe 2 Zeilen weiter oben. Außerdem wird ein Formular i.d.R. nur 1 mal erzeugt, wenn schon dann muss es ins OnShow.

diComm 12. Okt 2006 14:38

Re: Nahtlosen Formularwechsel erzeugen - Bin ratlos!!!
 
Hoppla, ja klar, wenn dann ins OnShow...

Falls du es nicht mit PageControl machen willst, würde ich das Hauptformular invisible machen und die Steuerung über dieses Hauptformular realisieren...

Würde aber trotzdem PageControl empfehlen

ste_ett 12. Okt 2006 14:50

Re: Nahtlosen Formularwechsel erzeugen - Bin ratlos!!!
 
Nimm statt "Close()" einfach "Hide()". :)

Delphi-Quellcode:
// erste Form
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2.Width := Form1.Width;
  Form2.Height := Form1.Height;
  Form2.Left := Form1.Left;
  Form2.Top := Form1.Top;
  Form2.Show;
  Form1.Hide;
end;


// zweite Form
procedure TForm2.Button1Click(Sender: TObject);
begin
  Form1.Width := Form2.Width;
  Form1.Height := Form2.Height;
  Form1.Left := Form2.Left;
  Form1.Top := Form2.Top;
  Form1.Show;
  Form2.Hide;
end;


Ich würde aber auch eher zu PageControl, etc. raten.
Schon allein, weil er von der Erweiterbarkeit wesentlich einfacher ist als jedes Mal eine neue Form zu bauen. :)

DP-Maintenance 12. Okt 2006 16:16

DP-Maintenance
 
Dieses Thema wurde von "Chakotay1308" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Sonstige Fragen zu Delphi" verschoben.
*wuppdi* Einmal in\\\'s richtige Forum... ;)

DevilsCamp 13. Okt 2006 06:39

Re: Nahtlosen Formularwechsel erzeugen - Bin ratlos!!!
 
Zitat:

Zitat von Taxidriver05
Hallo Leutz...

Irgendwie hänge ich gerade in der Luft...

Nun, ich habe in die "procedure(Button1Click)" der Unit1 ein "Form1.Close;" geschrieben.

Fehler. Form1 wird sehr wahrscheinlich die Hauptform sein. Schliesst du sie mit Close, dann beendet sich das Programm. Das Zauberwort in Deinem Fall lautet: Self.Hide

Zitat:

In Unit2 habe ich in die "procedure(Form2Create)" ein "Form2.show;" eingetragen.
Mach mal folgendes:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Self.Hide;
  Form2.Show;
end;
Entsprechend auf Form2:
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
begin
  Self.Hide;
  Form1.Show;
end;

mschaefer 21. Nov 2008 09:53

Re: Nahtlosen Formularwechsel erzeugen - Bin ratlos!!!
 
Habe das etwa folgend gelöst:

Im Hautptformualr oder DataModule liegt eine Timer-Komponente. Dieser übergebe ich die Nr des Formulars welches geöffnet werden soll in die Tag-Eigenschaft. Jetzt stelle ich den Timer auf enabled bevor sich das Formular 1 schließt (Destroy).

Nach Auslösen des Timer-Events wird in der Eventroutine das Formular mit Nr aus Tag geöffnet (Create). Damit gibt es auch keine Probleme bei Rücksprünge von Proceduren auf geschlossene / destroyte Formulare.

Grüße /// Martin


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:09 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