Что нового

Как выбрать нужную вкладку в GuiCtrlCreateTab чтобы создать там какойто обьект?

agikon

Знающий
Сообщения
789
Репутация
16
при нажатии на кнопку "OK" требуется создать чекбокс через функцию в вкладке "2"
я вот написал код, чекбокс то создается только в вкладке "1". а не "2"
а как создать во второй вкладке "2" ?


Код:
#include <Misc.au3>
#include <GUIConstantsEx.au3>

$GUI = GUICreate('', 400, 300)
$nButton1 = GUICtrlCreateButton('OK', 90, 200, 215, 20)

GUISetState()

$tab = GuiCtrlCreateTab(10, 20, 200, 100)
$1 = GuiCtrlCreateTabItem("1")
$2 = GuiCtrlCreateTabItem("2")

While 1
 	$nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
Case $nButton1
		_1()
    EndSwitch
WEnd

FUNC _1()
	$box = GUICtrlCreateCheckbox("задача1", 30, 50, 70, 20)
ENDFUNC


подскажите пожалуйста.
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
agikon [?]
а как создать во второй вкладке "2" ?

Наверное это сложно, если вообще возможно.
Можно поступить так:
Сразу создать чекбокс на 2-й вкладке и скрыть его.
А далее ,когда возникнет неообходимость восстановить его. ?
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
16
gregaz
сразу то можно.
но суть то в том что надо не сразу, а чтобы в процессе добавлять.
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
agikon [?]
но суть то в том что надо не сразу, а чтобы в процессе добавлять.

А почему нельзя создать и дать ему
Код:
GUICtrlSetState ( $box2, $GUI_HIDE )


а в процессе дать ему
Код:
GUICtrlSetState ( $box2, $GUI_SHOW )


:-\
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
16
gregaz
спасибо!
прекрасная идея!
 

ArtInt

Знающий
Сообщения
135
Репутация
18
А что делать если такое действие невозможно? Например заранее не знаешь, что будешь создавать. Тогда не вариант всё, что только можно создавать скрытым. :(
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
ArtInt [?]
А что делать если такое действие невозможно? Например заранее не знаешь, что будешь создавать. Тогда не вариант всё, что только можно создавать скрытым.
Вот вариант:
Код:
#include <GUIConstantsEx.au3>
#include <GuiTab.au3>

Global $box1, $box2

$GUI = GUICreate('', 400, 300)
$nButton1 = GUICtrlCreateButton('OK1', 90, 200, 215, 20)
$nButton2 = GUICtrlCreateButton('OK2', 90, 230, 215, 20)

;$tab = GuiCtrlCreateTab(10, 20, 200, 100)
$Tab = _GUICtrlTab_Create($GUI, 2, 2, 396, 296)
;_GUICtrlTab_InsertItem($Tab, 0, "")
_GUICtrlTab_InsertItem($Tab,1, "Tab 0")
_GUICtrlTab_InsertItem($Tab, 2, "Tab 1")
;_GUICtrlTab_DeleteItem($Tab, 0)

GUISetState()

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
		Case $nButton1, $nButton2
			Create($nMsg)
	EndSwitch
WEnd

Func Create($iID)
	If $iID=$nButton1 Then
		_GUICtrlTab_SetCurFocus($Tab, 0)
		$box1 = GUICtrlCreateCheckbox("Задача 1" , 30, 50, 70, 20)
	Else
		_GUICtrlTab_SetCurFocus($Tab, 1)
		$box2 = GUICtrlCreateCheckbox("Задача 2" , 30, 50, 70, 20)
	EndIf
EndFunc
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
16
gregaz
у вашем примере чекбокс создаётся сразу на обоих вкладках. а в условии задачи надо чтобы на какой-то одной.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,716
Используйте нативные GUICtrl... функции + GUISwitch() для Tab'а, и будет все OK.
 
Верх