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

Lista rozwijana


Rekomendowane odpowiedzi

Opublikowano

Witam własnie piszę GUI do swojego programu. Potrzebuję 2 list rozwijanych, takich że po wybraniu pozycji w pierwszej liscie pojawiła się 2 lista odpowiednia dla danego wyboru i żeby ona mogła się zmieniać. To ma tak wyglądać że w momencie gdy w pierwszej liscie będzie wybrane 3,4 to ta druga lista ma się nie wyświetlać

Oto mój kod proszę o pomoc w GUI, jakieś wskazówki itp. 

 

#include <GUIConstants.au3>

GUICreate("Program")



$sFont = "Calibri"
GUISetFont(10, 400, 1)
GUICtrlCreateLabel("Pierwsza: ", 10, 25, 200, 300)
GUICtrlCreateLabel("Druga: ", 10, 55, 200, 300)


$hCombo=GUICtrlCreateCombo("1", 70, 20, -1, -1, $CBS_DROPDOWNLIST)  ; pierwsza pozycja listy
GUICtrlSetData(-1, "2|3|4", "1")
GUISetState()



Do
   $msg = GUIGetMsg()
   Switch GUICtrlRead($hCombo)
  Case "1"
  $hCombo=GUICtrlCreateCombo("9", 70, 50, -1, -1, $CBS_DROPDOWNLIST)  ; pierwsza pozycja listy
GUICtrlSetData(-1, "10|11|12", "9")
GUISetState()

      Case "2"
  $hCombo=GUICtrlCreateCombo("5", 70, 50, -1, -1, $CBS_DROPDOWNLIST)  ; pierwsza pozycja listy
GUICtrlSetData(-1, "6|7|8", "5")
GUISetState()

      Case "3"
        
      Case "4"
       
   EndSwitch
Until $msg = $GUI_EVENT_CLOSE

 

Opublikowano

Można to zrobić w ten sposób:

#include <GUIConstants.au3>

Dim $aWSK[2]=[0,1]
Local $hCombo1, $hCombo2, $hCombo3, $hCombo4

GUICreate("Program")
$hButton = GUICtrlCreateButton("TEST", 150,300, 100, 25)
$sFont = "Calibri"
GUISetFont(10, 400, 1)
GUICtrlCreateLabel("Pierwsza: ", 8, 25, 60, 20)
GUICtrlCreateLabel("Druga: ", 8, 55, 60, 20)

$hCombo=GUICtrlCreateCombo("1", 70, 20, 200, -1, $CBS_DROPDOWNLIST)  ; pierwsza pozycja listy
GUICtrlSetData($hCombo, "2|3|4", "1")
GUISetState()

Do
   $msg = GUIGetMsg()
   Switch GUICtrlRead($hCombo)
      Case "1"
	 If $aWSK[0]<>"1" Then	
            GUICtrlDelete($hCombo1)
            $hCombo1=GUICtrlCreateCombo("11", 70, 50, 200, -1, $CBS_DROPDOWNLIST)  ; pierwsza pozycja listy
            GUICtrlSetData(-1, "12|13|14", "11")
            GUISetState()
	    $aWSK[0]="1"
	 EndIf
      Case "2"
	 If $aWSK[0]<>"2" Then
            GUICtrlDelete($hCombo1)
            $hCombo1=GUICtrlCreateCombo("21", 70, 50, 200, -1, $CBS_DROPDOWNLIST)  ; pierwsza pozycja listy
            GUICtrlSetData(-1, "22|23|24|25|WASTA", "21")
            GUISetState()
	    $aWSK[0]="2"
	 EndIf
      Case "3"
	 If $aWSK[0]<>"3" Then
            GUICtrlDelete($hCombo1)
            $hCombo1=GUICtrlCreateCombo("31", 70, 50, 200, -1, $CBS_DROPDOWNLIST)  ; pierwsza pozycja listy
	    GUICtrlSetData(-1, "32|33|34", "31")
            GUISetState()
	    $aWSK[0]="3"
         EndIf
      Case "4"
	 If $aWSK[0]<>"4" Then
            GUICtrlDelete($hCombo1)
            $hCombo1=GUICtrlCreateCombo("41", 70, 50, 200, -1, $CBS_DROPDOWNLIST)  ; pierwsza pozycja listy
	    GUICtrlSetData(-1, "42|43|44", "41")
            GUISetState()
	    $aWSK[0]="4"
  	 EndIf
   EndSwitch
   $aWSK[1]=GUICtrlRead($hCombo1)
   If $msg = $hButton Then MsgBox(64, "WYBRANO", "Lista 1:  " & $aWSK[0] & @LF & "Lista 2:  " & $aWSK[1], 2)
   Sleep(20)
Until $msg = $GUI_EVENT_CLOSE

Tablica $aWSK zawiera informacje jakie pozycje list są wybrane.

A jak nie chcesz wyświetlać niektórych list to wystarczy zrobić tak jak poniżej ($aWSK[1]=0 oznacza, że lista drugiego poziomu nie jest wyświetlana):

#include <GUIConstants.au3>

Dim $aWSK[2]=[0,1]
Local $hCombo1, $hCombo2, $hCombo3, $hCombo4

GUICreate("Program")
$hButton = GUICtrlCreateButton("TEST", 150,300, 100, 25)
$sFont = "Calibri"
GUISetFont(10, 400, 1)
GUICtrlCreateLabel("Pierwsza: ", 8, 25, 60, 20)
GUICtrlCreateLabel("Druga: ", 8, 55, 60, 20)

$hCombo=GUICtrlCreateCombo("1", 70, 20, 200, -1, $CBS_DROPDOWNLIST)  ; pierwsza pozycja listy
GUICtrlSetData($hCombo, "2|3|4", "1")
GUISetState()

Do
   $msg = GUIGetMsg()
   Switch GUICtrlRead($hCombo)
      Case "1"
	 If $aWSK[0]<>"1" Then	
            GUICtrlDelete($hCombo1)
            $hCombo1=GUICtrlCreateCombo("11", 70, 50, 200, -1, $CBS_DROPDOWNLIST)  ; pierwsza pozycja listy
            GUICtrlSetData(-1, "12|13|14", "11")
            GUISetState()
	    $aWSK[0]="1"
	 EndIf
      Case "2"
	 If $aWSK[0]<>"2" Then
            GUICtrlDelete($hCombo1)
            $hCombo1=GUICtrlCreateCombo("21", 70, 50, 200, -1, $CBS_DROPDOWNLIST)  ; pierwsza pozycja listy
            GUICtrlSetData(-1, "22|23|24|25|WASTA", "21")
            GUISetState()
	    $aWSK[0]="2"
	 EndIf
      Case "3"
	 If $aWSK[0]<>"3" Then
            GUICtrlDelete($hCombo1)
            GUISetState()
	    $aWSK[0]="3"
         EndIf
      Case "4"
	 If $aWSK[0]<>"4" Then
            GUICtrlDelete($hCombo1)
            GUISetState()
	    $aWSK[0]="4"
  	 EndIf
   EndSwitch
   $aWSK[1]=GUICtrlRead($hCombo1)
   If $msg = $hButton Then MsgBox(64, "WYBRANO", "Lista 1:  " & $aWSK[0] & @LF & "Lista 2:  " & $aWSK[1], 2)
   Sleep(20)
Until $msg = $GUI_EVENT_CLOSE

Opublikowano

Dzięki właśnie o to mi chodziło. Strasznie pomogłeś mi w moim projekcie. Odpowiadałeś chyba na większość moich pytań. Wielkie dzięki.

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...