Jump to content
Sign in to follow this  
2Radon

Affecting only controls under the specific tab & more about tabs

Recommended Posts

2Radon

Hello!

Let's say, I have a form where there are controls with same variable names in each tab, for example:

in tab A button $1 and $2

in tab B button $1 and $2

How can I, by checking a checkbox in tab C, show or hide buttons $2 in both tabs A and B?

 

Is there a way to address those controls that are only inside a specified tab? Like only button $2 inside tab A?

 

Is there a way to, when you click a tab item like tab A, it only at that moment creates the controls inside the tab, which can be used like normal, and then deletes them when another tab is selected, creating different controls for that tab?

Share this post


Link to post
Share on other sites
jdelaney

If you house the controls of a tab within an array, you will be able to do that.  Otherwise, you will be overwritting your vairable each time.  Try it out.

Once in the array, simple loops to do what's needed.


IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window.

Share this post


Link to post
Share on other sites
Melba23

2Radon,

Welcome to the AutoIt forum. :)

I recommend that you read the Tabs tutorial in the Wiki - that will help you understand how tabs work in AutoIt. In short, you need to give the controls separate names, but AutoIt will deal with hiding/showing the controls if you use the native commands. ;)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites
2Radon

Thank you for replying!

I am interested in putting the controls inside an array.

#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiButton.au3>
#include <GuiEdit.au3>


 $hGUI = GUICreate("ARPL", 530, 530, -1, -1)
 $oIE = ObjCreate("Shell.Explorer.2") ; I don't remember why I have this and I can't seem to find what it does for a GUI if I don't embed anything...


 $mAdvOpt = IniRead("Main.ini", "Main", "mAdvOpt", 0) ; Advanced options in each tab shown or hidden


 $tabMain = GUICtrlCreateTab(10, 10, 510, 510)


 $pgeMain = GUICtrlCreateTabItem("General")
 $chkAdvOpt = GUICtrlCreateCheckbox("Advanced options", 390, 480, 110, 20) ; The checkbox that will determine the value in the ini file, which would show or hide 'advanced' controls


; *snip* (A bunch of other tabs and controls which may or may not contain the controls below)


$pgeIE = GUICtrlCreateTabItem("IE") ; These are different for each page, of course

 $grpIEProp = GUICtrlCreateGroup("This Internet Explorer window's properties", 20, 40, 480, 200) ; Also different in each page


; From here below are controls with variable names I'd like to have in several other different tab pages under differently named control groups.
; I put a tab before the controls that I want hidden depending on the mAdvOpt value in ini file. The other controls should always be displayed.
    $lblInPix = GUICtrlCreateLabel("In pixels", 344, 60, 40, 20)

 $btnSaveY = GUICtrlCreateButton("Save", 160, 120, 80, 20)
 $btnSaveX = GUICtrlCreateButton("Save", 160, 90, 80, 20)
 $btnResetY = GUICtrlCreateButton("Reset", 240, 120, 80, 20)
 $btnResetX = GUICtrlCreateButton("Reset", 240, 90, 80, 20)
    $txtPosY = GUICtrlCreateInput("0", 340, 120, 50, 20, $ES_CENTER)
    $txtPosX = GUICtrlCreateInput("0", 340, 90, 50, 20, $ES_CENTER)
 $lblPosY = GUICtrlCreateLabel("Vertical position (y):", 40, 120, 110, 20)
 $lblPosX = GUICtrlCreateLabel("Horizontal position (x):", 40, 90, 110, 20)


 $btnSaveH = GUICtrlCreateButton("Save", 160, 200, 80, 20)
 $btnSaveW = GUICtrlCreateButton("Save", 160, 170, 80, 20)
 $btnResetH = GUICtrlCreateButton("Reset", 240, 200, 80, 20)
 $btnResetW = GUICtrlCreateButton("Reset", 240, 170, 80, 20)
    $txtSizeH = GUICtrlCreateInput("0", 340, 200, 50, 20, $ES_CENTER)
    $txtSizeW = GUICtrlCreateInput("0", 340, 170, 50, 20, $ES_CENTER)
 $lblSizeH = GUICtrlCreateLabel("Height:", 40, 200, 110, 20)
 $lblSizeW = GUICtrlCreateLabel("Width:", 40, 170, 110, 20)

Now, in an array, they would just each be an array element?

