Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Переключение в GUI - Checkbox (http://forum.oszone.net/showthread.php?t=251686)

TERMINAL 17-01-2013 16:29 2068902

Переключение в GUI - Checkbox
 
Добрый день !
Написал скриптик :
Цитата:

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>

Global $Perekluchenie=0, $Checkbox2, $Checkbox4
HotKeySet("z", "_Zamena")

$Form1 = GUICreate("Form1", 633, 447, 192, 124)
$Tab1 = GUICtrlCreateTab(8, 8, 617, 433)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
$TabSheet1 = GUICtrlCreateTabItem("TabSheet1")
$Checkbox1 = GUICtrlCreateCheckbox("TEST 1", 124, 72, 97, 17)

$TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
$Checkbox3 = GUICtrlCreateCheckbox("TEST 3", 24, 160, 97, 17)
GUICtrlCreateTabItem("")
GUISetState(@SW_SHOW)

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Checkbox1
If $Perekluchenie=0 Then
MsgBox(0,"","TEST 1")
Else
MsgBox(0,"","TEST 2")
EndIf
EndSwitch
WEnd

Func _Zamena()
If $Perekluchenie=0 Then
GUICtrlDelete($Checkbox1)
$Checkbox1 = GUICtrlCreateCheckbox("TEST 2", 124, 72, 97, 17)
GUICtrlSetColor($Checkbox1, -1)
GUICtrlDelete($Checkbox3)
$Checkbox3 = GUICtrlCreateCheckbox("TEST 4", 24, 160, 97, 17)
GUICtrlSetColor($Checkbox3, -1)
$Perekluchenie=1
Else
GUICtrlDelete($Checkbox1)
$Checkbox1 = GUICtrlCreateCheckbox("TEST 1", 124, 72, 97, 17)
GUICtrlSetColor($Checkbox1, -1)
GUICtrlDelete($Checkbox3)
$Checkbox3 = GUICtrlCreateCheckbox("TEST 3", 24, 160, 97, 17)
GUICtrlSetColor($Checkbox3, -1)
$Perekluchenie=0
EndIf
EndFunc
Мне нужно при нажатии клавиши "z" чтобы менялся Checkbox-вроде бы как то сделал, но при изменении вылазит Checkbox и со второй закладки "$TabSheet2" и цвет фона Checkbox приобретается от цвета фона самого GUI.
Может кто-нибудь подскажет как это лучше организовать ?

Creat0R 17-01-2013 20:18 2069082

Цитата:

Цитата TERMINAL
при изменении вылазит Checkbox и со второй закладки "$TabSheet2" »

Это не изменение, а пересоздание, а так как таб уже закрыт, элементы помещаются после него, т.е не относятся к определённому табу.
Нужно либо переключать табы, либо не пересоздавать элементы, а задавать им новое значение:

Код:

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>

Global $Perekluchenie = 0

$Form1 = GUICreate("Form1", 633, 447, 192, 124)

$Tab1 = GUICtrlCreateTab(8, 8, 617, 433)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)

$TabSheet1 = GUICtrlCreateTabItem("TabSheet1")
$Checkbox1 = GUICtrlCreateCheckbox("TEST 1", 124, 72, 97, 17)

$TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
$Checkbox3 = GUICtrlCreateCheckbox("TEST 3", 24, 160, 97, 17)

GUICtrlCreateTabItem("")

$Dummy = GUICtrlCreateDummy()

Dim $aAccelKeys[1][2] = [["z", $Dummy]]
GUISetAccelerators($aAccelKeys, $Form1)

GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()

    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Checkbox1
            If $Perekluchenie = 0 Then
                MsgBox(0, "", "TEST 1")
            Else
                MsgBox(0, "", "TEST 2")
            EndIf
        Case $Dummy
            If $Perekluchenie = 0 Then
                GUICtrlSetData($Checkbox1, "TEST 2")
                GUICtrlSetData($Checkbox3, "TEST 4")
                $Perekluchenie = 1
            Else
                GUICtrlSetData($Checkbox1, "TEST 1")
                GUICtrlSetData($Checkbox3, "TEST 3")
                $Perekluchenie = 0
            EndIf
    EndSwitch
WEnd


TERMINAL 18-01-2013 11:00 2069365

Creat0R, Огромное спасибо !


Время: 09:41.

Время: 09:41.
© OSzone.net 2001-