Войти

Показать полную графическую версию : [решено] Переключение в GUI - Checkbox


TERMINAL
17-01-2013, 16:29
Добрый день !
Написал скриптик :

#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
при изменении вылазит Checkbox и со второй закладки "$TabSheet2" »
Это не изменение, а пересоздание, а так как таб уже закрыт, элементы помещаются после него, т.е не относятся к определённому табу.
Нужно либо переключать табы, либо не пересоздавать элементы, а задавать им новое значение:

#include (http://autoit-script.ru/autoit3_docs/keywords.htm##include) <ButtonConstants.au3>
#include (http://autoit-script.ru/autoit3_docs/keywords.htm##include) <GUIConstantsEx.au3>
#include (http://autoit-script.ru/autoit3_docs/keywords.htm##include) <TabConstants.au3>
#include (http://autoit-script.ru/autoit3_docs/keywords.htm##include) <WindowsConstants.au3>

Global (http://www.autoitscript.com/autoit3/docs/keywords.htm#Global) $Perekluchenie = 0

$Form1 = GUICreate (http://autoit-script.ru/autoit3_docs/functions/GUICreate.htm)("Form1", 633, 447, 192, 124)

$Tab1 = GUICtrlCreateTab (http://autoit-script.ru/autoit3_docs/functions/GUICtrlCreateTab.htm)(8, 8, 617, 433)
GUICtrlSetResizing (http://autoit-script.ru/autoit3_docs/functions/GUICtrlSetResizing.htm)(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)

$TabSheet1 = GUICtrlCreateTabItem (http://autoit-script.ru/autoit3_docs/functions/GUICtrlCreateTabItem.htm)("TabSheet1")
$Checkbox1 = GUICtrlCreateCheckbox (http://autoit-script.ru/autoit3_docs/functions/GUICtrlCreateCheckbox.htm)("TEST 1", 124, 72, 97, 17)

$TabSheet2 = GUICtrlCreateTabItem (http://autoit-script.ru/autoit3_docs/functions/GUICtrlCreateTabItem.htm)("TabSheet2")
$Checkbox3 = GUICtrlCreateCheckbox (http://autoit-script.ru/autoit3_docs/functions/GUICtrlCreateCheckbox.htm)("TEST 3", 24, 160, 97, 17)

GUICtrlCreateTabItem (http://autoit-script.ru/autoit3_docs/functions/GUICtrlCreateTabItem.htm)("")

$Dummy = GUICtrlCreateDummy (http://autoit-script.ru/autoit3_docs/functions/GUICtrlCreateDummy.htm)()

Dim (http://www.autoitscript.com/autoit3/docs/keywords.htm#Dim) $aAccelKeys[1][2] = [["z", $Dummy]]
GUISetAccelerators (http://autoit-script.ru/autoit3_docs/functions/GUISetAccelerators.htm)($aAccelKeys, $Form1)

GUISetState (http://autoit-script.ru/autoit3_docs/functions/GUISetState.htm)(@SW_SHOW (http://autoit-script.ru/autoit3_docs/macros.htm#@sw_show))

While (http://www.autoitscript.com/autoit3/docs/keywords.htm#While) 1
$nMsg = GUIGetMsg (http://autoit-script.ru/autoit3_docs/functions/GUIGetMsg.htm)()

Switch (http://www.autoitscript.com/autoit3/docs/keywords.htm#Switch) $nMsg
Case (http://www.autoitscript.com/autoit3/docs/keywords.htm#Case) $GUI_EVENT_CLOSE
Exit (http://www.autoitscript.com/autoit3/docs/keywords.htm#Exit)
Case (http://www.autoitscript.com/autoit3/docs/keywords.htm#Case) $Checkbox1
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $Perekluchenie = 0 Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
MsgBox (http://autoit-script.ru/autoit3_docs/functions/MsgBox.htm)(0, "", "TEST 1")
Else (http://www.autoitscript.com/autoit3/docs/keywords.htm#Else)
MsgBox (http://autoit-script.ru/autoit3_docs/functions/MsgBox.htm)(0, "", "TEST 2")
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
Case (http://www.autoitscript.com/autoit3/docs/keywords.htm#Case) $Dummy
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $Perekluchenie = 0 Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
GUICtrlSetData (http://autoit-script.ru/autoit3_docs/functions/GUICtrlSetData.htm)($Checkbox1, "TEST 2")
GUICtrlSetData (http://autoit-script.ru/autoit3_docs/functions/GUICtrlSetData.htm)($Checkbox3, "TEST 4")
$Perekluchenie = 1
Else (http://www.autoitscript.com/autoit3/docs/keywords.htm#Else)
GUICtrlSetData (http://autoit-script.ru/autoit3_docs/functions/GUICtrlSetData.htm)($Checkbox1, "TEST 1")
GUICtrlSetData (http://autoit-script.ru/autoit3_docs/functions/GUICtrlSetData.htm)($Checkbox3, "TEST 3")
$Perekluchenie = 0
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
EndSwitch (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndSwitch)
WEnd (http://www.autoitscript.com/autoit3/docs/keywords.htm#WEnd)

TERMINAL
18-01-2013, 11:00
Creat0R, Огромное спасибо !




© OSzone.net 2001-2012