Что нового

[Элементы GUI] Скрытие или удаление элементов TabItem ?

ShSergey

Новичок
Сообщения
12
Репутация
1
Есть главное окно и дочернее с элементами Tab в каждом TabItem добавлен ListView.

В дочернем окне после создания TabItem его нужно
или скрыть GUICtrlSetState($tabItemShow1, $GUI_HIDE) но это не работает
или удалить GUICtrlDelete ($tabItemShow1) - TabItem удаляется но перестают работать корректно TabItem в главном окне. (исчезают ListView на вкладках главного окна)
Вот пример
Код:
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>

$HeightWindow = @DesktopHeight - 10*@DesktopHeight/100
$WidthWindow = @DesktopWidth - 10*@DesktopWidth/100

$Main_GUI = GUICreate("Test", $WidthWindow, $HeightWindow,-1,-1,$WS_SYSMENU)
Local $Showbutton = GUICtrlCreateButton("Показать", $WidthWindow -10 - 5*120, $HeightWindow-70, 120, 30)
Local $Closebutton = GUICtrlCreateButton("Закрыть", $WidthWindow -10 - 120  , $HeightWindow-70, 120, 30)
$Ytab1 = $HeightWindow-100
Local $tab1=GUICtrlCreateTab (5,10, $WidthWindow-10,$Ytab1)
Local $tabItem1 = GUICtrlCreateTabitem ("Tab1")
$hListView1 = GUICtrlCreateListView("id1|id2|id3|id4|id5|id6|id7", 10, 40, $WidthWindow -20, $Ytab1 - 50)
Local $tabItem2 = GUICtrlCreateTabitem ("Tab2")
$hListViewS2 = GUICtrlCreateListView("id1|id2|id3|id4|id5|id6|id7", 10, 40, $WidthWindow -20, $Ytab1 - 50)
Local $tabItem3 = GUICtrlCreateTabitem ("Tab3")
$hListView3 = GUICtrlCreateListView("id1|id2|id3|id4|id5|id6|id7", 10, 40, $WidthWindow -20, $Ytab1 - 50)

GUISetState(@SW_SHOW)
While 1
   $msg = GUIGetMsg()
   Switch $msg
	  Case $GUI_EVENT_CLOSE
			Exit			
	  Case $Closebutton
		 Exit		
		 Case $Showbutton
			ShowForm($Main_GUI)						
   EndSwitch   
Wend	

Func ShowForm($hParent = 0)      
    $iGOEM_Opt = Opt("GUIOnEventMode", 0)
   local $HeightWindow = @DesktopHeight - 20*@DesktopHeight/100
   local $WidthWindow = @DesktopWidth - 20*@DesktopWidth/100
   
   $hShow_GUI = GUICreate("Info", $WidthWindow, $HeightWindow, -1, -1, -1, -1, $hParent)
   
   $HeightTab = $HeightWindow - 60
   $WidthTab = $WidthWindow - 10   
   
   $HeightList = $HeightTab - 35
   $WidthList = $WidthTab - 10   
   
   $tabShow1=GUICtrlCreateTab (5,10, $WidthTab,$HeightTab)
   $tabItemShow1 = GUICtrlCreateTabitem ("Tab1")
   $hListViewShow1 = GUICtrlCreateListView("id1|id2|id3|id4|id5|id6|id7", 10, 40, $WidthList, $HeightList )
   $tabItemShow2=GUICtrlCreateTabitem ( "Tab2")
   $hListViewShow2 = GUICtrlCreateListView("id1|id2|id3|id4|id5|id6|id7", 10, 40,$WidthList, $HeightList )
   $tabItemShow3=GUICtrlCreateTabitem ( "Tab3")
   $hListViewShow3 = GUICtrlCreateListView("id1|id2|id3|id4|id5|id6|id7", 10, 40, $WidthList, $HeightList )
   $tabItemShow4=GUICtrlCreateTabitem ( "Tab4")
   $hListViewShow4 = GUICtrlCreateListView("id1|id2|id3|id4|id5|id6|id7", 10, 40, $WidthList, $HeightList )
   $tabItemShow5 = GUICtrlCreateTabitem ("Tab5")
   $hListViewShow5 = GUICtrlCreateListView("id1|id2|id3|id4|id5|id6|id7", 10, 40, $WidthList, $HeightList )
   GUICtrlCreateTabItem("")
   $ClosebuttonShow = GUICtrlCreateButton("Закрыть", $WidthWindow - 10 - 120 , $HeightWindow-40, 120)
   GUISetState(@SW_DISABLE, $hParent)   
   
   GUICtrlDelete ($tabItemShow1)
   GUICtrlDelete ($tabItemShow2)	
;~    GUICtrlSetState($tabItemShow1, $GUI_HIDE)
;~    GUICtrlSetState($tabItemShow2, $GUI_HIDE)
   GUISetState(@SW_SHOW, $hShow_GUI)
   
   While 1
	  $nMsg = GUIGetMsg()
	  Switch $nMsg
		 Case $GUI_EVENT_CLOSE
			ExitLoop						   
		 Case $ClosebuttonShow
			ExitLoop		 
	  EndSwitch
   WEnd
   
    Opt("GUIOnEventMode", $iGOEM_Opt)
    GUISetState(@SW_ENABLE, $hParent)
    GUIDelete($hShow_GUI)	
 EndFunc

Что в этом коде неправильно работает ?
 

xXx

╚{■_■}╗
Меценат
Сообщения
248
Репутация
95
Вот так
Код:
#include <TabConstants.au3>
; •••
Func ShowForm($hParent = 0)      
; ••• 
;~    GUICtrlDelete ($tabItemShow1)
;~    GUICtrlDelete ($tabItemShow2)    
;~    GUICtrlSetState($tabItemShow1, $GUI_HIDE)
;~    GUICtrlSetState($tabItemShow2, $GUI_HIDE)
   GUICtrlSendMsg($tabShow1, $TCM_DELETEITEM, 0, 0) ; _GUICtrlTab_DeleteItem()
   GUICtrlSendMsg($tabShow1, $TCM_DELETEITEM, 0, 0)
   GUICtrlSendMsg($tabShow1, $TCM_SETCURSEL, 0, 0) ; _GUICtrlTab_SetCurSel()
; •••   
 EndFunc
Только не пойму, зачем создавать вкладку для того чтобы ее тут же удалить :stars:
 
Автор
S

ShSergey

Новичок
Сообщения
12
Репутация
1
Спасибо так все работает. :ok:

xXx сказал(а):
Только не пойму, зачем создавать вкладку для того чтобы ее тут же удалить :stars:
Это только пробный пример, чтобы показать что не работает.
 
Верх