Автор Тема: Как скрыть вкладки, а по нажатию кнопки отобразить другие  (Прочитано 5693 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн blacksergo [?]

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

Русское сообщество AutoIt


Оффлайн Kaster [?]

  • Бритва, Бритва Оккама
  • Глобальный модератор
  • *
  • Сообщений: 4020
  • Репутация: 622
  • Пол: Мужской
  • Мой Аватар, он лучший самый
    • Награды
  • Версия AutoIt: 3.3.14.0
ПредупреждениеНет надобности дублировать темы! Новую удалил.
Конференция посвященная AutoIt на jabber.ru - [email protected]
Как попасть на конференцию читаем тут


Оффлайн edyapd [?]

  • Осваивающий
  • **
  • Сообщений: 380
  • Репутация: 30
    • Награды
  • Версия AutoIt: 3.3.14.0
Обработай нажатие на кнопки и меняй вкладки с помощью команды
GUICtrlSetData.

Русское сообщество AutoIt


Оффлайн blacksergo [?]

  • Новичок
  • *
  • Сообщений: 20

  • Автор темы
  • Репутация: 1
    • Награды
Обработай нажатие на кнопки и меняй вкладки с помощью команды
GUICtrlSetData.

Вот не так работающий код:
Код: AutoIt [Выделить]
#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
    • Награды
  • Версия AutoIt: 3.3.14.0
Вот что получилось у меня:
Код: AutoIt [Выделить]
#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


Русское сообщество AutoIt


Оффлайн gregaz [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1166
  • Репутация: 298
  • Пол: Мужской
    • Награды
blacksergo  [?]
Цитировать
А хотелось бы, чтобы при нажатии кнопки Button2 исчезали имеющиеся вкладки со своими чекбоксами, а вместо их появлялись другие вкладки со своими чекбоксами. А при нажатии Button1 возвращались исходные закладки.

Судя по всему тебе  надо  скрыть саму вкладку полностью
а элементы 1-й вкладки не скрываются вместе со вкладкой.
Можно так :
Код: AutoIt [Выделить]
;---------------------------------------
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 вкладки , то похоже надо создавать для каждой группы вкладок дочернее окно со своими вкладками и управлять окнами.
Вот так. Другого пути я не вижу :
Код: AutoIt [Выделить]
#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
 

Самая большая проблема – её сформулировать. 

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
5 Ответов
7952 Просмотров
Последний ответ Ноябрь 21, 2009, 19:09:27
от oneDmitry
10 Ответов
5866 Просмотров
Последний ответ Июль 18, 2011, 10:56:06
от Yashied
13 Ответов
5271 Просмотров
Последний ответ Сентябрь 12, 2011, 21:55:32
от Степан
7 Ответов
4692 Просмотров
Последний ответ Январь 07, 2012, 02:21:05
от agikon
2 Ответов
2955 Просмотров
Последний ответ Декабрь 01, 2012, 00:49:02
от Романыч
6 Ответов
5222 Просмотров
Последний ответ Сентябрь 06, 2013, 01:05:42
от InnI
6 Ответов
3241 Просмотров
Последний ответ Март 16, 2014, 23:06:37
от madmasles
7 Ответов
2014 Просмотров
Последний ответ Январь 27, 2015, 12:19:57
от babanty
3 Ответов
1316 Просмотров
Последний ответ Июнь 27, 2018, 02:01:26
от InnI
2 Ответов
251 Просмотров
Последний ответ Август 28, 2018, 16:01:29
от nargoseo