Local $aAdvCtrls[4] ; 5 Controls
$aAdvCtrls[0] = GUICtrlCreateLabel("In pixels", 344, 60, 40, 20) ; $lblInPix
$aAdvCtrls[1] = GUICtrlCreateInput("0", 340, 90, 50, 20, $ES_CENTER) ; $txtPosX
$aAdvCtrls[2] = GUICtrlCreateInput("0", 340, 120, 50, 20, $ES_CENTER) ; $txtPosY
$aAdvCtrls[3] = GUICtrlCreateInput("0", 340, 170, 50, 20, $ES_CENTER) ; $txtSizeW
$aAdvCtrls[4] = GUICtrlCreateInput("0", 340, 200, 50, 20, $ES_CENTER) ; $txtSizeH


While 1
    $hMsg = GUIGetMsg()
    $hTabMsg = GUICtrlRead($tabMain)
    Select
    ; Advanced options
    Case $hTabMsg = 0 ; ??? Is there a way to make it happen if any tab page is clicked?
        ; Would this create the controls?
        $aAdvCtrls[0]
        $aAdvCtrls[1]
        $aAdvCtrls[2]
        $aAdvCtrls[3]
        $aAdvCtrls[4]
        ; But I need each control, depending on the tab, to change some values in an ini file corresponding to the tab.
        ; I suppose that could be done like, for example: IF the active tab page is $activePage, THEN iniwrite $activepage (category),
        ; "PosX" (key), the value in $aAdvCtrls[1].

    ; *snip* a bunch of other cases
    EndSelect
WEnd

Share this post


Link to post
Share on other sites
Melba23

2Radon,

I am assuming that you want the same control array in each tab - if not then there is little point in using an array: ;)

#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiButton.au3>
#include <GuiEdit.au3>

; Create some Enums to make the indexing easy - note the advanced one are grouped at the end
Enum $eSaveY, $eSaveX, $eResetY, $eResetX, $eSaveH, $eSaveW, $eResetH, $eResetW, $eSizeH, $ePosY, $ePosX, $eSizeW, $eMax
Global $iTabs = 2 ; Number of tabs which will hold the control array

; Create an array to hold the controls - first dimension = tab; second = control
Global $aControls[$iTabs][$eMax]

; Read ini
$mAdvOpt = Number(IniRead("Main.ini", "Main", "mAdvOpt", 0)) ; Use Number to force it to numeric type

$hGUI = GUICreate("ARPL", 530, 530, -1, -1)
$tabMain = GUICtrlCreateTab(10, 10, 510, 510)

$pgeMain = GUICtrlCreateTabItem("General")
$chkAdvOpt = GUICtrlCreateCheckbox("Advanced options", 390, 480, 110, 20) ; The checkbox that will determine the value in the ini file, which would show or hide 'advanced' controls

$pgeIE_1 = GUICtrlCreateTabItem("IE 1") ; These are different for each page, of course
$grpIEProp = GUICtrlCreateGroup("Internet Explorer window 1 properties", 20, 40, 480, 200) ; Also different in each page

; No need to save the labels as I imagine they will not change
GUICtrlCreateLabel("In pixels", 344, 60, 40, 20)
GUICtrlCreateLabel("Vertical position (y):", 40, 120, 110, 20)
GUICtrlCreateLabel("Horizontal position (x):", 40, 90, 110, 20)
GUICtrlCreateLabel("Height:", 40, 200, 110, 20)
GUICtrlCreateLabel("Width:", 40, 170, 110, 20)

; Now save the controls in the array
$aControls[0][$eSaveY] = GUICtrlCreateButton("Save", 160, 120, 80, 20)
$aControls[0][$eSaveX] = GUICtrlCreateButton("Save", 160, 90, 80, 20)
$aControls[0][$eResetY] = GUICtrlCreateButton("Reset", 240, 120, 80, 20)
$aControls[0][$eResetX] = GUICtrlCreateButton("Reset", 240, 90, 80, 20)
$aControls[0][$ePosY] = GUICtrlCreateInput("0", 340, 120, 50, 20, $ES_CENTER)
$aControls[0][$ePosX] = GUICtrlCreateInput("0", 340, 90, 50, 20, $ES_CENTER)

