|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Checkbox с изменяющимися иконками |
|
|
[решено] Checkbox с изменяющимися иконками
|
Старожил Сообщения: 247 |
http://forum.oszone.ru/post-479390.html
тут есть пример создания GUI с Checkbox, помогите добавить к чекбоксам изменяющиеся иконки т.е. создаеться список Checkbox и возле каждого Checkbox создаеться иконка, при нажатии "Выполнить" возле Checkbox-а операция которго сейчас выполняеться меняеться иконка и по окончанию выполнения она меняеться еще раз.СПАСИБО |
|
Отправлено: 14:10, 19-04-2010 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать #include <GUIConstantsEx.au3> #include <ButtonConstants.au3> Global $iIcon = -5 $hGUI = GUICreate("Test Script", 300, 200) $aCheckBox = _GUICtrlCreateCheckboxEx("CheckBox", 20, 40, -1, -1, "shell32.dll", $iIcon) $nStart = GUICtrlCreateButton("Выполнить", 20, 170) GUISetState(@SW_SHOW, $hGUI) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit Case $nStart $iIcon = BitNOT($iIcon) GUICtrlSetImage($aCheckBox[0], "shell32.dll", $iIcon) EndSwitch WEnd Func _GUICtrlCreateCheckboxEx($sText, $iLeft, $iTop, $iWidth, $iHeight, $sIconFile="", $nIconIndex=0) Local $aRetArr[2] $aRetArr[0] = GUICtrlCreateIcon($sIconFile, $nIconIndex, $iLeft + 17, $iTop + $iHeight + 3, 16, 16) GUICtrlSetState(-1, $GUI_DISABLE) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $aRetArr[1] = GUICtrlCreateCheckbox(" " & $sText & " ", $iLeft, $iTop, $iWidth, $iHeight, 0x04000000) ;$WS_CLIPSIBLINGS Return $aRetArr EndFunc |
------- Отправлено: 18:48, 19-04-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 247
|
А из-за чего он отображает не те иконки, например я ставлю 246 я уверен что в shell32 это одно а в итоге он показывает другое
|
Отправлено: 19:33, 19-04-2010 | #3 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Centrinar:
|
|
------- Отправлено: 22:46, 19-04-2010 | #4 |
Старожил Сообщения: 247
|
В элементе Button изображение заменяет надпись. Изображение можно установить также в Checkbox, если для него применяется стиль $BS_PUSHLIKE. В обоих случаях для изображения требуются стили $BS_ICON или $BS_BITMAP. Внимание. Если эта функция вызывается впервые для TreeView/Item или ListView/Item, то и все остальные добавляемые графы этих управляющих элементов будут по умолчанию использовать индикатор/изображение (icon/image). Но если функцию GUICtrlSetImage вызвать для TreeView или ListView, то все графы этих управляющих элементов поменяют свои изображения на указанные индикатор/изображение (icon/image). |
|
Отправлено: 23:12, 19-04-2010 | #5 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Centrinar:
|
|
------- Отправлено: 23:45, 19-04-2010 | #6 |
Старожил Сообщения: 247
|
|
Отправлено: 16:20, 20-04-2010 | #7 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Centrinar, зачем вы ссылки помещаете в тег кода?
Цитата Centrinar:
#include <GUIConstantsEx.au3> #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> ; Только эту строку и нужно править для добавления новых, или удаления пунктов ;) Global $sProgs = 'Setup1.exe=Прог1|Seup2.exe=Прог2|Seup3.exe=Прог3|Seup4.exe=Прог4|Seup5.exe=Прог5' ;Это так, чтобы проверить столбцы :) $sProgs &= $sProgs & '|' & $sProgs & '|' & $sProgs & '|' & $sProgs & '|' & $sProgs Global Const $aProgs = StringSplit($sProgs, '|') Global $anCheckBoxes[$aProgs[0]+1] Global $aCheckedIcons[$aProgs[0]+1] Global $aUnCheckedIcons[$aProgs[0]+1] $Form1 = GUICreate("", 500, 500, -1, -1) $iTop = 10 $iLeft = 20 For $i = 1 To $aProgs[0] $aCheckedIcons[$i] = -5 $aUnCheckedIcons[$i] = -4 $anCheckBoxes[$i] = _GUICtrlCreateCheckboxEx(StringRegExpReplace($aProgs[$i], '^.*=', ''), $iLeft, $iTop, -1, 15, "shell32.dll", $aUnCheckedIcons[$i]) $iTop += 20 If $iTop > 450 Then $iTop = 10 $iLeft += 100 EndIf Next $nStart = GUICtrlCreateButton("Выполнить", 10, 470, 80, 25) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $nStart For $i = 1 To $aProgs[0] $aCheckBox = $anCheckBoxes[$i] If GUICtrlRead($aCheckBox[1]) = 1 Then GUICtrlSetImage($aCheckBox[0], "shell32.dll", $aCheckedIcons[$i]) $sProgName = StringRegExpReplace($aProgs[$i], '^.*=', '') $sProgExe = StringRegExpReplace($aProgs[$i], '=.*$', '') MsgBox(64, $sProgName, $sProgExe) Else GUICtrlSetImage($aCheckBox[0], "shell32.dll", $aUnCheckedIcons[$i]) EndIf Next EndSwitch WEnd Func _GUICtrlCreateCheckboxEx($sText, $iLeft, $iTop, $iWidth, $iHeight, $sIconFile="", $nIconIndex=0) Local $aRetArr[2] $aRetArr[0] = GUICtrlCreateIcon($sIconFile, $nIconIndex, $iLeft + 17, $iTop, 16, 16) GUICtrlSetState(-1, $GUI_DISABLE) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $aRetArr[1] = GUICtrlCreateCheckbox(" " & $sText & " ", $iLeft, $iTop, $iWidth, $iHeight, $WS_CLIPSIBLINGS) Return $aRetArr EndFunc |
|
------- Последний раз редактировалось Creat0R, 21-04-2010 в 00:14. Причина: Поправка примера Отправлено: 21:02, 20-04-2010 | #8 |
Старожил Сообщения: 247
|
Я добавил что бы он создавала еще 1 или 2 столюца если чекбоксов становиться много
if $iTop > 450 & $iLeft = 20 Then $iTop = 20 & $iLeft = 120 if $iTop > 450 & $iLeft = 120 Then $iTop = 20 & $iLeft = 240 #include <GUIConstantsEx.au3> #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> ; Только эту строку и нужно править для добавления новых, или удаления пунктов ;) Global $sProgs = 'Setup1.exe=Прог1|Seup2.exe=Прог2|Seup3.exe=Прог3|Seup4.exe=Прог4|Seup5.exe=Прог5' Global Const $aProgs = StringSplit($sProgs, '|') Global $anCheckBoxes[$aProgs[0]+1] Global $aCheckedIcons[$aProgs[0]+1] Global $aUnCheckedIcons[$aProgs[0]+1] $Form1 = GUICreate("", 500, 500, -1, -1) $iTop = 10 $iLeft = 20 For $i = 1 To $aProgs[0] $aCheckedIcons[$i] = -5 $aUnCheckedIcons[$i] = -4 $anCheckBoxes[$i] = _GUICtrlCreateCheckboxEx(StringRegExpReplace($aProgs[$i], '^.*=', ''), $iLeft, $iTop, 100, 15, "shell32.dll", $aUnCheckedIcons[$i]) $iTop += 20 if $iTop > 450 & $iLeft = 20 Then $iTop = 20 & $iLeft = 120 if $iTop > 450 & $iLeft = 120 Then $iTop = 20 & $iLeft = 240 Next $nStart = GUICtrlCreateButton("Выполнить", 10, 110, 80, 25) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $nStart For $i = 1 To $aProgs[0] $aCheckBox = $anCheckBoxes[$i] If GUICtrlRead($aCheckBox[1]) = 1 Then GUICtrlSetImage($aCheckBox[0], "shell32.dll", $aCheckedIcons[$i]) $sProgName = StringRegExpReplace($aProgs[$i], '^.*=', '') $sProgExe = StringRegExpReplace($aProgs[$i], '=.*$', '') MsgBox(64, $sProgName, $sProgExe) Else GUICtrlSetImage($aCheckBox[0], "shell32.dll", $aUnCheckedIcons[$i]) EndIf Next EndSwitch WEnd Func _GUICtrlCreateCheckboxEx($sText, $iLeft, $iTop, $iWidth, $iHeight, $sIconFile="", $nIconIndex=0) Local $aRetArr[2] $aRetArr[0] = GUICtrlCreateIcon($sIconFile, $nIconIndex, $iLeft + 17, $iTop, 16, 16) GUICtrlSetState(-1, $GUI_DISABLE) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $aRetArr[1] = GUICtrlCreateCheckbox(" " & $sText & " ", $iLeft, $iTop, $iWidth, $iHeight, $WS_CLIPSIBLINGS) Return $aRetArr EndFunc |
Отправлено: 23:56, 20-04-2010 | #9 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Centrinar:
Я поправил свой предыдущий пример. |
|
------- Отправлено: 00:14, 21-04-2010 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Delphi - Как отключить все Checkbox'ы на форме? | R.M.L | Программирование и базы данных | 9 | 08-06-2009 00:59 | |
C/C++ - [решено] [C++Builder 2007] TTreeView & CheckBox | crashtuak | Программирование и базы данных | 1 | 12-04-2009 12:08 | |
Решено | только одна галка checkbox | Mavlyudov | Вебмастеру | 4 | 05-05-2006 13:47 | |
CheckBox в Ячейке DBGrid | Loki3D | Программирование и базы данных | 3 | 31-08-2005 22:54 | |
Visual Basic + CheckBox | Artya | Программирование и базы данных | 3 | 26-03-2003 13:23 |
|