GUI mit Unterfenster erstellen

  • Hallo Zusammen!

    Ich habe mir ein GUI für mein Programm gebaut, was wie auf dem Bild ausszieht.

    Als Code sieht das ganze wie folg aus:

    Jetzt möchte ich, wenn man auf "Properties" klickt, dass sich ein neues Fenster (GUI), aber ohne das Pulldown-Menü, über mein aktuelles Fenster (GUI) legt. Ich weiß, dass es mit Child und Parent irgendwie funktionieren muss, aber ich weiß nicht was ich genau machen muss. Bei mir kommt nur Unsinn raus. Entweder verschwindet das Hauptfenster komplett, oder das 2. GUI wird sofort bei Programmstart angezeigt und sobald ich die Maus über das GUI schiebe, verschwindet das 2. Child-GUI.

    Ich möchte einfach über die Menüzeile zwischen den GUI's hin und her schalten können. Am liebsten im Quellcode alles schon mal vorbereiten, aber über das Switch von der Menüzeile nur die Ansicht von Hidden auf Show umstellen, wenn das so einfach geht!?

    VG

  • AAALSO, ich bin jetzt schon mal so weit, dass das Menü so funktioniert, wie ich mir das vorstelle, nur wird mir beim Wechsel auf GUI2 das GUI1 immernoch angezeigt. Ich würde allerdings gerne haben, dass ich ein neues leeres Fenster/GUI mit meiner Menüzeile bekomme. Kann ich vlt. die Buttons etc. aus dem ersten GUI verstecken bzw. ausblenden lassen, damit ich da neue Buttons etc. drüber legen kann?

    Hier das Beispiel, wie weit ich bis jetzt bin (Button2 und Button 3 machen das selbe, wie das Menü):

  • Das müsste doch mit folgendem gehen:

    Code
    GUICtrlSetState($g_idButton1, $GUI_HIDE)

    Habe damit aber selber noch nicht mit rumgespielt.

    Die Frage ist, je nach dem was du vor hast, ob es da nicht einfacher wäre mit einer 3. GUI zu arbeiten (vom Programmieraufwand).

  • Das müsste doch mit folgendem gehen:

    Code
    GUICtrlSetState($g_idButton1, $GUI_HIDE)

    Habe damit aber selber noch nicht mit rumgespielt.

    Die Frage ist, je nach dem was du vor hast, ob es da nicht einfacher wäre mit einer 3. GUI zu arbeiten (vom Programmieraufwand).

    OK, danke, werde ich mal ausprobieren. Meine Idee war sonst, drei GUIs zu machen, eins was nur die Menüzeile enthält, eins was direkt beim Start angezeigt wird und ein, was das zweite verschwinden lässt und dann angezeigt wird. Wenn man wieder zurück geht, wird das dritte versteckt und das zweite wieder angezeigt.

  • Könntest du den unteren teil nicht mit einer art Groupbox lösen (GUICtrlCreateGroup müsste das sein)?

    Mache das in Delphi immer so, dann brauche ich auch nur diese auszublenden und eine andere einzublenden und arbeite dann (übertragen an das autoit Verhalten) nur mit einer GUI anstatt jeden einzelnen Butten etc. auszublenden.

  • Mache das in Delphi immer so, dann brauche ich auch nur diese auszublenden und eine andere einzublenden und arbeite dann (übertragen an das autoit Verhalten) nur mit einer GUI anstatt jeden einzelnen Butten etc. auszublenden.

    Das nützt in AutoIt leider nichts. Die Controls innerhalb einer Group werden nicht über deren Status gesteuert, sondern müssen eigenständig verwaltet werden.

    Einfach alles in ein Array packen und per Schleife durchlaufen.

  • Jetzt möchte ich, wenn man auf "Properties" klickt, dass sich ein neues Fenster (GUI), aber ohne das Pulldown-Menü, über mein aktuelles Fenster (GUI) legt.

    Ich habe mir erstmal angeschaut, was du möchtest.

    Dazu verwende ein POPUP-Window. Darauf muss ein Button zur Übernahme (und ggf. Abbrechen) sein. Wenn der betätigt wird werden die Daten entsprechend verwendet und das Popup Window wird geschlossen (bei Abbrechen nur schließen).

    GUI während der Laufzeit ständig Erstellen und Löschen ist nicht sinnvoll. Einmalig Erstellen und mit @SW_SHOW/@SW_HIDE die Anzeige steuern.

  • GUI während der Laufzeit ständig Erstellen und Löschen ist nicht sinnvoll. Einmalig Erstellen und mit @SW_SHOW/@SW_HIDE die Anzeige steuern.

    OK, aber wie unterscheidet AutoIt, zu welchem GUI eine Variable/ein Element gehört? Einfach nur anhand der Reihenfolge, oder muss ich den Buttons, etc. noch sagen, zu welchem GUI sie gehören?

  • OK, aber wie unterscheidet AutoIt, zu welchem GUI eine Variable/ein Element gehört? Einfach nur anhand der Reihenfolge, oder muss ich den Buttons, etc. noch sagen, zu welchem GUI sie gehören?

    Jedes Control bekommt eine eigenständige ID, da brauchst du also nicht prüfen von welchem Fenster die Msg kam. Und wenn man ein Popup verwendet (dieses besitzt keine Titelleiste und somit auch keinen Schließen-Button) kann die Nachricht CLOSE nur vom Hauptfenster kommen.

  • So sieht's jetzt bei mir aus, und ich finde es sieht gut aus :)

    BugFix Das mit "Popup" hab ich nicht verstanden, da weiß ich nicht, wie AutoIt reagiert. Kannst Du mir da weiter helfen, oder vlt. mein Script darauf umbauen (wenn es kein großer Akt ist)?

  • Das mit "Popup" hab ich nicht verstanden, da weiß ich nicht, wie AutoIt reagiert. Kannst Du mir da weiter helfen,

    Hier mal ein Bsp.:

  • Hier mal ein Bsp.:

    Ah! Vielen Dank! Ich hab das jetzt für ein "About-Fenster" mal übernommen, weil ich wohl die Properties so anzeigen lassen möchte, wie in meinem Beispiel. Letzten Endes sieht es dann so aus:

    Jetzt muss ich das nur noch auf mein Projekt übertragen :)

  • Das nützt in AutoIt leider nichts. Die Controls innerhalb einer Group werden nicht über deren Status gesteuert, sondern müssen eigenständig verwaltet werden.

    Einfach alles in ein Array packen und per Schleife durchlaufen.

    Jetzt weiß ich wieder warum ich GUI-Lastige Programme lieber in Delphi schreibe und Autoit "nur" für automatisierte Aufgaben/Ausgaben verwende ;)

  • JBO 16. Dezember 2021 um 09:12

    Hat das Label [ gelöst ] hinzugefügt.