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

[Pytanie] Combobox


Rekomendowane odpowiedzi

Opublikowano

Sprobuj tak:

$Combo1 = GUICtrlCreateCombo("", 264, 184, 145, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL,$WS_VSCROLL))
GUICtrlSetData(-1, "1|2|3")

 

Opublikowano

Przykładowo:

$Combo6 = GUICtrlCreateCombo("A", 112, 224, 97, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "B|C|D|E|F", "A")

A jest wtedy pierwszą opcją.

9obpmnjr.png

Opublikowano

Chodzi mi o to, że:

$Combo6 = GUICtrlCreateCombo("", 112, 224, 97, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "B|C|D|E|F")

To żeby po rozsunięciu listy D było na jej początku.

obraz24.png


Opublikowano

Chodzi mi o to, że:

$Combo6 = GUICtrlCreateCombo("", 112, 224, 97, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "B|C|D|E|F")

To żeby po rozsunięciu listy D było na jej początku.

 

o takie cos chodzilo ? :

#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiComboBox.au3>
$Form1 = GUICreate("Form1", 216, 53, -1, -1)
$Combo1 = GUICtrlCreateCombo("", 8, 8, 201, 25, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL,$WS_VSCROLL))
GUICtrlSetData(-1, "1|2|3|4|5|6|7|8|9|10")
GUISetState(@SW_SHOW)
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Combo1
			combo()
	EndSwitch
WEnd
Func combo()
	$aList = _GUICtrlComboBox_GetListArray($Combo1)
	For $x = 1 To $aList[0]
		If GUICtrlRead($Combo1) = $aList[$x] Then
			$a = GUICtrlRead($Combo1)
			_GUICtrlComboBox_DeleteString($Combo1, $x - 1)
			_GUICtrlComboBox_InsertString($Combo1, $a, 0)
			$aList = _GUICtrlComboBox_GetListArray($Combo1)
			GUICtrlSetData($Combo1,$aList[1])
		EndIf
	Next
EndFunc

Opublikowano
#include <GuiComboBox.au3>
#include <GuiConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 179, 47, 192, 124)
$Combo1 = GUICtrlCreateCombo("Combo1", 8, 8, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "B|C|D|E|F")
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
#EndRegion ### END Koda GUI section ###


While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit


    EndSwitch
WEnd


Func WM_COMMAND($hWndGUI, $MsgID, $WParam, $LParam)
    If Not BitAND(WinGetState($hWndGUI), 2) Then Return $GUI_RUNDEFMSG
    Local $iIDFrom = BitAND($wParam, 0xFFFF) ; Low Word
    Local $iCode = BitShift($wParam, 16) ; Hi Word
    Switch $iIDFrom
        Case $Combo1
            Switch $iCode
                Case 1
                    Local $sComboData = GUICtrlRead($iIDFrom)
                    Local $sComboIndex = ControlCommand($hWndGUI, "", $iIDFrom, "FindString", $sComboData)
                    _GUICtrlComboBox_DeleteString($Combo1, $sComboIndex)
                    _GUICtrlComboBox_InsertString($Combo1,$sComboData,0)
                    _GUICtrlComboBox_SetCurSel($Combo1,0)
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc

to jest do pierwszego pytania, po znaznaczeniu, aby przenioslo na góre, a jak chcesz po otwarciu wykonac komende to zmieniasz w wm_command case na 7, funkcje do comboboxa masz w dodatkowym libie

tutaj masz guiregistermsg

http://www.autoitscript.com/forum/topic/59008-combobox-handler-example/

a tu do libów

http://www.autoitscript.com/autoit3/docs/libfunctions/GuiComboBoxEx%20Management.htm

http://www.autoitscript.com/autoit3/docs/libfunctions/GuiComboBox%20Management.htm

Opublikowano

 

o takie cos chodzilo ? :

#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiComboBox.au3>
$Form1 = GUICreate("Form1", 216, 53, -1, -1)
$Combo1 = GUICtrlCreateCombo("", 8, 8, 201, 25, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL,$WS_VSCROLL))
GUICtrlSetData(-1, "1|2|3|4|5|6|7|8|9|10")
GUISetState(@SW_SHOW)
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Combo1
			combo()
	EndSwitch
WEnd
Func combo()
	$aList = _GUICtrlComboBox_GetListArray($Combo1)
	For $x = 1 To $aList[0]
		If GUICtrlRead($Combo1) = $aList[$x] Then
			$a = GUICtrlRead($Combo1)
			_GUICtrlComboBox_DeleteString($Combo1, $x - 1)
			_GUICtrlComboBox_InsertString($Combo1, $a, 0)
			$aList = _GUICtrlComboBox_GetListArray($Combo1)
			GUICtrlSetData($Combo1,$aList[1])
		EndIf
	Next
EndFunc

 

 

o takie cos chodzilo ? :

#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiComboBox.au3>
$Form1 = GUICreate("Form1", 216, 53, -1, -1)
$Combo1 = GUICtrlCreateCombo("", 8, 8, 201, 25, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL,$WS_VSCROLL))
GUICtrlSetData(-1, "1|2|3|4|5|6|7|8|9|10")
GUISetState(@SW_SHOW)
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Combo1
			combo()
	EndSwitch
WEnd
Func combo()
	$aList = _GUICtrlComboBox_GetListArray($Combo1)
	For $x = 1 To $aList[0]
		If GUICtrlRead($Combo1) = $aList[$x] Then
			$a = GUICtrlRead($Combo1)
			_GUICtrlComboBox_DeleteString($Combo1, $x - 1)
			_GUICtrlComboBox_InsertString($Combo1, $a, 0)
			$aList = _GUICtrlComboBox_GetListArray($Combo1)
			GUICtrlSetData($Combo1,$aList[1])
		EndIf
	Next
EndFunc

 

Nie o to mi chodzi.

Z góry, żeby jak odpalam program to tworzy się ta lista i pewien element jest zawsze na niej ostatni, a liczba elementów się zmienia.

 

@UP Dzięki, zaraz sprawdzę.

obraz24.png


Opublikowano

Nie o to mi chodzi.

Z góry, żeby jak odpalam program to tworzy się ta lista i pewien element jest zawsze na niej ostatni, a liczba elementów się zmienia.

 

@UP Dzięki, zaraz sprawdzę.

do funkcji dodawania

 

http://www.autoitscript.com/autoit3/docs/libfunctions/_GUICtrlComboBoxEx_FindStringExact.htm  <-- szukasz stringu(zwraca index)
http://www.autoitscript.com/autoit3/docs/libfunctions/_GUICtrlComboBoxEx_GetCount.htm <-- zwraca ilosc elementów
_GUICtrlComboBox_DeleteString($Combo1,szukany string)
                    _GUICtrlComboBox_InsertString($Combo1,$sComboData,ilosc elementów -1)
 

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...