Einige Fragen zum MDIChild



  • @VergissEs
    Danke für die Hilfe. Punkt 2 und 3 hat funktioniert.

    Leider klappt es bei Punkt 1 nicht. Momentan habe ich es so:

    bool gefunden=false;
    
        //Überprüfen ob das MDIChild besteht
        for (int i = MDIChildCount - 1; i >= 0; i--) {
            if ((AnsiString)MDIChildren[i]->ClassName() == "Tartikel_anlegen") {
                MDIChildren[i]->Show();
                gefunden=true;
            }
        }
    
        if (!gefunden) {//Fuhrpark erstellen
            Tartikel_anlegen *artikel_anlegen = new Tartikel_anlegen(Application);
            artikel_anlegen->WindowState =wsMaximized;
            artikel_anlegen->Show();
        }
    

    Leider sieht man dann immernoch, wie sich das Formular vergrößert. Das wollte ich ja nicht.
    Hast du da noch eine Idee?



  • Hi,

    hast du in deinen MDI Childforms die Eigenschaft WindowState wsNormal stehen?
    falls nicht mach das mal denn wenn man wsMaximized angiebt kommt dieses Fenster flackern



  • Hi,
    wenn ich das aber auf wsNormal stelle öffnet sich das Child aber nicht mehr Maximiert. Ich möchte es aber maximiert haben. Was muß ich denn dann noch machen?



  • Du gibst doch beim Form erzeugen an das es Maximiert sein soll mit

    artikel_anlegen->WindowState =wsMaximized;
    


  • Wenn ich das wieder rein nehme, ist es wieder so wie vorher. Man sieht, wie sich das Fenster maximiert.



  • im meine in der Entwicklungsumgebung also in deiner Form selbst
    WindowState=wsNormal angeben.

    denn wenn die Form beim erzeugen schon wsMaximized hast sieht man es wenn es maximiert wird.



  • Hallo VergissEs,
    also ich habe jetzt in der Entwicklungsumgebung

    WindowState=wsNormal
    

    Um das Formular aufzurufen habe ich folgendes stehen:

    if (!gefunden) {//Fuhrpark erstellen
            Tartikel_anlegen *artikel_anlegen = new Tartikel_anlegen(Application);
            artikel_anlegen->WindowState =wsMaximized;
            artikel_anlegen->Show();
        }
    

    Wenn ich das Formular jetzt aufrufe, sehe ich immernoch wie es maximiert wird. Allerdings sieht man es jetzt bei den anderen Formularen nicht mehr.

    Wenn also das erste Formular maximiert aufgerufen wird, wernde die anderen auch maximiert aufgerufen und da sieht man es nicht.

    Man sieht es immer nur bei dem Formular, dass zu erst aufgerufen wird.

    Weißt da auch noch was?

    Gruß



  • Hallo VergissEs,
    hast du vielleicht noch eine andere Idee? Leider habe ich es noch immer nicht hinbekommen.

    Danke im voraus



  • Wenn du pro Menüpunkt nur ein Child öffnen möchtest solltest du vielleicht überlegen ob MDI hier überhaupt der richtige Weg ist und du mit unabhängigen Fenstern nicht besser kommst. MDI-Applikationen sind sowieso (zu Recht) etwas aus der Mode gekommen.



  • Guten Morgen,
    es soll ja pro Menüpunkt mehrere Childs geöffnet werden. Was schlägst du denn anderes vor?
    Und wieso (zu Recht) ist eine MDI-Anwendung etwas aus der Mode gekommmen? Gibt es denn inzwischen etwas, was "besser" ist?



  • Guten Morgen,

    Das mit dem "aus der Mode gekommen" meinte ich, weil die meisten Applikationen zur Zeit (Office, Borland-Produkte etc.) kein MDI sondern eher frei bewegbare bzw. andockbare Fenster verwenden. Dies macht die Gestaltung einer Anwendung flexibler. Der Verwaltungsaufand für den Programmierer steigt dadurch natürlich, weil er sich jetzt auch noch um die Anordnung kümmern muss. Das ist aber auch eine Geschmacksfrage. Ich muß zugeben, dass mir MDI-Anwendungen noch nie so richtig gefallen haben, da man bei der Gestaltung der Childs doch arg an das Hauptfenster gebunden ist.



  • Achso, so ist das gemeint. Das ist warscheinlich wirklich Geschmackssache. Ich habe davor ein Programm mit frei beweglichen Fenstern gemacht. Jetzt wollte ich dieses gerne in einer MDI-Anwendung lösen. Vielleicht schwenke ich ja doch noch um. :p
    Wobei das mit andockbaren Fenster auch sehr interessant klingt. Gibts da was gutes zum lesen drüber?

    Kann mir denn sonst vielleicht jemand bei meinem Problem helfen?


Anmelden zum Antworten