Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
[решено] Помогите правильно создать GUI окно с элементами

Аватара для Centrinar

Старожил


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

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


Изменения
Автор: Centrinar
Дата: 07-05-2010
Описание: опечатка
Я продолжаю изучение GUI и вот еще пара глупых вопросов. Создаю GUI со вкладками и чекбоксами вроде делаю все правильно но на первой вкладке чекбоксы не работают, а работают только на втрой. Где ошибка? И можно ли как то сократить скрипт т.е. составить более грамотно? СПАСИБО
PHP код: Выделить весь код

#include <GUIConstantsEx.au3>

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#requireadmin
#NoTrayIcon


Global $sProgs 'Setup1.exe=Прог1|Seup2.exe=Прог2|Seup3.exe=Прог3|Seup4.exe=Прог4|Seup5.exe=Прог5' 
Global $sProgs2 'Setup1.exe=Прог1|Seup2.exe=Прог2|Seup3.exe=Прог3|Seup4.exe=Прог4|Seup5.exe=Прог5' 

Global Const $aProgs StringSplit($sProgs'|')
Global Const 
$aProgs2 StringSplit($sProgs2'|')
Global 
$anCheckBoxes[$aProgs[0]+1]
Global 
$aCheckedIcons[$aProgs[0]+1]
Global 
$aUnCheckedIcons[$aProgs[0]+1]
Global 
$aCompleteIcons[$aProgs[0]+1]
Global 
$aInstalledIcons[$aProgs[0]+1]
Global 
$anCheckBoxes2[$aProgs2[0]+1]
Global 
$aCheckedIcons2[$aProgs2[0]+1]
Global 
$aUnCheckedIcons2[$aProgs2[0]+1]
Global 
$aCompleteIcons2[$aProgs2[0]+1]
Global 
$aInstalledIcons2[$aProgs2[0]+1]

GUICreate("My GUI Tab",600,550)  
GUISetBkColor(0xFFFFFF)
$nStart GUICtrlCreateButton("Выполнить"3051015030)
$tab=GUICtrlCreateTab (10,10580,480)
GUISetBkColor(0xFFFFFF)
$tab0=GUICtrlCreateTabitem ("tab0")
GUISetBkColor(0xFFFFFF)
$iTop 35
$iLeft 
15
For $i 1 To $aProgs[0]
    
$aCheckedIcons[$i] = "common\images\01.ico"
    
$aUnCheckedIcons[$i] = "common\images\01.ico"
    
$aInstalledIcons[$i] = "common\images\03.ico"
    
$aCompleteIcons[$i] = "common\images\02.ico"
    
$anCheckBoxes[$i] = _GUICtrlCreateCheckboxEx(StringRegExpReplace($aProgs[$i], '^.*='''), $iLeft$iTop, -115,  $aUnCheckedIcons[$i])
    
$iTop += 20
    
If $iTop 480 Then
        $iTop 
10
        $iLeft 
+= 170
    
EndIf
Next

$tab1
=GUICtrlCreateTabitem ("tab1")
GUISetBkColor(0xFFFFFF)
$iTop 35
$iLeft 
15
For $s 1 To $aProgs2[0]
    
$aCheckedIcons2[$s] = "common\images\01.ico"
    
$aUnCheckedIcons2[$s] = "common\images\01.ico"
    
$aInstalledIcons2[$s] = "common\images\03.ico"
    
$aCompleteIcons2[$s] = "common\images\02.ico"
    
$anCheckBoxes2[$s] = _GUICtrlCreateCheckboxEx(StringRegExpReplace($aProgs2[$s], '^.*='''), $iLeft$iTop, -115,  $aUnCheckedIcons2[$s])
    
$iTop += 20
    
If $iTop 480 Then
        $iTop 
10
        $iLeft 
+= 170
    
EndIf
Next




GUICtrlCreateTabitem 
("")   

GUISetState ()

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
                    $iChecked_Counter 
+= 1
                    GUICtrlSetImage
($aCheckBox[0], $aInstalledIcons[$i])
                    
$sProgName StringRegExpReplace($aProgs[$i], '^.*=''')
                    
$sProgExe StringRegExpReplace($aProgs[$i], '=.*$''')
                    
MsgBox(64$sProgName"zz"3)
                    
GUICtrlSetImage($aCheckBox[0], $aCompleteIcons[$i])
                    Else
                    
GUICtrlSetImage($aCheckBox[0], $aUnCheckedIcons[$i])
                EndIf
                     
Next
                
For $s 1 To $aProgs2[0]
               
$aCheckBox2 $anCheckBoxes2[$s]
               If 
GUICtrlRead($aCheckBox2[1]) = 1 Then
                    $sChecked_Counter 
+= 1
                    GUICtrlSetImage
($aCheckBox2[0], $aInstalledIcons2[$s])
                    
