AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Nahtlosen Formularwechsel erzeugen - Bin ratlos!!!
Thema durchsuchen
Ansicht
Themen-Optionen

Nahtlosen Formularwechsel erzeugen - Bin ratlos!!!

Ein Thema von Taxidriver05 · begonnen am 12. Okt 2006 · letzter Beitrag vom 21. Nov 2008
Antwort Antwort
Taxidriver05

Registriert seit: 27. Sep 2006
Ort: Leuna
1 Beiträge
 
Delphi 7 Personal
 
#1

Nahtlosen Formularwechsel erzeugen - Bin ratlos!!!

  Alt 12. Okt 2006, 14:24
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!!!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Nahtlosen Formularwechsel erzeugen - Bin ratlos!!!

  Alt 12. Okt 2006, 14:26
Hast du dir die PageControl-Komponente mal angesehen?
Markus Kinzler
  Mit Zitat antworten Zitat
diComm

Registriert seit: 26. Jan 2005
68 Beiträge
 
#3

Re: Nahtlosen Formularwechsel erzeugen - Bin ratlos!!!

  Alt 12. Okt 2006, 14:28
Hallo

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

Gruss
DiComm
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Nahtlosen Formularwechsel erzeugen - Bin ratlos!!!

  Alt 12. Okt 2006, 14:28
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.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
diComm

Registriert seit: 26. Jan 2005
68 Beiträge
 
#5

Re: Nahtlosen Formularwechsel erzeugen - Bin ratlos!!!

  Alt 12. Okt 2006, 14:38
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
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#6

Re: Nahtlosen Formularwechsel erzeugen - Bin ratlos!!!

  Alt 12. Okt 2006, 14:50
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.
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
12. Okt 2006, 16:16
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
(Gast)

n/a Beiträge
 
#8

Re: Nahtlosen Formularwechsel erzeugen - Bin ratlos!!!

  Alt 13. Okt 2006, 06:39
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;
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

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

Re: Nahtlosen Formularwechsel erzeugen - Bin ratlos!!!

  Alt 21. Nov 2008, 09:53
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
Martin Schaefer
Phaeno
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:21 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