Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mehrere Formularoberflächen (https://www.delphipraxis.net/99544-mehrere-formularoberflaechen.html)

CalvinCrime 13. Sep 2007 16:24


Mehrere Formularoberflächen
 
Sorry, fang gerade erst an mit Delphi zu programieren und kenn mich
insgesamt noch nicht so gut damit aus. :oops:
Ich schreibe zur Zeit an einem Vokabeltrainer und er hat die folgenden Funktionen:

:arrow: Vokabeln eintragen
( diese werden dann in einer Listbox angezeigt )
:arrow: Vokabeln wieder löschen
:arrow: Vokabelabfrage

Bis jetzt habe ich alles soweit ganz gut hin bekommen. Mein Einziges Problem ist jetzt,
dass ich die Vokabelabfrage so programmieren will:

Wenn ich die Vokabelabfrage per klick auf einen Button starte, soll Die oberfläche von dem Programm wie folgt aussehen.
:arrow: Die Listbox und die Vokabeleingabe soll nicht mehr da sein, sprich nurnoch dieListbox mit der Vokabel die abgefragt wird und das Editfeld, wo dann die Übersetzung eingetragen werden soll.

Geht das Ganze auch ein wenig geschickter als nur einfach die Eigenschaft 'Visible' der Elemente die nichtmehr zu sehen sein sollen auf 'false' zu stellen :?:

:coder2: Sofern möglich, wäre es praktisch eine andere Form zu laden, sodass nur die abfrage da ist
und per klick auf einen Button gelangt man später auch wieder zur Vokabeleingabe.

Ist diese Vorstellung irgendwie realisierbar :?:

Wäre sehr dankbar für eine schnelle antwort.

MfG Calvin

Nuclear-Ping 13. Sep 2007 16:34

Re: Mehrere Formularoberflächen
 
Hallo und Willkommen bei der Delphi-Praxis! :)

Für dein Problem kannst du zur Lösung entweder mehrere Formulare erzeugen (Datei -> Neu -> Form), die du jeweils bei dem Klick auf den Button mit Form2.Visible ein- oder ausblenden kannst. Das ist die simpelste Variante, was ich dir zum Üben auch erstmal empfehlen würde.
Die neue Form sollte gleich automatisch in dein Projekt eingebunden sein und du solltest über einen Button-Klick schon auf die Elemente von Form2 zugreifen können.
Dort kannst du genauso Edit-Felder, Labels, etc. unterbringen. Über die Form1 kannst du dann einfach per Form2.Edit1.Text oder ähnliches drauf zugreifen.

Weiterhin sind zum Lernen und Üben Bücher und Tutorials sehr empfehlenswert (zB http://www.dsdt.info/tutorials/).
Eigeninitiative und Selbständigkeit sind hier auch gern gesehen. ^^ Umso mehr man davon zeigt, umso mehr bekommt man gute Hilfe.

Namenloser 13. Sep 2007 16:53

Re: Mehrere Formularoberflächen
 
Zitat:

Zitat von Nuclear-Ping
Eigeninitiative und Selbständigkeit sind hier auch gern gesehen. ^^ Umso mehr man davon zeigt, umso mehr bekommt man gute Hilfe.

Abgesehen davon lernt man so auch mehr :wink:
Auch von mir ein herzliches Willkommen :hello:

CalvinCrime 13. Sep 2007 18:54

Re: Mehrere Formularoberflächen
 
Erstmal ein ganz großes dankeschön für eure Hilfsbereitschaft und die freundliche Aufnahme im Delphi-Praxis Forum!
:-D
Ich habe zwar selber darüber nachgedacht, wie ich das problem lösen könnte.
Hab aber keinen Einfall gehabt.
Auf die Idee, im Turtorial nachzuschauen bin ich nicht gekommen :oops:

Dafür hab ich es mit googlen versucht, hab aber entweder nicht die richtigen
Suchbegriffe gewählt oder bin einfach nur nicht fündig geworden. :cry:
Aber trotzdem vielen Dank für eure hilfe. Mal schauen ob sich das Problem nun
bewältigen lässt :-D

MfG Calvin

Namenloser 13. Sep 2007 19:24

Re: Mehrere Formularoberflächen
 
Achja, noch ein anderer Ansatz: Du könntest auch ein TPageControl nehmen und beim Start des Programms in einer Schleife für jede Unterseite TabVisible auf False stellen. Wenn du dann z.B. die Vokabeln abfragen willst, änderst du per Delphi-Code die Eigenschaft ActivePage (bin mir nicht ganz sicher, ob die so heißt) auf die entsprechende Seite.

CalvinCrime 13. Sep 2007 20:28

Re: Mehrere Formularoberflächen
 
Zitat:

Achja, noch ein anderer Ansatz: Du könntest auch ein TPageControl nehmen und beim Start des Programms in einer Schleife für jede Unterseite TabVisible auf False stellen. Wenn du dann z.B. die Vokabeln abfragen willst, änderst du per Delphi-Code die Eigenschaft ActivePage (bin mir nicht ganz sicher, ob die so heißt) auf die entsprechende Seite.
Hmmmmm... Da versteh ich jetzt gerade nur Bahnhof :gruebel:
Ich habe es jetzt auf jeden Fall mit mehreren Forms hinbekommen
das Problem zu lösen. :dancer:

Aber ich hab jetzt ein neues... :cry:
Da wüsste ich jetzt auch nicht, worunter ich im Turtorial nachschauen sollte.
Sry, ich bin ein TOTALER Neuling was Programmieren angeht... :oops:
Aber ich habe irgendwie Spaß dran gefunden.

Wenn ich das Programm in Delphi teste, bzw. starte, läuft es erstmal und ich
kann auch zwischen den Forms wechseln mit

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin

Form1.Visible := false ;
Form2.visible := true ;

end;
Wenn ich das Programm jetzt schließen will, schließt nur die Form die ich gerade
geschlossen habe mit dem 'X' oben rechts aber die anderen Forms bleiben noch geöffnet :wall:

Kann man das Schließen einer Form irgendwie mit dem Schließen aller Forms verbinden :coder2:
Es gibt ja FormCreate; gibt es auch sowas wie FormShutDown worunter man die anderen Forms schließen
kann?

MfG Calvin

s-off 13. Sep 2007 20:39

Re: Mehrere Formularoberflächen
 
Wenn Du Deine Mainform schliesst, beendet sich die komplette Anwendung.
Bei allen anderen Forms könntest Du im OnClose-Ereignis erst alle anderen Fenster schliessen oder aber mit Application.Terminate die Anwendung beenden.

Dieses war aber eine neue Frage, für die Du eigentlich hättest einen neuen Beitrag eröffnen müssen!

Namenloser 13. Sep 2007 20:39

Re: Mehrere Formularoberflächen
 
Du könntest in das OnClose von jedem Formular
Delphi-Quellcode:
application.terminate;
reinschreiben. Ist allerdings ne relativ rabiate Methode, weil dadurch die Anwendung praktisch manuell abgeschossen wird. Ich hör schon die Buuuuh-Rufe^^ //Edit: Wohl doch nicht so unsauber, wie ich dachte

Eine andere Möglichkeit wäre folgende:
Delphi-Quellcode:
for i := 0 to screen.formcount-1 do
  screen.forms[i].close;

s-off 13. Sep 2007 20:42

Re: Mehrere Formularoberflächen
 
Delphi-Quellcode:
application.formcount
:?: :wink:

Edit:
Was mir da gerade noch einfällt:
Zitat:

Zitat von NamenLozer
Ist allerdings ne relativ rabiate Methode, weil dadurch die Anwendung praktisch manuell abgeschossen wird.

Das ist nicht ganz richtig. Application.Terminate setzt eine WM_QUIT-Message. Dieses hat zur Folge, dass irgendwann die Mainform geschlossen wird, was ein absolut sauberes Verfahren ist. Anders verhält sich da der Aufruf von 'Halt'!

Namenloser 13. Sep 2007 20:55

Re: Mehrere Formularoberflächen
 
Zitat:

Zitat von s-off
Delphi-Quellcode:
application.formcount
:?: :wink:

Edit:
Was mir da gerade noch einfällt:
Zitat:

Zitat von NamenLozer
Ist allerdings ne relativ rabiate Methode, weil dadurch die Anwendung praktisch manuell abgeschossen wird.

Das ist nicht ganz richtig. Application.Terminate setzt eine WM_QUIT-Message. Dieses hat zur Folge, dass irgendwann die Mainform geschlossen wird, was ein absolut sauberes Verfahren ist. Anders verhält sich da der Aufruf von 'Halt'!

Ok. Zu dem anderen Code: Wie gesagt ohne Garantie ;)
Ich hatte Screen und Application verwechselt. Mit Screen sollte es gehn. Aber da die andere Varainte ja offensichtlich doch sauber ist, kann man sich den Aufwand wohl sparen :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:46 Uhr.
Seite 1 von 2  1 2      

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