$sProgName2 StringRegExpReplace($aProgs2[$s], '^.*=''')
                    
$sProgExe2 StringRegExpReplace($aProgs2[$s], '=.*$''')
                    
MsgBox(64$sProgName2"zz"3)
                    
GUICtrlSetImage($aCheckBox2[0], $aCompleteIcons2[$s])
                    Else
                    
GUICtrlSetImage($aCheckBox2[0], $aUnCheckedIcons2[$s])
                EndIf
                
Next
            $iChecked_Counter 
0
            $sChecked_Counter 
0
                
EndSwitch
WEnd
    
Func _GUICtrlCreateCheckboxEx
($sText$iLeft$iTop$iWidth$iHeight$sIconFile=""$nIconIndex=0)
    
Local $aRetArr[2]

    
$aRetArr[0] = GUICtrlCreateIcon($sIconFile$nIconIndex$iLeft 17$iTop1616)
    
GUICtrlSetState(-1$GUI_DISABLE)

    
$aRetArr[1] = GUICtrlCreateCheckbox("       " $sText " "$iLeft$iTop$iWidth$iHeight)
    
GUICtrlSetBkColor($aRetArr[1], 0xFFFFFF)

    Return 
$aRetArr
EndFunc 


Отправлено: 15:52, 07-05-2010

 

Аватара для Creat0R

Must AutoIt


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

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


Цитата Centrinar:
на первой вкладке чекбоксы не работают, а работают только на втрой »
У меня почти все неработают, это из за того что иконка чекбокса не найдена, и элемент GUICtrlCreateIcon не создаётся, а т.к после него вызывается GUICtrlSetState(-1, $GUI_DISABLE), оно срабатывает для предыдущего элемента, это получается последний созданы чексбокс.

Вобщем нужно заменить:

Код: Выделить весь код
GUICtrlSetState(-1, $GUI_DISABLE)
на
Код: Выделить весь код
GUICtrlSetState($aRetArr[0], $GUI_DISABLE)

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

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

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


Отправлено: 17:52, 07-05-2010 | #2



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

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


Аватара для Centrinar

Старожил


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

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


насчет иконок, в этом стиле они вообще не отображаються но если изменить строку $aRetArr[1] на
PHP код: Выделить весь код

