Функция GUICtrlCreateCombo

         Описание функции


GUICtrlCreateCombo

Создаёт ComboBox в GUI.

GUICtrlCreateCombo ( "text", left, top [, width [, height [, style = -1 [, exStyle = -1 ]]]] )

Параметры

text Текст, который первым будет отображаться в выпадающем списке.
left Координата левого края. Если -1 - тогда координата в соответствии с GUICoordMode.
top Координата верхнего края. Если -1 - тогда координата в соответствии с GUICoordMode.
width [необязательный] Ширина элемента (по умолчанию предыдущее значение).
height [необязательный] Высота элемента (по умолчанию предыдущее значение).
style [необязательный] Стиль элемента. Смотрите Стили элементов GUI в приложении.

-1 - по умолчанию : $CBS_DROPDOWN, $CBS_AUTOHSCROLL, $WS_VSCROLL
принудительный стиль : $WS_TABSTOP
exStyle [необязательный] Расширенный стиль элемента. Смотрите таблицу расширенных стилей.

Возвращаемое значение

Успех:Возвращает идентификатор (controlID) нового элемента.
Ошибка:Возвращает 0.

Примечания

Для получения параметров элемента смотрите GUICtrlRead.
Чтобы установить или изменить параметры элемента смотрите GUICtrlUpdate....

Под Windows XP/2003 будет автоматически установлен размер открытого combo. На других версиях Windows вы можете определить этот размер параметром "height", если по умолчанию высота не достаточна, чтобы вместить по меньшей мере одну строку.

Чтобы объединить стили со стилем по умолчанию используйте BitOR($GUI_SS_DEFAULT_COMBO, новый стиль,...).

Чтобы использовать параметры, указанные выше, вы должны включить в ваш скрипт #include <ComboConstants.au3>.

По умолчанию стиль изменения размеров $GUI_DOCKHEIGHT (не изменяется высота).

См. также

GUICoordMode (Опция), GUICtrlSetData, GUICtrlUpdate..., GUIGetMsg

Пример

#include <GUIConstantsEx.au3>
#include <ComboConstants.au3>
#include <WindowsConstants.au3>

Local $msg, $Combo1, $Combo2, $hGUI, $add, $add_set, $insert, $clear, $close, $index, $read, $setsel, $count, $select, $find_string, $del_item, $tmp, $sList
$hGUI = GUICreate("Раскрывающийся список") ; Создаёт окно в центре экрана

; Генерирует список пунктов для Combo1
For $i = 1 To 100
    $sList &= 'Пункт ' & $i & '|'
Next
$sList = StringTrimRight($sList, 1)

; Создаёт "Combo" со стилем точного указания высоты выпадающего списка
$Combo1 = GUICtrlCreateCombo("", 10, 10, 200, 150, BitOR($GUI_SS_DEFAULT_COMBO, $CBS_NOINTEGRALHEIGHT))
GUICtrlSetData(-1, $sList , "Пункт 3") ; добавляет другие пункты и устанавливает новый по умолчанию
GUICtrlSendMsg(-1, $CB_SETDROPPEDWIDTH, 370, 0) ; Ширина выпадающего списка

$Combo2 = GUICtrlCreateCombo("", 10, 40, 200, 23, $CBS_DROPDOWNLIST + $WS_VSCROLL) ; стиль не редактируемого списка
GUICtrlSetData(-1, "не редактируемый|элемент1|элемент2|элемент3|элемент4|Отсчёт с 0", "не редактируемый")

$read = GUICtrlCreateButton("Текст выбранного", 233, 30, 132, 25)
$index = GUICtrlCreateButton("Индекс выделенного", 233, 60, 132, 25)
$setsel = GUICtrlCreateButton("Выделить пункт 4", 233, 90, 132, 25)
$select = GUICtrlCreateButton("Выделить элемент1", 233, 120, 132, 25)
$find_string = GUICtrlCreateButton("Найти строку элемент3", 233, 150, 132, 25)
$del_item = GUICtrlCreateButton("Удалить строку 3", 233, 180, 132, 25)
$count = GUICtrlCreateButton("Количество пунктов", 233, 210, 132, 25)
$add = GUICtrlCreateButton("Добавить пункт", 233, 240, 132, 25)
$add_set = GUICtrlCreateButton("Добавить и выбрать", 233, 270, 132, 25)
$insert = GUICtrlCreateButton("Вставить в позицию", 233, 300, 132, 25)
$clear = GUICtrlCreateButton("Очистить список", 233, 330, 132, 25)

GUISetState() ; показывает созданное окно

; Запускается цикл опроса GUI до тех пор пока окно не будет закрыто
While 1
    $msg = GUIGetMsg()
    Switch $msg
        Case $GUI_EVENT_CLOSE
            ExitLoop
        Case $Combo1
            MsgBox(4096, 'Тест', 'Combo 1, выбор: "' & GUICtrlRead($Combo1) & '"', 0, $hGUI)
        Case $Combo2
            MsgBox(4096, 'Тест', 'Combo 2, выбор: "' & GUICtrlRead($Combo2) & '"', 1, $hGUI)
        Case $add
            GUICtrlSetData($Combo2, "Добавленный пункт|") ; без символа "|" повторный вызов делает выбор
        Case $add_set
            GUICtrlSetData($Combo2, "Пункт добавлен и выбран|", "Пункт добавлен и выбран") ; без символа "|" повторный вызов делает выбор
        Case $insert
            GUICtrlSendMsg($Combo2, $CB_INSERTSTRING, 3, 'Вставлен в позицию 3')
        Case $clear
            GUICtrlSetData($Combo2, "|")
            ; GUICtrlSendMsg($Combo2, $CB_RESETCONTENT, 0, 0) ; или так
        Case $index
            $tmp = GUICtrlSendMsg($Combo2, $CB_GETCURSEL, 0, 0)
            MsgBox(4096, 'Индекс выбранного пункта', $tmp)
        Case $read
            $tmp = GUICtrlRead($Combo2)
            MsgBox(4096, 'Текст выбранного пункта в списке', $tmp)
        Case $setsel
            GUICtrlSendMsg($Combo2, $CB_SETCURSEL, 4, 0)
        Case $count
            $tmp = GUICtrlSendMsg($Combo2, $CB_GETCOUNT, 0, 0)
            MsgBox(4096, 'Количество пунктов в списке', $tmp)
        Case $select
            GUICtrlSendMsg($Combo2, $CB_SELECTSTRING, 0, 'элемент1')
        Case $find_string
            $tmp = GUICtrlSendMsg($Combo2, $CB_FINDSTRINGEXACT, 0, 'элемент3')
            MsgBox(4096, 'Найдена точная строка в списке - элемент3', 'Индекс = ' & $tmp)
        Case $del_item
            $tmp = GUICtrlSendMsg($Combo2, $CB_DELETESTRING, 3, 0)
    EndSwitch
WEnd