Jump to content

Recommended Posts

Posted

Hi all,

I'm trying to have a Gui with 2 set of Tabs and i can't get it. The second set is created next to the first.

I'd like to have a set a tab up and one down without nesting them.

Here is the code i have processed:

#include <GUIConstants.au3>

GUICreate("My GUI Tabs")

$tab=GUICtrlCreateTab (10,10, 200,100)

$tab0=GUICtrlCreateTabitem ("tab0")

$tab1=GUICtrlCreateTabitem ( "tab----1")

$tab2=GUICtrlCreateTabitem ("tab2")

GUICtrlCreateTabitem ("") ; end tabitem definition

$2ndtab=GUICtrlCreateTab (10,300, 200,100)

$2ndtab0=GUICtrlCreateTabitem ("2ndtab0")

$2ndtab1=GUICtrlCreateTabitem ( "2ndtab----1")

$2ndtab2=GUICtrlCreateTabitem ("2ndtab2")

GUICtrlCreateTabitem ("") ; end tabitem definition

GUISetState ()

While 1

$msg = GUIGetMsg()

If $msg = $GUI_EVENT_CLOSE Then ExitLoop

Wend

Thx all for any help

Posted

maybe this

#include <GUIConstants.au3>

Global Const $TCM_SETIMAGELIST = 0x1303

Global Const $TCM_SETITEM = 0x1306

; Disable visual styles for controls

;DllCall("uxtheme.dll", "none", "SetThemeAppProperties", "int", 1)

Global $hImageList = 0

$main_GUI = GUICreate("Tab Sample", 400, 300, -1, -1);, BitOr($GUI_SS_DEFAULT_GUI,$WS_CLIPSIBLINGS))

$ok_button = GUICtrlCreateButton("OK", 110, 270, 70, 20)

$cancel_button = GUICtrlCreateButton("Cancel", 220, 270, 70, 20)

GUISetState()

; Creates the first child window that is implemented into the main GUI

$child1 = GUICreate("", 370, 215, 15, 40, BitOr($WS_CHILD,$WS_TABSTOP), -1, $main_GUI)

;GUISetBkColor(0x257788); just for dimensing the child

$child1_tab = GUICtrlCreateTab(0, 0, 370, 215)

$child1_tabitem1 = GUICtrlCreateTabItem("Child1Tab1")

$child1_tabitem2 = GUICtrlCreateTabItem("Child1Tab2")

$child1_tabitem3 = GUICtrlCreateTabItem("Child1Tab3")

GUICtrlCreateTabItem("")

GUISetState()

; Creates the second child window that is implemented into the main GUI

$child2 = GUICreate("", 370, 215, 15, 40, BitOr($WS_CHILD,$WS_TABSTOP), -1, $main_GUI)

;GUISetBkColor(0x257788); just for dimensing the child

$child3 = GUICreate("", 210, 220, 158, 0, BitOr($WS_CHILD,$WS_TABSTOP), -1, $child2)

;GUISetBkColor(0x257788)

$listview = GUICtrlCreateListView("Col1|Col2", 0, 2, 210, 211, BitOr($LVS_NOSORTHEADER,$LVS_SHOWSELALWAYS,$WS_TABSTOP), $WS_EX_CLIENTEDGE)

GUICtrlCreateListViewItem("ItemLong1|ItemLong2", $listview)

GUICtrlCreateListViewItem("ItemLong3|ItemLong4", $listview)

GUICtrlCreateListViewItem("ItemLong5|ItemLong6", $listview)

GUISetState()

GUISwitch($child2)

$child2_tab = GUICtrlCreateTab(0, 0, 156, 215)

$child2_tabitem1 = GUICtrlCreateTabItem("Child2Tab1")

$child2_tabitem2 = GUICtrlCreateTabItem("Child2Tab2")

GUICtrlCreateTabItem("")

; Switch back the main GUI and create the tabs

GUISwitch($main_GUI)

$main_tab = GUICtrlCreateTab(10, 10, 380, 250)

$main_tabitem1 = GUICtrlCreateTabItem("MainTab1")

$main_tabitem2 = GUICtrlCreateTabItem("MainTab2")

GUICtrlCreateTabItem("")

GUICtrlSetState($main_tabitem1,$GUI_SHOW)

Bind_ImageList($main_tab)

While 1

$msg = GUIGetMsg(1)

Select

Case $msg[0] = $GUI_EVENT_CLOSE Or $msg[0] = $cancel_button

ExitLoop

Case $msg[0] = $main_tab

$tabidx = GUICtrlRead($main_tab)

Select

Case $tabidx = 0

GUISetState(@SW_HIDE, $child2)

GUISetState(@SW_SHOW, $child1)

Case $tabidx = 1

GUISetState(@SW_HIDE, $child1)

GUISetState(@SW_SHOW, $child2)

EndSelect

EndSelect

WEnd

DllCall("comctl32.dll", "int", "ImageList_Destroy", "hwnd", $hImageList)

Exit

Func ImageList_Create()

$hImageList = DllCall("comctl32.dll", "hwnd", "ImageList_Create", "int", 16, "int", 16, "int", 0x0021, "int", 0, "int", 1)

$hImageList = $hImageList[0]

Return $hImageList

EndFunc

Func Bind_ImageList($nCtrl)

$hImageList = ImageList_Create()

GUICtrlSendMsg($nCtrl, $TCM_SETIMAGELIST, 0, $hImageList)

$szIconFile = "shell32.dll"

$tcitem = DllStructCreate("uint;dword;dword;ptr;int;int;int")

DllStructSetData($tcitem, 1, 0x0002)

DllStructSetData($tcitem, 6, 0)

AddImageToTab($nCtrl, 0, $tcitem, $szIconFile, 12)

DllStructSetData($tcitem, 6, 1)

AddImageToTab($nCtrl, 1, $tcitem, $szIconFile,21)

DllStructDelete($tcitem)

EndFunc

Func AddImageToTab($nCtrl, $nTabIndex, $nItem, $szIconFile, $nIconID)

$hIcon = DllStructCreate("int")

$result = DllCall("shell32.dll", "int", "ExtractIconEx", "str", $szIconFile, "int", $nIconID, "hwnd", 0, "ptr", DllStructGetPtr($hIcon), "int", 1)

$result = $result[0]

If $result > 0 Then

DllCall("comctl32.dll", "int", "ImageList_AddIcon", "hwnd", $hImageList, "hwnd", DllStructGetData($hIcon,1))

DllCall("user32.dll", "int", "SendMessage", "hwnd", ControlGetHandle($main_GUI, "", $nCtrl), "int", $TCM_SETITEM, "int", $nTabIndex, "ptr", DllStructGetPtr($nItem))

DllCall("user32.dll", "int", "DestroyIcon", "hwnd", $hIcon)

EndIf

DllStructDelete($hIcon)

EndFunc

[code=auto:0]

requires beta

8)

NEWHeader1.png

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...