Что нового

Как скрыть вкладки, а по нажатию кнопки отобразить другие

blacksergo

Новичок
Сообщения
20
Репутация
1
Имеется форма с двумя кнопками и несколько вкладок. Как при нажатиии кнопки 2 отобразить другие вкладки, а при нажатии кнопки 1 вернуть предыдущие вкладки обратно.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Предупреждение
Нет надобности дублировать темы! Новую удалил.
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
Обработай нажатие на кнопки и меняй вкладки с помощью команды
GUICtrlSetData.
 
Автор
B

blacksergo

Новичок
Сообщения
20
Репутация
1
edyapd сказал(а):
Обработай нажатие на кнопки и меняй вкладки с помощью команды
GUICtrlSetData.
Вот не так работающий код:
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Dialog", 567, 427, 302, 218)

$Button1 = GUICtrlCreateButton("Button1", 8, 24, 75, 25)
GUICtrlSetCursor (-1, 0)
$Button2 = GUICtrlCreateButton("Button2", 8, 64, 75, 25)
GUICtrlSetCursor (-1, 0)
$Exit_Button = GUICtrlCreateButton("Exit", 8, 104, 75, 25)

$PageControl1 = GUICtrlCreateTab(96, 16, 460, 392)

$TabSheet1 = GUICtrlCreateTabItem("System")
	$Group1 = GUICtrlCreateGroup("Local", 120, 48, 345, 105)
	$Checkbox1 = GUICtrlCreateCheckbox("CheckBox1", 130, 72, 329, 17)
	
	
$TabSheet2 = GUICtrlCreateTabItem("Explorer")
	$Checkbox2 = GUICtrlCreateCheckbox("CheckBox2", 130, 96, 273, 17)
	
$TabSheet3 = GUICtrlCreateTabItem("Panel")
	$Checkbox3 = GUICtrlCreateCheckbox("CheckBox3", 130, 120, 193, 17)
GUICtrlCreateTabItem("")

GUISetState()


While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			GUICtrlSetState($PageControl1, $GUI_SHOW)
		Case $Button2
			GUICtrlSetState($PageControl1, $GUI_HIDE)
		 Case $Exit_Button
			Exit
	EndSwitch
WEnd


А хотелось бы, чтобы при нажатии кнопки Button2 исчезали имеющиеся вкладки со своими чекбоксами, а вместо их появлялись другие вкладки со своими чекбоксами. А при нажатии Button1 возвращались исходные закладки.
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
Вот что получилось у меня:
Код:
#include <GUIConstants.au3>
$gui = GUICreate("Моя программа", @DesktopWidth-100, 210, 50, 50) ; Создаём окно диалога

$tab = GUICtrlCreateTab (132, 3, @DesktopWidth-240, 200)
$tab1 = GUICtrlCreateTabitem("Вкладка 1")
    $Checkbox1 = GUICtrlCreateCheckbox("CheckBox1", 180, 72, 329, 17)
    $Checkbox1_2 = GUICtrlCreateCheckbox("CheckBox1_2", 180, 72, 329, 17)
	GUICtrlSetState($Checkbox1_2, $GUI_HIDE)
$tab2 = GUICtrlCreateTabitem("Вкладка 2")
    $Checkbox2 = GUICtrlCreateCheckbox("CheckBox2", 180, 72, 329, 17)
    $Checkbox2_2 = GUICtrlCreateCheckbox("CheckBox2_2", 180, 72, 329, 17)
	GUICtrlSetState($Checkbox2_2, $GUI_HIDE)
GUICtrlCreateTabitem ("")
$but1 = GUICtrlCreateButton ("1",  10, 30, 50)
$but2 = GUICtrlCreateButton ("2",  10, 60, 50)


GUISetState(@SW_SHOW)

While 1
    $msg = GUIGetMsg()
    
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
	If $msg = $but1 Or $msg = $but2 Then Button($msg)
Wend

