Ganz, ganz blöde Frage zu Formularen



  • Hi,

    hatte in meinen Überlegungen einen ziemlichen Denkfehler, der sich jetzt erledigt hat.

    Gruß
    Manfred



  • vielen Dank, dass Du allen, die das Problem auch haben, erklärt hast, wie es geht 😉

    Gruß, Angel



  • Angelpopangel schrieb:

    vielen Dank, dass Du allen, die das Problem auch haben, erklärt hast, wie es geht 😉

    Gruß, Angel

    so... bin jetzt auch registriert.
    Ich meine nur: Ich bin auch GENAU bei diesem Problem hängen geblieben.
    Bitte erklär mir, was mir keine Ressource erklären konnte... wie geht das?



  • Hi,

    mein Denkfehler war der, dass ich versucht, habe, jedes Formular oder besser jeder .h-Datei bei der anderen einzubinden, weil die sich sonst nicht kennen.

    Ich wollte schließlich, dass die Formulare sich gegenseitig aufrufen können.
    Aber es ist so, dass ich das zweite Formular mit
    #include "Form2.h"
    in der ersten Zeile von Form1.h einbinde und dann das zeite Formular aufrufe:

    Form* Form2 = new MeinProjekt::Form2();
    this->Hide();
    Form2->ShowDialog();
    this->Show();
    

    Mit this-Hide() verstecke ich das aktuelle Formular und rufe mit Form2->ShowDialog()
    das neue Formular auf.
    Bei Form2->Show() kann man zwischen den beiden Forms hin- und herschalten, solange man das erste bicht versteckt. bei ShowDialog() ist es geblockt.

    Wenn Du noch FRagen hast, melde Dich einfach.

    Herzliche Grüße
    Manfred



  • perfekt, vielen Dank...
    Ich hatte auch das Problem, dass ich die .h-Datei meines 2. Forms nicht in der .h-Datei des Mainforms deklariert hatte.
    Puh, 2 Tage Sucherei vorbei 🙂 Du hast meinen heutigen Tag gerettet.

    Ich hab am Samstag mein "VC++ 2003 std"-Paket bekommen und bin fast verzweifelt, weil ich keine Fenster aufrufen konnte.
    Dabei bin ich nicht wirklich unbeleckt, was Programmierung angeht.

    Ich verstehe aber absolut nicht, warum im Formsdesigner der Code für Button-Click-Aktionen in der Header-Datei und nicht in der CPP-Datei eingetragen wird... naja, ich muss wohl noch viel Lernen 🙂

    Gruß, Angel



  • Jep,

    ich hatte auch nicht so ganz verinerlicht, dass bei Schliessen des zweiten Formulars sofort eine Rückkehr zum ersten Formular erfolgt, ich habe insgesamt vier Tage damit verbracht, in verschiedenen Foren eine Lösung zu finden 😉

    Aber so ist das Leben: mühsam ernährt sich das Eichhörnchen;-)

    Herzliche Grüße aus dem verregneten Ostfriesland
    Manfred



  • 🙂
    Jetzt muss ich nur noch rausfinden, wie ich die Ressourcen wieder freigebe.
    Jedesmal, wenn ich auf meinen "About"-Button klicke, wird ja eine neue Instanz des Fensters generiert.
    Naja, vielleicht sollte ich eher mal schauen, dass ich die Fensterinstanz beim Programmstart ein mal erstelle und nicht, wenn ich auf den Button drücke 🙂

    Na... aber ich bin schonmal froh, dass ich überhaupt ein Fenster öffnen kann... hab schon an meinem Verstand gezweifelt 🙂

    Gruß, Angel



  • Hi,
    ich würde es so machen, dass ich eine globale Variable als Zeiger nehme, die auf 1 steht, wenn das Fenster schon besteht.

    Herzliche Grüße
    Manfred



  • Das ist eine gute Idee. Aber ich glaube, dass man sowas prinzipiell direkt beim Start macht, oder? Also bei der Initialisierung.
    Aber das ist als Workaround schonmal n guter Ansatz.

    Gruß, Angel



  • Hmmm... ich habe gerade was ausprobiert.
    Wenn ich in der Form2-Klasse, also der cpp-Datei eine Main-Funktion einbaue, dann gibt das Programm den Speicher des geschlossenen gerade erstellten und wieder geschlossenen Formulars wieder frei. Ist ja eigentlich auch klar, weil das 2. Form korrekt beendet wird.
    Also einfach ein

    int main (void)
    {
    }
    

    einbauen und schon werden die Ressourcen des Fensters wieder freigegeben nach der Schließung.
    Hoffe, ich erzähle jetzt keinen Unfug, aber so habe ich es erlebt 🙂
    Vielleicht ist es ja interessant.

    Gruß, Angel

    EDIT: Bitte wieder vergessen... das stimmt so nicht... jetzt gibt's Gemeckere wegen zweier main-funktionen... tja... ich hätte das Projekt versuchsweise komplett neu compilieren sollen.... sehr eigenartig, dass es erst funktionierte


Anmelden zum Antworten