$aControls[0][$eSaveH] = GUICtrlCreateButton("Save", 160, 200, 80, 20)
$aControls[0][$eSaveW] = GUICtrlCreateButton("Save", 160, 170, 80, 20)
$aControls[0][$eResetH] = GUICtrlCreateButton("Reset", 240, 200, 80, 20)
$aControls[0][$eResetW] = GUICtrlCreateButton("Reset", 240, 170, 80, 20)
$aControls[0][$eSizeH] = GUICtrlCreateInput("0", 340, 200, 50, 20, $ES_CENTER)
$aControls[0][$eSizeW] = GUICtrlCreateInput("0", 340, 170, 50, 20, $ES_CENTER)

; Create another tab
$pgeIE_2 = GUICtrlCreateTabItem("IE 2")

$grpIEProp = GUICtrlCreateGroup("Internet Explorer window 2 properties", 20, 40, 480, 200) ; Also different in each page

GUICtrlCreateLabel("In pixels", 344, 60, 40, 20)
GUICtrlCreateLabel("Vertical position (y):", 40, 120, 110, 20)
GUICtrlCreateLabel("Horizontal position (x):", 40, 90, 110, 20)
GUICtrlCreateLabel("Height:", 40, 200, 110, 20)
GUICtrlCreateLabel("Width:", 40, 170, 110, 20)

; Now save the controls in the array
$aControls[1][$eSaveY] = GUICtrlCreateButton("Save", 160, 120, 80, 20)
$aControls[1][$eSaveX] = GUICtrlCreateButton("Save", 160, 90, 80, 20)
$aControls[1][$eResetY] = GUICtrlCreateButton("Reset", 240, 120, 80, 20)
$aControls[1][$eResetX] = GUICtrlCreateButton("Reset", 240, 90, 80, 20)
$aControls[1][$ePosY] = GUICtrlCreateInput("0", 340, 120, 50, 20, $ES_CENTER)
$aControls[1][$ePosX] = GUICtrlCreateInput("0", 340, 90, 50, 20, $ES_CENTER)

$aControls[1][$eSaveH] = GUICtrlCreateButton("Save", 160, 200, 80, 20)
$aControls[1][$eSaveW] = GUICtrlCreateButton("Save", 160, 170, 80, 20)
$aControls[1][$eResetH] = GUICtrlCreateButton("Reset", 240, 200, 80, 20)
$aControls[1][$eResetW] = GUICtrlCreateButton("Reset", 240, 170, 80, 20)
$aControls[1][$eSizeH] = GUICtrlCreateInput("0", 340, 200, 50, 20, $ES_CENTER)
$aControls[1][$eSizeW] = GUICtrlCreateInput("0", 340, 170, 50, 20, $ES_CENTER)

GUICtrlCreateTabItem("")

; Now check if advanced controls required
If $mAdvOpt Then
    ; Check the checkbox
    GUICtrlSetState($chkAdvOpt, $GUI_CHECKED)
Else
    ; Hide controls
    _ShowAdvanced(False)
EndIf

GUISetState()

While 1
    $iMsg = GUIGetMsg()
    Switch $iMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $chkAdvOpt
            ; Checkbox actioned
            If GUICtrlRead($chkAdvOpt) = 1 Then
                ; Change control visibility
                _ShowAdvanced(True)
                ; Amend ini file
                IniWrite("Main.ini", "Main", "mAdvOpt", 1)
            Else
                _ShowAdvanced(False)
                IniWrite("Main.ini", "Main", "mAdvOpt", 0)
            EndIf
        Case Else
            ; For each tab
            For $iTab = 0 To $iTabs - 1
                ; For each control
                For $iControl = $eSaveY To $eSizeW
                    If $iMsg = $aControls[$iTab][$iControl] Then
                        MsgBox($MB_SYSTEMMODAL, "Hi", "You actioned control " & $iControl & " on Tab " & $iTab)
                        ; No point in looking further
                        ExitLoop
                    EndIf
                Next
            Next
    EndSwitch
WEnd

Func _ShowAdvanced($fShow)
    ; What state is required
    Local $iState = ( ($fShow) ? ($GUI_SHOW) : ($GUI_HIDE) )
    ; For each tab
    For $iTab = 0 To $iTabs - 1
        ; For each control
        For $iControl = $eSizeH To $eSizeW
            ; Hide/Show the control
            GUICtrlSetState($aControls[$iTab][$iControl], $iState)
        Next
    Next
EndFunc
Please ask if you have any questions. :)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites
2Radon

Awesome, Melba23!

Though InPix label is still needed hidden as it is related to those inputs. Small thing, don't mind. :)

 

Got questions:

1. Not forcing $mAdvOpt to be a number - what difference would that make? In the checking if Advanced Options are required? For example, "If $mAdvOpt Then.." wouldn't work, but instead "If $mAdvOpt = 1 Then" would? And if a letter is somehow entered, it would turn into a 0?

2. Is there a way to also save space and maybe even time if you have to create over a dozen identical controls in like 10 different tabs? Both these hidden (advanced) ones and the permanently visible ones.

3.1 Would a code that creates controls and deletes them upon tab change be shorter?

3.2 I want to make it so that the controls may be identical in each of those tabs (having to write them only for one tab instead of 10), BUT, what the user writes in those inputs, what windows on the screen those buttons address DEPENDS on which TAB is currently active. And also, where in the ini file values are written.

4. Can you please explain this?

$iState = ( ($fShow) ? ($GUI_SHOW) : ($GUI_HIDE) )

 

EDIT!

 Just came up with 3.2 myself! :)

_CtrlRecreate() Just combines two functions so I only have to write one function in each case.

Now depending on which tab is selected, the ini file section is different, and thus coordinates will be saved for the appropriate window.

I had to declare variables before the functions so that Case $btnSave doesn't scream at me for not giving birth to that variable. :D It doesn't matter what I set it to, it will be a control anyway.

Don't mind the naming, I just wrote this as fast as I could to experiment so I didn't think ahead anything better. :D

But I am open to suggestions anywhere. I'd love to get suggestions. ;)

 

How is it going to be worse if I store all the controls, even different ones and other things for each tab in a separate function in another file that would be included in this one? That would greatly unclutter the GUI's code in case of a lot of tabs.

#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiButton.au3>
#include <GuiEdit.au3>

$iniSection = "Main"
$coords = IniRead("Main.ini", $iniSection, "Coords", 0)

$btnSave = 0
$txtCoords = 0
$lblLabel = 0

$oFrm = GUICreate("test2", 500, 500, -1, -1)
$tabTab = GUICtrlCreateTab(10, 10, 480, 480)
$pgeOne = GUICtrlCreateTabItem("tab1")
$pgeTwo = GUICtrlCreateTabItem("Outlook")
$pgeThree = GUICtrlCreateTabItem("Lync")
GUISetState()

While 1
    $iMsg = GUIGetMsg()
    Switch $iMsg
        Case $GUI_EVENT_CLOSE
            Exit

        Case $tabTab
            Switch GUICtrlRead($tabTab)
                Case 0
                    _CtrlRecreate()
                    $iniSection = "Main"

                Case 1
                    _CtrlRecreate()
                    $iniSection = "Outlook"
                Case 2
                    _CtrlRecreate()
                    $iniSection = "Lync"
            EndSwitch

        Case $btnSave
            $coordRead = GUICtrlRead($txtCoords)
            IniWrite("Main.ini", $iniSection, "Coords", $coordRead)


    EndSwitch
WEnd








Func _CtrlCreate()
    $btnSave = GUICtrlCreateButton("Save", 20, 100, 50, 30)
    $txtCoords = GUICtrlCreateInput("Coordinates", 90, 100, 50, 30)
    $lblLabel = GUICtrlCreateLabel("Label", 150, 100, 50, 30)
EndFunc

Func _CtrlClear()
    $ctrlCheck = IsDeclared("btnSave")
    If $ctrlCheck <> 0 Then
        GUICtrlDelete($btnSave)
    EndIf
    $ctrlCheck = IsDeclared("txtCoords")
    If $ctrlCheck <> 0 Then
        GUICtrlDelete($txtCoords)
    EndIf
    $ctrlCheck = IsDeclared("lblLabel")
    If $ctrlCheck <> 0 Then
        GUICtrlDelete($lblLabel)
    EndIf
EndFunc


Func _CtrlRecreate()
    _CtrlClear()
    _CtrlCreate()
EndFunc

 

 

 

Edited by 2Radon

Share this post


Link to post
Share on other sites
2Radon

Is there a way to delete all the controls stored in an array with one or a few commands?

This appears to not work.

#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiButton.au3>
#include <GuiEdit.au3>
#include <Array.au3>

Func _TabCtrlCreate()
    Global Enum $eMin, $eLblPosX, $eLblPosY, $eBtnSaveX, $eBtnSaveY, $eBtnResetX, $eBtnResetY, _
                $eLblSizeW, $eLblSizeH, $eBtnSaveW, $eBtnSaveH, $eBtnResetW, $eBtnResetH, _
                $eLblInPix, $eTxtPosX, $eTxtPosY, $eTxtSizeW, $eTxtSizeH, $eMax ; = 17

    Global $aTabCtrls[$eMax]

    $aTabCtrls[$eLblPosX] = GUICtrlCreateLabel("Horizontal position (x):", 40, 90, 110, 20)
    $aTabCtrls[$eLblPosY] = GUICtrlCreateLabel("Vertical position (y):", 40, 120, 110, 20)
    $aTabCtrls[$eBtnSaveX] = GUICtrlCreateButton("Save", 160, 90, 80, 20)
    $aTabCtrls[$eBtnSaveY] = GUICtrlCreateButton("Save", 160, 120, 80, 20)
    $aTabCtrls[$eBtnResetX] = GUICtrlCreateButton("Reset", 240, 90, 80, 20)
    $aTabCtrls[$eBtnResetY] = GUICtrlCreateButton("Reset", 240, 120, 80, 20)

    $aTabCtrls[$eLblSizeW] = GUICtrlCreateLabel("Width:", 40, 170, 110, 20)
    $aTabCtrls[$eLblSizeH] = GUICtrlCreateLabel("Height:", 40, 200, 110, 20)
    $aTabCtrls[$eBtnSaveW] = GUICtrlCreateButton("Save", 160, 170, 80, 20)
    $aTabCtrls[$eBtnSaveH] = GUICtrlCreateButton("Save", 160, 200, 80, 20)
    $aTabCtrls[$eBtnResetW] = GUICtrlCreateButton("Reset", 240, 170, 80, 20)
    $aTabCtrls[$eBtnResetH] = GUICtrlCreateButton("Reset", 240, 200, 80, 20)

    ; Advanced options
    $iniAdvOpt = IniRead($fINI, "General", "AdvOpt", 0)
    If $iniAdvOpt = 1 Then
        $aTabCtrls[$eLblInPix] = GUICtrlCreateLabel("In pixels", 344, 60, 40, 20)
        $aTabCtrls[$eTxtPosX] = GUICtrlCreateInput("0", 340, 90, 50, 20, $ES_CENTER)
        $aTabCtrls[$eTxtPosY] = GUICtrlCreateInput("0", 340, 120, 50, 20, $ES_CENTER)
        $aTabCtrls[$eTxtSizeW] = GUICtrlCreateInput("0", 340, 170, 50, 20, $ES_CENTER)
        $aTabCtrls[$eTxtSizeH] = GUICtrlCreateInput("0", 340, 200, 50, 20, $ES_CENTER)
    EndIf
EndFunc   ;==>_TabCtrlCreate


Func _TabCtrlDelete()
    $ctrlCheck = IsDeclared("aTabCtrls")
    If $ctrlCheck <> 0 Then
        ;GUICtrlDelete($aTabCtrls)
        For $i = $eLblPosX To $eTxtSizeH step 1
            _ArrayDelete($aTabCtrls, $i)
        Next
    EndIf
EndFunc   ;==>_TabCtrlDelete

Share this post


Link to post
Share on other sites
Melba23

2Radon,

All you are doing at present is deleting the elements in the array - you need to delete the controls themselves. So loop through the array and do it like this:

Func _TabCtrlDelete()
    ; Delete the controls
    For $i = $eMin To $eMax
        GUICtrlDelete($aTabCtrls[$i])
    Next
    ; And perhaps delete the array as well to save memory
    $aTabCtrls = 0
EndFunc   ;==>_TabCtrlDelete
M23

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites
2Radon

I tried doing exactly that. It crashes the GUI when _TabCtrlRecreate() is supposed to happen.

But how much memory saving would deleting the array be? Wouldn't it be more beneficial not to delete it, increasing the program's performance?

The recreation of controls every time appears to be even more flickery when switching tabs than pre-creating them like normal. Is there a way to smooth that out?

Edited by 2Radon

Share this post


Link to post
Share on other sites
Melba23

2Radon,

Posting snippets of code and asking for advice is not the best way to go about things. If people offer advice on one function, it is not very encouraging to be told "[Well, that causes problems in another function (_TabCtrlRecreate) that you have not even seen". ;)

Why not post the whole script so that we can offer advice on the whole process - that way we might be able to suggest a different way of doing things which could prevent a lot of the problems you seem to be having. For example, why are you deleting entire sections of controls on a tab and then apparently recreating them later? :huh:

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

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
Sign in to follow this  

×