Func Button($but)
	If $but = $but1 Then
		 GUICtrlSetData($tab1, "Вкладка 1")
			GUICtrlSetState($Checkbox1, $GUI_SHOW)
			GUICtrlSetState($Checkbox1_2, $GUI_HIDE)
		GUICtrlSetData($tab2, "Вкладка 2")
			GUICtrlSetState($Checkbox2, $GUI_SHOW)
			GUICtrlSetState($Checkbox2_2, $GUI_HIDE)
	EndIf
	If $but = $but2 Then
		 GUICtrlSetData($tab1, "Вкладка_1")
			GUICtrlSetState($Checkbox1_2, $GUI_SHOW)
			GUICtrlSetState($Checkbox1, $GUI_HIDE)
		 GUICtrlSetData($tab2, "Вкладка_2")
			GUICtrlSetState($Checkbox2_2, $GUI_SHOW)
			GUICtrlSetState($Checkbox2, $GUI_HIDE)
	EndIf
EndFunc
 

gregaz

AutoIT Гуру
Сообщения
1 166
Репутация
299
blacksergo [?]
А хотелось бы, чтобы при нажатии кнопки Button2 исчезали имеющиеся вкладки со своими чекбоксами, а вместо их появлялись другие вкладки со своими чекбоксами. А при нажатии Button1 возвращались исходные закладки.
Судя по всему тебе надо скрыть саму вкладку полностью
а элементы 1-й вкладки не скрываются вместе со вкладкой.
Можно так :
Код:
;---------------------------------------
While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE,$Exit_Button
            ExitLoop
      Case $Button1
            GUICtrlSetState($PageControl1, $GUI_SHOW)
      Case $Button2
            GUICtrlSetState($PageControl1, $GUI_HIDE)
      Case Else
         ContinueLoop
   EndSwitch
   $state= GUICtrlGetState ($PageControl1)
   GUICtrlSetState($Group1, $state) 
   GUICtrlSetState($Checkbox1, $state)
WEnd
;--------------------------


А если надо открывать другие 3 вкладки , то похоже надо создавать для каждой группы вкладок дочернее окно со своими вкладками и управлять окнами.
Вот так. Другого пути я не вижу :
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Dialog", 567, 427, 302, 218)

$Button1 = GUICtrlCreateButton("Button1", 8, 24, 75, 25)
$Button2 = GUICtrlCreateButton("Button2", 8, 64, 75, 25)
$Exit_Button = GUICtrlCreateButton("Exit", 8, 104, 75, 25)
GUISetState(@SW_SHOW,$Form1)

$ChildGUI_1=GUICreate("", 400, 400, 400, 250,$WS_POPUP,'',$Form1)

$PageControl1 = GUICtrlCreateTab(10, 16, 460, 392)
$TabSheet1 = GUICtrlCreateTabItem("System")
   $Group1 = GUICtrlCreateGroup("Local", 120, 48, 345, 105)
   $Checkbox1 = GUICtrlCreateCheckbox("CheckBox1", 130, 72, 329, 17) 
$TabSheet2 = GUICtrlCreateTabItem("Explorer")
   $Checkbox2 = GUICtrlCreateCheckbox("CheckBox2", 130, 96, 273, 17) 
$TabSheet3 = GUICtrlCreateTabItem("Panel")
   $Checkbox3 = GUICtrlCreateCheckbox("CheckBox3", 130, 120, 193, 17)
GUISetState(@SW_HIDE,$ChildGUI_1)

$ChildGUI_2=GUICreate("", 400, 400, 400, 250,$WS_POPUP,'',$Form1)

$PageControl2 = GUICtrlCreateTab(10, 16, 460, 392)
$TabSheet1_2 = GUICtrlCreateTabItem("System-2")
   $Group1_2 = GUICtrlCreateGroup("Local-2", 120, 48, 345, 105)
   $Checkbox1_2 = GUICtrlCreateCheckbox("CheckBox1-2", 140, 72, 329, 17) 
$TabSheet2_2 = GUICtrlCreateTabItem("Explorer-2")
   $Checkbox2_2 = GUICtrlCreateCheckbox("CheckBox2-2", 140, 96, 273, 17) 
$TabSheet3_2 = GUICtrlCreateTabItem("Panel-2")
   $Checkbox3_2 = GUICtrlCreateCheckbox("CheckBox3-2", 140, 120, 193, 17)
GUISetState(@SW_SHOW,$ChildGUI_2)

While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE,$Exit_Button
            ExitLoop
      Case $Button1
            GUISetState(@SW_HIDE,$ChildGUI_2)
            GUISetState(@SW_SHOW,$ChildGUI_1)
      Case $Button2
            GUISetState(@SW_HIDE,$ChildGUI_1)
            GUISetState(@SW_SHOW,$ChildGUI_2) 
   EndSwitch
WEnd
 
Верх