$aRetArr[1] = GUICtrlCreateCheckbox("       " $sText " "$iLeft$iTop$iWidth$iHeight$WS_CLIPSIBLINGS

иконки отображаються а надписи и сами чекбоксы нет. С чем то связанно?

Отправлено: 17:58, 07-05-2010 | #3


Аватара для 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


Отправлено: 18:35, 07-05-2010 | #4


Аватара для Centrinar

Старожил


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

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


так без него иконки не отображаюьтся, какой стиль тоогда?

Отправлено: 18:44, 07-05-2010 | #5


Аватара для Creat0R

Must AutoIt


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

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


Цитата Centrinar:
без него иконки не отображаюьтся »
Мы это уже кажется проходили.

Цитата Centrinar:
PHP код »
Нужно заключать либо в теги code, либо разукрашивать с Au3ToPost.

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

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

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


Отправлено: 19:17, 07-05-2010 | #6


Аватара для Centrinar

Старожил


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

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


Я помню, так в этом случ. я никаких картинок не создаю и все элементы создаю в конце

Отправлено: 19:28, 07-05-2010 | #7


Аватара для Centrinar

Старожил


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

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


Код: Выделить весь код
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#requireadmin
#NoTrayIcon

Global $sProgs = 'Setup1.exe=Opera|Seup2.exe=Прог2|Seup3.exe=Прог3|Seup4.exe=Прог4|Seup5.exe=Прог5'
Global $sProgs2 = 'Setup1.exe=Прог1|Seup2.exe=Прог2|Seup3.exe=Прог3|Seup4.exe=Прог4|Seup5.exe=Прог5'

Global Const $aProgs = StringSplit($sProgs, '|')
Global Const $aProgs2 = StringSplit($sProgs2, '|')
Global $anCheckBoxes[$aProgs[0]+1]
Global $aCheckedIcons[$aProgs[0]+1]
Global $aUnCheckedIcons[$aProgs[0]+1]
Global $aCompleteIcons[$aProgs[0]+1]
Global $aInstalledIcons[$aProgs[0]+1]
Global $aDescription[$aProgs[0]+1]

Global $anCheckBoxes2[$aProgs2[0]+1]
Global $aCheckedIcons2[$aProgs2[0]+1]
Global $aUnCheckedIcons2[$aProgs2[0]+1]
Global $aCompleteIcons2[$aProgs2[0]+1]
Global $aInstalledIcons2[$aProgs2[0]+1]

GUICreate("My GUI Tab",600,550)
GUISetBkColor(0xFFFFFF)
$nStart = GUICtrlCreateButton("Выполнить", 30, 510, 150, 30)
$tab=GUICtrlCreateTab (10,10, 580,480)
GUISetBkColor(0xFFFFFF)
$tab0=GUICtrlCreateTabitem ("tab0")
GUISetBkColor(0xFFFFFF)
$iTop = 40
$iLeft = 15
For $i = 1 To $aProgs[0]
    $aCheckedIcons[$i] = "common\images\01.ico"
    $aUnCheckedIcons[$i] = "common\images\01.ico"
    $aInstalledIcons[$i] = "common\images\03.ico"
    $aCompleteIcons[$i] = "common\images\02.ico"
    $sProgName = StringRegExpReplace($aProgs[$i], '^.*=', '')
    $anCheckBoxes[$i] = _GUICtrlCreateCheckboxEx(StringRegExpReplace($aProgs[$i], '^.*=', ''), $iLeft, $iTop, -1, 15,  $aUnCheckedIcons[$i])
    $iTop += 80
    If $iTop > 480 Then
        $iTop = 10
        $iLeft += 170
    EndIf
Next

$tab1=GUICtrlCreateTabitem ("tab1")
GUISetBkColor(0xFFFFFF)
$iTop = 40
$iLeft = 15
For $s = 1 To $aProgs2[0]
    $aCheckedIcons2[$s] = "common\images\01.ico"
    $aUnCheckedIcons2[$s] = "common\images\01.ico"
    $aInstalledIcons2[$s] = "common\images\03.ico"
    $aCompleteIcons2[$s] = "common\images\02.ico"
    $anCheckBoxes2[$s] = _GUICtrlCreateCheckboxEx(StringRegExpReplace($aProgs2[$s], '^.*=', ''), $iLeft, $iTop, -1, 15,  $aUnCheckedIcons2[$s])
    $iTop += 40
    If $iTop > 480 Then
        $iTop = 10
        $iLeft += 170
    EndIf
Next

GUICtrlCreateTabitem ("")

GUISetState ()

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], $aInstalledIcons[$i])
                    $sProgName = StringRegExpReplace($aProgs[$i], '^.*=', '')
                    $sProgExe = StringRegExpReplace($aProgs[$i], '=.*$', '')
                    MsgBox(64, $sProgName, "zz", 3)
                    GUICtrlSetImage($aCheckBox[0], $aCompleteIcons[$i])
                    Else
                    GUICtrlSetImage($aCheckBox[0], $aUnCheckedIcons[$i])
                EndIf
                     Next
                For $s = 1 To $aProgs2[0]
            $aCheckBox2 = $anCheckBoxes2[$s]
               If GUICtrlRead($aCheckBox2[1]) = 1 Then
                    GUICtrlSetImage($aCheckBox2[0], $aInstalledIcons2[$s])
                    $sProgName2 = StringRegExpReplace($aProgs2[$s], '^.*=', '')
                    $sProgExe2 = StringRegExpReplace($aProgs2[$s], '=.*$', '')
                    MsgBox(64, $sProgName2, "zz", 3)
                    GUICtrlSetImage($aCheckBox2[0], $aCompleteIcons2[$s])
                    Else
                    GUICtrlSetImage($aCheckBox2[0], $aUnCheckedIcons2[$s])
                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($aRetArr[0], $GUI_DISABLE)

    $aRetArr[1] = GUICtrlCreateCheckbox("       " & $sText & " ", $iLeft, $iTop, $iWidth, $iHeight);, $WS_CLIPSIBLINGS)
    GUICtrlSetBkColor($aRetArr[1], 0xFFFFFF)

    Return $aRetArr
EndFunc

Отправлено: 19:44, 07-05-2010 | #8


Аватара для Creat0R

Must AutoIt


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

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


Centrinar, я если честно не улавливаю суть проблемы. Что конкретно ождается от данного примера? и мне нужны изображения чтобы его проверить как следует.

Цитата 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


Отправлено: 19:49, 07-05-2010 | #9


Аватара для Centrinar

Старожил


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

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


Вложения
Тип файла: rar Пример.rar
(90.3 Kb, 31 просмотров)

Вот пример, думаю увидешь проблемму

Отправлено: 19:54, 07-05-2010 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Создать дочернее окно IE Shampur AutoIt 9 20-08-2009 18:55
[решено] Создать окно WMP в GUI beve AutoIt 5 09-07-2009 15:52
[решено] Как прилепить некое окно GUI к координатам окна другой проги beve AutoIt 4 09-02-2009 13:41
Как правильно создать Ramdisk? iii1961 Материнские платы и память 5 31-08-2008 21:30
Как правильно создать локал админа? Ferum01 Microsoft Windows NT/2000/2003 4 02-09-2007 19:40




 
Переход