Delphi-PRAXiS

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:

CalvinCrime 13. Sep 2007 21:38

Re: Mehrere Formularoberflächen
 
Vielen Dank nochmal für eure schnelle Hilfe,
weiß garnicht wie ich euch danken soll :-D

Ihr habt mir echt super weiter geholfen :thumb:

Ich denk mal ich kann die Frage damit dann als beantwortet setzen.

Jetzt nurnoch ein paar Feinheiten und mal schauen ob ich ihn morgen fertig
bekomme mein Vokabeltrainer... :coder:

MfG Calvin

Nuclear-Ping 13. Sep 2007 22:27

Re: Mehrere Formularoberflächen
 
Die Form hat im Objektinspektor verschiedene Events. In OnClose kannst du zB die Hauptform wieder einblenden, statt dein Programm zu schließen.

Aber hier nochmal an der Stelle erwähnt: Wenn dir Programmieren Spaß macht, wirst du früher oder später um ein Buch nicht drumrum kommen.
Für totale Anfänger empfielt sich wohl "Delphi - leicht & verständlich" - http://knowware.de/?cat=6.1&book=delphi - Die 5,- sollte man auch als Schüler übrig haben. Ich für meinen Teil hab mit den KnowWare Heften gute Erfahrungen gemacht, in meinem fall "PHP für Einsteiger" damals. Da wurden die Grundlagen und der Einstieg so simpel und gut vermittelt, dass man auch die Beispiele meist auf Anhieb lösen konnte und das geschriebene ziemlich gut hängen blieb.

CalvinCrime 14. Sep 2007 18:55

Re: Mehrere Formularoberflächen
 
Danke für deinen Buchtip :-D
Werde mal darüber nachdenken mir dieses Buch anzuschaffen.
Ich denke mal, früher oder später wäre es sowieso an der Zeit, sich mal ein Buch darüber
an zu schaffen wie du sagtest.

Das mit den verschiedenen Eigenschaften hab ich gestern auch herausgefunden, nachdem ich erstmal
gesucht habe, wo das OnClose jetzt überhaupt sein soll, denn als ich versucht habe es selber in meinen Programmtext zu schreiben, hat die Autovervollständigung es mir noch nicht einmal angeboten...
Hab zu erst einmal gedacht ich bin zu bresig das als richtige procedure zu schreiben :?
Nun ja... habs dann hinterher unter Ereignisse gefunden :-D
und mit nem doppelklick da drauf bin ich doch zum Ziel gekommen :coder:

Jetzt sind es eigentlich nurnoch feinheiten die verbesserungswürdig sind. Dann Hab ich mehr oder
weniger mein erstes nützliches Programm in Delphi geschrieben

(Mit etwas Hilfe von euch) :mrgreen:

MfG Calvin


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:50 Uhr.

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