Что нового

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

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
 
Верх