[решено] Можно ли сделать ComboBox с иконками

Аватара пользователя
malev

[решено] Можно ли сделать ComboBox с иконками

Сообщение malev »

Можно ли сделать ComboBox с иконками наподобие такого:

Изображение

если можно подскажите как, возможно и через редактор KODA есть варианты?



похоже сам нашел, попробую _GUICtrlComboBoxEx_AddString($hWnd, $sText[, $iImage = -1[, $iSelecteImage = -1[, $iOverlayImage = -1[, $iIndent = -1[, $iParam = -1]]]]]) из GuiComboBoxEx.au3
Аватара пользователя
Creat0R

Re: [решено] Можно ли сделать ComboBox с иконками

Сообщение Creat0R »

Код:

Код: Выделить всё

#include 
#include 
#include 
;
$hMainGUI = GUICreate("ComboBox With Icons", 300, 150)
$hComboBox = _GUICtrlComboBoxEx_Create($hMainGUI, "", 20, 60, 260, 390, $CBS_DROPDOWNLIST)
$hImageList = _GUIImageList_Create(16, 16, 5, BitOr($ILC_MASK, $ILC_COLOR32), 1)
_GUICtrlComboBoxEx_SetImageList($hComboBox, $hImageList)
For $i = 0 To 50
    $nImage = _GUIImageList_AddIcon($hImageList, "Shell32.dll", $i)
    _GUICtrlComboBoxEx_AddString($hComboBox, "Icon " & $i, $nImage, $nImage)
Next
GUISetState()
While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            _GUIImageList_Destroy($hImageList)
            Exit
    EndSwitch
WEnd
Аватара пользователя
malev

Re: [решено] Можно ли сделать ComboBox с иконками

Сообщение malev »

Спасибо Creat0R, за оперативность у меня пример посложнее получился, если можно поясни

комментарии



Код:

Код: Выделить всё

#include 
#include 
#include 
#Region ### START Koda GUI section ### Form=
;~ создали форму
$Form1 = GUICreate("Test Form", 444, 222, 193, 115)
;~ создаем combo, указывая хэндл окна
$exCombo = _GUICtrlComboBoxEx_Create($form1,"",2, 2, 394, 100)
;~ создаем невидимый или виртуальный список картинок
;~ 16*16 будущий размер иконок, 5 - Use a 32 bit DIB section(видимо глубина цвета иконок)
;~ 1 - Use a mask (использовать маску,чтобы иконки казались на прозрачном фоне)
;~ 2 - The images in the lists are mirrored (не знаю что за параметр)
$IL=_GUIImageList_Create(16, 16, 5, 3)
;~ добавляем иконки, можно в цикле, если из библиотеки
For $x = 0 To 2
        _GUIImageList_AddIcon ($IL, @SystemDir & "\shell32.dll", $x)
    Next
;~ здесь по-видимому указывается цвет маски и рисунки накладываются??? для создания эффекта прозрачности
_GUIImageList_Add ($IL, _GUICtrlComboBoxEx_CreateSolidBitMap ($exCombo, 0xFF0000, 16, 16))
_GUIImageList_Add ($IL, _GUICtrlComboBoxEx_CreateSolidBitMap ($exCombo, 0x00FF00, 16, 16))
_GUIImageList_Add ($IL, _GUICtrlComboBoxEx_CreateSolidBitMap ($exCombo, 0x0000FF, 16, 16))
;~ три раза наверно потому что выпадающий список как раз на 3 элемента
;~ далее привязываем созданый список иконок/картинок к combo
_GUICtrlComboBoxEx_SetImageList ($exCombo, $IL)
;~ возможно кэшируем иконки???
_GUICtrlComboBoxEx_InitStorage ($exCombo, 150, 300)
;~ добавляем новую строку в combo с указанием индекса иконки из ImageList
_GUICtrlComboBoxEx_AddString($exCombo,"be-be-be",0,0)
_GUICtrlComboBoxEx_AddString($exCombo,"be-be-be",1,1)
_GUICtrlComboBoxEx_AddString($exCombo,"be-be-be",2,2)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd

кстати как код цветным сделать, а то стыдно уже

Simple Text Colorizer???
Аватара пользователя
Creat0R

Re: [решено] Можно ли сделать ComboBox с иконками

Сообщение Creat0R »

Цитата malev:



если можно поясни

комментарии
[решено] Можно ли сделать ComboBox с иконками




Так там же есть комментарии, и чем описания из справки не устраивают? Изображение




Цитата malev:



как код цветным сделать
[решено] Можно ли сделать ComboBox с иконками




Au3ToPost
.
Аватара пользователя
malev

Re: [решено] Можно ли сделать ComboBox с иконками

Сообщение malev »

ну комментарии то я сам и писал, вот и хочу знать правильно ли я понимаю код, в некоторых ставил знаки вопросов в которых сомневаюсь, про справку будет глупая отмазка - английский понимаю частично.
Аватара пользователя
Creat0R

Re: [решено] Можно ли сделать ComboBox с иконками

Сообщение Creat0R »

Цитата malev:



хочу знать правильно ли я понимаю код
[решено] Можно ли сделать ComboBox с иконками




Правильно, вот только много лишнего...





Код:

Код: Выделить всё

#include 
#include 
#include 
;
#Region ### START Koda GUI section ### Form=
;~ создали форму
$Form1 = GUICreate("Test Form", 444, 222, 193, 115)
;~ создаем combo, указывая хэндл окна
$exCombo = _GUICtrlComboBoxEx_Create($Form1, "", 2, 2, 394, 100)
;~ создаем невидимый или виртуальный список картинок
;~ 16*16 будущий размер иконок, 5 - Use a 32 bit DIB section(видимо глубина цвета иконок)
;~ 1 - Use a mask (использовать маску,чтобы иконки казались на прозрачном фоне)
;~ 2 - The images in the lists are mirrored (не знаю что за параметр)
$IL = _GUIImageList_Create(16, 16, 5, 3)
;~ добавляем иконки, можно в цикле, если из библиотеки
For $x = 0 To 2
    _GUIImageList_AddIcon($IL, @SystemDir & "\shell32.dll", $x)
;~ добавляем новую строку в combo с указанием индекса иконки из ImageList
    _GUICtrlComboBoxEx_AddString($exCombo, "be-be-be", $x, $x)
Next
;~ далее привязываем созданый список иконок/картинок к combo
_GUICtrlComboBoxEx_SetImageList($exCombo, $IL)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
;
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd
Аватара пользователя
malev

Re: [решено] Можно ли сделать ComboBox с иконками

Сообщение malev »

возник один ньюанс, какой стиль использовать чтобы получился курсор выделения на весь Combo, у меня получается курсор только на текст с иконкой.
Аватара пользователя
Creat0R

Re: [решено] Можно ли сделать ComboBox с иконками

Сообщение Creat0R »

Цитата malev:



чтобы получился курсор выделения на весь Combo
[решено] Можно ли сделать ComboBox с иконками




Что значит "курсор выделения"? Выделяется только необходимая часть (пустоту же нельзя выделить Изображение ), и это вроде стилями (или другими методами) не изменить.
Аватара пользователя
malev

Re: [решено] Можно ли сделать ComboBox с иконками

Сообщение malev »

а как же пример выше, в 1С, на рисунке выделена полностью вся строка до границы выпадающего списка, да и в стандартном Combo тоже также работает выделение?
Ответить

Вернуться в «AutoIt»