Что нового

Как отобразить содержимое выпадающего списка 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,970
Репутация
1,459
Для установки ширины выпадающего списка есть функция
Если грубо, то умножаете количество символов самой длинной строки на среднюю/максимальную ширину символа и передаёте в функцию.
Для более точного расчёта длины строки с пикселях можете попробовать 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,970
Репутация
1,459
по второй части моего вопроса нет решения?
А какое вы хотите решение? Сами установили стиль - сами придумывайте "костыли" для корректного отображения. А почему оно так отображается - это в Microsoft.
 
Верх