Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Checkbox с изменяющимися иконками

Ответить
Настройки темы
[решено] Checkbox с изменяющимися иконками

Аватара для Centrinar

Старожил


Сообщения: 247
Благодарности: 1

Профиль | Цитировать


Изменения
Автор: Creat0R
Дата: 19-04-2010
Описание: Поправка ссылки
http://forum.oszone.ru/post-479390.html
тут есть пример создания GUI с Checkbox, помогите добавить к чекбоксам изменяющиеся иконки т.е. создаеться список Checkbox и возле каждого Checkbox создаеться иконка, при нажатии "Выполнить" возле Checkbox-а операция которго сейчас выполняеться меняеться иконка и по окончанию выполнения она меняеться еще раз.СПАСИБО

Отправлено: 14:10, 19-04-2010

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить 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

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:48, 19-04-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Centrinar

Старожил


Сообщения: 247
Благодарности: 1

Профиль | Цитировать


А из-за чего он отображает не те иконки, например я ставлю 246 я уверен что в shell32 это одно а в итоге он показывает другое

Отправлено: 19:33, 19-04-2010 | #3


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата Centrinar:
из-за чего он отображает не те иконки »
А что в справке к «GUICtrlSetImage» об этом сказано?

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:46, 19-04-2010 | #4


Аватара для Centrinar

Старожил


Сообщения: 247
Благодарности: 1

Профиль | Цитировать


Код: Выделить весь код
В элементе 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


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата Centrinar:
новичек врятли нормально поймет »
Это потому что справка на русском не обновлена. В английской версии на которую я указал ссылкой, сказано, что положительные числа представляют “строковое имя” иконки в файле, а негативные представляют числовое имя, т.е в последовательности нахождения (позиции) иконки в файле.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 23:45, 19-04-2010 | #6


Аватара для Centrinar

Старожил


Сообщения: 247
Благодарности: 1

Профиль | Цитировать


Помогите пожалуйста правильно объеденить скрипт этот с
Код: Выделить весь код
http://forum.oszone.net/thread-173577.html

Отправлено: 16:20, 20-04-2010 | #7


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить 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

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Последний раз редактировалось Creat0R, 21-04-2010 в 00:14. Причина: Поправка примера

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:02, 20-04-2010 | #8


Аватара для Centrinar

Старожил


Сообщения: 247
Благодарности: 1

Профиль | Цитировать


Я добавил что бы он создавала еще 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


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата Centrinar:
добавил что бы он создавала еще 1 или 2 столюца если чекбоксов становиться много »
С чего вы взяли что так можно присваивать значения переменным? Справку почитайте.
Я поправил свой предыдущий пример.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:14, 21-04-2010 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Checkbox с изменяющимися иконками

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход