Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[AutoIT] Przełączanie okien GUI


Rekomendowane odpowiedzi

Opublikowano

Witam,

 

Temat zapewne banalny, ale nie mogę sobie z nim poradzić. Chodzi o przechodzenie pomiędzy oknami w GUI. Mam stworzone 3 GUI(Main- główne, Config-konfiguracyjne i NewAccount-dodanie konta). W każdym są przyciski, które chciałbym aby powodowały przejście do kolejnego bądź poprzedniego okna, poza tym są przyciski, które uruchamiają inne funkcję(w kodzie uruchamiają MsgBox'a). Mój skrypt:

 

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region Main Gui
$frmMain = GUICreate("Główne", 473, 99, 240, 167)
$btnRozpocznij = GUICtrlCreateButton("Rozpocznij", 36, 56, 89, 33)
$btnKonfiguruj = GUICtrlCreateButton("Konfiguruj", 360, 8, 81, 33)
$prgbPostep = GUICtrlCreateProgress(16, 16, 289, 17)
$btnPrzerwij = GUICtrlCreateButton("Przerwij", 172, 56, 89, 33)
$btnPauza = GUICtrlCreateButton("Pauza", 272, 56, 89, 33)
GUISetState(@SW_SHOW,$frmMain)
#EndRegion
#Region config GUI
$frmConfig = GUICreate("Konfiguracja", 838, 424, 188, 182)
GUISetBkColor(0xFFFFFF)
$konta = GUICtrlCreateGroup("Konta", 504, 16, 313, 305)
$btnDodajK = GUICtrlCreateButton("Dodaj konto", 704, 48, 97, 41)
$btnEdytujK = GUICtrlCreateButton("Edytuj Konto", 704, 104, 97, 41)
GUICtrlSetState(-1, $GUI_DISABLE)
$lstKonta = GUICtrlCreateList("", 528, 48, 161, 253)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Linki = GUICtrlCreateGroup("Linki", 16, 8, 473, 393)
$Group1 = GUICtrlCreateGroup("", 39, 34, 417, 177)
$inLink2 = GUICtrlCreateInput("link1", 55, 98, 201, 21)
$inLink3 = GUICtrlCreateInput("link2", 55, 138, 201, 21)
$inLink4 = GUICtrlCreateInput("link3", 55, 178, 201, 21)
$lblLink1 = GUICtrlCreateLabel("Link do pliku", 263, 98, 106, 17)
$lblLink2 = GUICtrlCreateLabel("Link do pliku", 263, 138, 106, 17)
$lblLink3 = GUICtrlCreateLabel("Link do pliku", 263, 178, 106, 17)
$cbxLink 1= GUICtrlCreateCheckbox("cbx1", 391, 94, 17, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$cbxLink2 = GUICtrlCreateCheckbox("cbx2", 391, 134, 17, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$cbxLink3 = GUICtrlCreateCheckbox("cbx43", 391, 174, 17, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$bLinki = GUICtrlCreateButton("Zapisz dane", 310, 350, 161, 41)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$btnWroc = GUICtrlCreateButton("Wróć", 512, 352, 153, 41)
$btnWyjdz = GUICtrlCreateButton("Zapisz i wyjdź", 677, 352, 137, 41)
GUISetState(@SW_HIDE,$frmConfig)
#EndRegion config GUI
#region new account GUI
$frmNewAccount = GUICreate("Nowe konto", 273, 117, 299, 147)
$inLogin = GUICtrlCreateInput("nazwa konta", 128, 8, 129, 21)
$inPass = GUICtrlCreateInput("hasło", 128, 40, 129, 21)
$lblLogin = GUICtrlCreateLabel("Podaj nazwę:", 9, 10, 111, 17)
$lblPass = GUICtrlCreateLabel("Podaj hasło:", 9, 42, 64, 17)
$btnDodaj = GUICtrlCreateButton("Dodaj", 8, 72, 113, 33)
$btnAnuluj = GUICtrlCreateButton("Anuluj", 144, 72, 105, 33)
GUISetState(@SW_HIDE,$frmNewAccount)
#endregion

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
 Case $GUI_EVENT_CLOSE
  Exit
 Case $btnRozpocznij
  MsgBox(0,"Trwa...","Proces rozpoczęto")
 Case $btnPrzerwij
MsgBox(0,"Przerwano!!!","Proces przerwano");wymuszenie przerwania
  Case $btnPauza
MsgBox(0,"Pauza","Proces zatrzymano");pauza
 Case $btnKonfiguruj
  GUISetState(@SW_SHOW,$frmConfig)
  Switch $nMsg
Case $bLinki
 MsgBox(0,"Trwa...","Kliknąłeś linki")
Case $btnDodajK
GUISetState(@SW_SHOW,$frmNewAccount)
 Switch $nMsg
  Case $btnDodaj
   $login = GUICtrlRead($inLogin)
   $password = GUICtrlRead($inPass)
   GUICtrlSetData($lstKonta, $inLogin & "|")
   MsgBox(0,"Konto", "Dodano konto: "  & @LF & "Konto: " & $login & @LF & "Hałso: " & $password)
  Case $GUI_EVENT_CLOSE
   GUISetState(@SW_HIDE, $frmNewAccount)
   GuiSetState(@SW_SHOW, $frmConfig)
  Case $btnAnuluj
   GUISetState(@SW_HIDE, $frmNewAccount)
   GuiSetState(@SW_SHOW, $frmConfig)
 EndSwitch
Case $GUI_EVENT_CLOSE
 GUISetState(@SW_HIDE, $frmConfig)
 GuiSetState(@SW_SHOW, $frmMain)
Case $btnWyjdz
 Exit
Case $btnWroc
 GUISetState(@SW_HIDE, $frmConfig)
 GuiSetState(@SW_SHOW, $frmMain)
  EndSwitch
EndSwitch
WEnd

 

Z góry dzięki za pomoc i odpowiedź.

Opublikowano

Chyba się nie zrozumieliśmy, chodzi mi o przełączanie pomiedzy oknami za pomocą przycisków.

Przykład:

Jak uruchomię skryp wyświetla mi się okno główne($frmMain w kodzie) wciskam przycisk Konfiguruj($btnKonfiguruj) i wyświetla mi się nowe GUI($frmConfig) i teraz już nic mi nie działa tzn. nie działąją mi przyciski, nic się nie dzieje. Chcę aby w nowym oknie mógł "coś zrobić" a później klikając na przycisk Wróć($btnWroc) - wrócić do okna głównego. I tam też mieć możliwość wykonywania czynności(czyt. uruchamiania funkcji kluikając na przyciski).

 

Funkcja GUICtrlCreateTab tworzy zakładkę. Wszystko byłoby ok ale moje poszczególne GUI różni się rozmiarami więc ze względów estetycznych nie chciałbym tego stosować.

 

No chyba prościej nie potrafię :)

Weteran
Opublikowano

To stwórz dwa gui na początku i jedno ukryj.

A pod przycisk daj funkcję, aby się wyświetlał z powrotem.

To ci wystarczy.

GUISetState(@SW_SHOW,$GUI)

1329036830-U154499.png
Opublikowano

Tak mam ale mi nie działa. Tzn. nowe okno się wyświetla ale już nic w nim nie mogę zrobić(jak wciskam buttony nic się nie dzieje) działa jedynie X-zamknięcie. Wyżej podałem kod nie będę dublował. Pjęcia nie mam dlaczego tak się dzieje.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...