Что нового

Как отобразить содержимое выпадающего списка GUICtrlCreateCombo

Malderin

Новичок
Сообщения
68
Репутация
1
Имею вот такой скрипт
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ComboConstants.au3>

Local $FileList = "\\XX-xx1\PROJECTS\XXX\Work\XXX-45\Bereeeeeee\Veeee_sixxxxxxa\Veee_AAA\X57755544\xxxxxxx.prt"
Example1()

Func Example1()
    Local $msg
    GUICreate("Мой GUI", 500, 100, -1, -1)
    $InputMask = GUICtrlCreateCombo('', 10, 10, 480, -1, $CBS_DROPDOWNLIST)
    GUISetState(@SW_SHOW)
    GUICtrlSetData($InputMask, "Пункт1|Пункт2|" & $FileList, "Пункт1")

    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                ExitLoop
        EndSwitch
    WEnd
    GUIDelete()
EndFunc   ;==>Example1

Самый последний пункт в выпадающем списке очень длинный.
Подскажите, как его сделать полностью видимым не меняя размер самого GUICtrlCreateCombo, т.е. GUICtrlCreateCombo имеет маленький размер по ширине, а выпадающий список нужно расширить по содежимому этого списка (т.е. по самому длинному пункту. Меня в принципе интересует самый конец пути. Попробовал прописать комбо так:
Код:
$InputMask = GUICtrlCreateCombo('', 10, 10, 480, -1, -1, $WS_EX_LAYOUTRTL)

Т.е. сделать форматирование списка по правому краю, но в этом случае появился неприятный баг. Строка стала отображаться так:
XX-xx1\PROJECTS\XXX\Work\XXX-45\Bereeeeeee\Veeee_sixxxxxxa\Veee_AAA\X57755544\xxxxxxx.prt\\
Т.е. первые 2 символа "\\" переехали назад.
Сама строка, которую я забираю себе в переменную при этом не испорчена, это просто вопрос отображения.
Подскажите как это поправить?
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Для установки ширины выпадающего списка есть функция
Код:
_GUICtrlComboBox_SetDroppedWidth()

Если грубо, то умножаете количество символов самой длинной строки на среднюю/максимальную ширину символа и передаёте в функцию.
Для более точного расчёта длины строки с пикселях можете попробовать StringSize UDF.
 
Автор
M

Malderin

Новичок
Сообщения
68
Репутация
1
Для установки ширины выпадающего списка есть функция
Я сделал вот так, осталось только вычислить ширину вместо 700, попробую сделать по вашему совету.
Код:
$InputMask = GUICtrlCreateCombo('', 10, 10, 480, -1, $CBS_DROPDOWNLIST)
    GUICtrlSendMsg(-1, $CB_SETDROPPEDWIDTH, 700, 0)


А по второй части моего вопроса нет решения? Вот по этой:
Строка стала отображаться так:
XX-xx1\PROJECTS\XXX\Work\XXX-45\Bereeeeeee\Veeee_sixxxxxxa\Veee_AAA\X57755544\xxxxxxx.prt\\
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
по второй части моего вопроса нет решения?
А какое вы хотите решение? Сами установили стиль - сами придумывайте "костыли" для корректного отображения. А почему оно так отображается - это в Microsoft.
 
Верх