GUI - Mehrere Forms

    • [ offen ]

      GUI - Mehrere Forms

      Hallo,

      zunächst: bin ziemlich neu und kenne mich mit AutoIt noch nciht so gut aus, also habt Geduld mit mir. Habe mir mal den Koda GUI Builder runtergeladen und soweit ist alles in Ordnung und klar, Nur ist mir nicht wirklich klar wie ich mehrere Forms mit einem "Main Menu" einbauen kann. Man hat quasi ein Dropdownmenü und für jeden Punkt gibt es eine eigene Seite. Muss man dann einfach alles auf eine Seite machen und bei einem Untermenüklick alle Buttons etc, die nicht zu der bestimmten Seite gehören, unsichtbar machen?

      Bei einem neuen Form erstellt ja quasi ein neues au3 Dokument. Oder kann ich das irgendwie includen? Wäre ja auch irgendwie ganz komisch, wenn man viele Elemente reduntant machen müsste. Oder packt man alles ein Dokument und fragt die dementsprechenden Seiten mit 'ner switch-Abzweigung ab? Wäre über ein paar Tips dankbar!

      Vielen Dank
      Morgen!
      Also, du kannst nicht so einfach mehrere GUI´s durch eine Menüleiste steuern... Es ist zwar möglich, aber eher über Umwege. Was du aber machen kannst, ist eine GUI erstellen und darin mit einem Tab arbeiten - das hat den Vorteil das du nicht selber iwelche Buttons verstecken mußt, sondern bei einem Tab-Klick wird eben die Seite umgeschaltet.

      Grüsse!

      [EDIT]
      Eine neue Form.... Du kannst jede Form einfach in dein Script einbinden! Das ist überhaupt kein Problem. Und abfragen kannst du die Form 'Elemente' durch eine einfache Case/Switch Schleife oder durch die Option 'Opt("GUIOnEventMode", 1)'.
      WOW, schon über 7 Jahre hier!
      Simples Beispiel zum ein- und ausblenden von Controls.
      Spoiler anzeigen

      AutoIt-Quellcode

      1. #include <GUIConstants.au3>
      2. #region - GUI Create
      3. GUICreate("", 400, 400, -1, -1)
      4. $idCombo = GUICtrlCreateCombo("eins", 4, 4)
      5. GUICtrlSetData(-1, "zwei")
      6. GUICtrlSetData(-1, "drei")
      7. #endregion - GUI Create
      8. GUISetState(@SW_SHOW)
      9. _createControls()
      10. #region - GUI SelectLoop
      11. While 1
      12. $msg = GUIGetMsg()
      13. Select
      14. Case $msg = -3 ;$GUI_EVENT_CLOSE
      15. Exit
      16. Case $msg = $idCombo
      17. Select
      18. Case GUICtrlRead($idCombo) = "eins"
      19. For $i = 0 To UBound($aEins) - 1
      20. GUICtrlSetState($aEins[$i], $GUI_SHOW)
      21. Next
      22. For $i = 0 To UBound($aZwei) - 1
      23. GUICtrlSetState($aZwei[$i], $GUI_HIDE)
      24. Next
      25. For $i = 0 To UBound($aDrei) - 1
      26. GUICtrlSetState($aDrei[$i], $GUI_HIDE)
      27. Next
      28. Case GUICtrlRead($idCombo) = "zwei"
      29. For $i = 0 To UBound($aEins) - 1
      30. GUICtrlSetState($aEins[$i], $GUI_HIDE)
      31. Next
      32. For $i = 0 To UBound($aZwei) - 1
      33. GUICtrlSetState($aZwei[$i], $GUI_SHOW)
      34. Next
      35. For $i = 0 To UBound($aDrei) - 1
      36. GUICtrlSetState($aDrei[$i], $GUI_HIDE)
      37. Next
      38. Case GUICtrlRead($idCombo) = "drei"
      39. For $i = 0 To UBound($aEins) - 1
      40. GUICtrlSetState($aEins[$i], $GUI_HIDE)
      41. Next
      42. For $i = 0 To UBound($aZwei) - 1
      43. GUICtrlSetState($aZwei[$i], $GUI_HIDE)
      44. Next
      45. For $i = 0 To UBound($aDrei) - 1
      46. GUICtrlSetState($aDrei[$i], $GUI_SHOW)
      47. Next
      48. EndSelect
      49. EndSelect
      50. WEnd
      51. #endregion - GUI SelectLoop
      52. Func _createControls()
      53. Global $aEins[2], $aZwei[2], $aDrei[2]
      54. $aEins[0] = GUICtrlCreateButton("eins", 4, 40)
      55. $aEins[1] = GUICtrlCreateInput("eins", 4, 80)
      56. $aZwei[0] = GUICtrlCreateButton("zwei", 4, 40)
      57. GUICtrlSetState(-1, $GUI_HIDE)
      58. $aZwei[1] = GUICtrlCreateInput("zwei", 4, 80)
      59. GUICtrlSetState(-1, $GUI_HIDE)
      60. $aDrei[0] = GUICtrlCreateButton("drei", 4, 40)
      61. GUICtrlSetState(-1, $GUI_HIDE)
      62. $aDrei[1] = GUICtrlCreateInput("drei", 4, 80)
      63. GUICtrlSetState(-1, $GUI_HIDE)
      64. EndFunc ;==>_createControls
      MfG i2c
      BBM-ID 7593FD26


      Join us: irc.afterworkchat.net Channel: #autoit

      Als Gott sah, dass er die Menscheit nicht mit Seuche, Pest und Sintflut bestrafen konnte, schickte er mich!


      [SciTE/Notepad++] Send To Pastebin/Get From Pastebin
      [SciTE/Notepad++] Regexp Tester
      Hi,
      ich hatte auch mal danach gesucht und fand diese Lösung am Besten, da die GUIs mit all Ihren Controls usw auf einmal hidden bzw shown werden können:

      Spoiler anzeigen

      AutoIt-Quellcode

      1. $hParent = GUICreate("",500,500)
      2. $hBtn = GUICtrlCreateButton("Zeige mir alle Inputboxen!",0,0,500,40)
      3. GUISetState()
      4. $hChild = GUICreate("",500,400, 0, 100, 0x40000000, -1, $hParent)
      5. For $i = 0 To 10
      6. GUICtrlCreateInput("",0,20*$i,500,20)
      7. Next
      8. GUISetState(@SW_HIDE)
      9. Do
      10. $nMsg = GUIGetMsg()
      11. Select
      12. Case $nMsg = $hBtn
      13. GUISetState(@SW_SHOW,$hChild)
      14. EndSelect
      15. Until $nMsg = -3


      LG OIS
      @oispnr Danke, das funktioniert ganz gut. Ich weiß nur nicht ob es so performant ist alles zu erstellen, was evtl mal angezeigt werden soll. Das verstecken macht es ja nur unsichtbar, hält es aber alles im Speicher. Nungut, vlt nimmt es ja nicht so viele Resourcen weg.
      Danke jedenfalls!
      Also da bin ich jetzt ehrlich gesagt nicht der Experte, aber ich denke da solltest du dir keine Gedanken machen. Eine Alternative wäre zB. eine eigene Funktion zu schreiben, die _Gui1Create() oder so nennen und noch eine, die _Gui1Delete() heißt oder so, dann könntest du es auch leicht hinkriegen und würdest dann auch komplett löschen.
      Aber ich denke von der Performance ist meine Variante besser, da du hier alles am Anfang erstellst und später nur sagst: versteck, zeig. Andernfalls muss es ja jedesmal gelöscht werden und neu erstellt werden und so...

      LG OIS
    autoit.de Webutation