dany Posted August 20, 2012 Posted August 20, 2012 (edited) The script below demonstrates my problem. If I run this script all icon buttons save the one created before the tab control are placed behind the tab and only the icon shows. I've tried everything I could think of, setting different styles, states etc. to the GUI, tab, button, icon... Well you get the picture. Nothing has worked thusfar and I'm at a complete loss here. Any help would be much appreciated. This will create a GUI with two tabs and four buttons of which three are behind the tab control. expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <ButtonConstants.au3> Local $iExit, $iGUIMsg GUICreate('Problem...', 180, 150, -1, -1, $GUI_SS_DEFAULT_GUI, $WS_EX_TOPMOST) ; This button will show correctly. $iExit = _IconOnButton('Close', 10, 120, 160, 20, 200) ; Create tab. GUICtrlCreateTab(5, 5, 120, 140) ; First item and button with missing text and borders. GUICtrlCreateTabItem('One') _IconOnButton('First', 10, 30, 160, 20, 3) ; Second item and button with missing text and borders. GUICtrlCreateTabItem('Two') _IconOnButton('Second', 10, 60, 160, 20, 24) ; Close tab control. GUICtrlCreateTabItem('') ; Another button with missing text and borders. _IconOnButton('Third', 10, 90, 160, 20, 1001) GUISetState(@SW_SHOW) While 1 $iGUIMsg = GUIGetMsg() Switch $iGUIMsg Case $iExit, $GUI_EVENT_CLOSE ; Exit Exit EndSwitch WEnd ; By Valuater Func _IconOnButton($BItext, $BIleft, $BItop, $BIwidth, $BIheight, $BIconNum, $BIDLL = 'shell32.dll') GUICtrlCreateIcon($BIDLL, $BIconNum, $BIleft + 5, $BItop + (($BIheight - 16) / 2), 16, 16) GUICtrlSetState( -1, $GUI_DISABLE) Local $XS_btnx = GUICtrlCreateButton($BItext, $BIleft, $BItop, $BIwidth, $BIheight, $WS_CLIPSIBLINGS) Return $XS_btnx EndFunc Edited August 21, 2012 by dany [center]Spiderskank Spiderskank[/center]GetOpt Parse command line options UDF | AU3Text Program internationalization UDF | Identicon visual hash UDF
Andreik Posted August 21, 2012 Posted August 21, 2012 It's because of your $WS_CLIPSIBLINGS style for buttons.
dany Posted August 21, 2012 Author Posted August 21, 2012 Thanks for the reply. But I wish it was that easy... Take out $WS_CLIPSIBLINGS and the buttons don't have icons. Not what I want. Reverse the order of the creation in _IconOnButton (button first, then the icon) and the icons do show but disappear as soon as the button's clicked. [center]Spiderskank Spiderskank[/center]GetOpt Parse command line options UDF | AU3Text Program internationalization UDF | Identicon visual hash UDF
Andreik Posted August 21, 2012 Posted August 21, 2012 Why don't you use $BS_ICON style for buttons and set the icon directly to button?
dany Posted August 21, 2012 Author Posted August 21, 2012 Afaik that doesn't allow for buttons with text, only icon buttons. Those do work btw... [center]Spiderskank Spiderskank[/center]GetOpt Parse command line options UDF | AU3Text Program internationalization UDF | Identicon visual hash UDF
Moderators Melba23 Posted August 21, 2012 Moderators Posted August 21, 2012 dany, This works for me: #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GuiImageList.au3> #include <GuiButton.au3> GUICreate('Problem...', 180, 150, -1, -1, $GUI_SS_DEFAULT_GUI, $WS_EX_TOPMOST) $iExit = _IconOnButton('Close', 10, 120, 160, 20, 200) ; Create tab. GUICtrlCreateTab(5, 5, 120, 110) GUICtrlCreateTabItem('One') _IconOnButton('First', 10, 30, 100, 20, 3) GUICtrlCreateTabItem('Two') _IconOnButton('Second', 10, 60, 100, 20, 24) ; Close tab control. GUICtrlCreateTabItem('') _IconOnButton('Third', 10, 90, 160, 20, 1001) GUISetState(@SW_SHOW) While 1 $iGUIMsg = GUIGetMsg() Switch $iGUIMsg Case $iExit, $GUI_EVENT_CLOSE ; Exit Exit EndSwitch WEnd Func _IconOnButton($BItext, $BIleft, $BItop, $BIwidth, $BIheight, $BIconNum, $BIDLL = 'shell32.dll') $cButton = GUICtrlCreateButton($BItext, $BIleft, $BItop, $BIwidth, $BIheight) $hImageList = _GUIImageList_Create(32, 32, 5, 3) _GUIImageList_AddIcon($hImageList, $BIDLL, $BIconNum, True) _GUICtrlButton_SetImageList($cButton, $hImageList) Return $cButton EndFunc The icon indices seem a little off - but I leave finding the correct ones to you. M23  Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Â
funkey Posted August 21, 2012 Posted August 21, 2012 Something like this? expandcollapse popup#include #include #include #include #include Local $iExit, $iGUIMsg GUICreate('No Problem...', 180, 150, -1, -1, $GUI_SS_DEFAULT_GUI, $WS_EX_TOPMOST) Global $iExit = GUICtrlCreateButton('Close', 10, 120, 160, 20) _GUICtrlButton_SetImageList(-1, _GetImageListHandle("shell32.dll", -200, False)) ; Create tab. GUICtrlCreateTab(5, 5, 120, 140) GUICtrlCreateTabItem('One') GUICtrlCreateButton('First', 10, 30, 160, 20) _GUICtrlButton_SetImageList(-1, _GetImageListHandle("shell32.dll", -3, False)) GUICtrlCreateTabItem('Two') GUICtrlCreateButton('Second', 10, 60, 160, 20) _GUICtrlButton_SetImageList(-1, _GetImageListHandle("shell32.dll", -24, False)) GUICtrlCreateTabItem('') ; Close tab control. GUICtrlCreateButton('Third', 10, 90, 160, 20) _GUICtrlButton_SetImageList(-1, _GetImageListHandle("shell32.dll", -1001, False)) GUISetState(@SW_SHOW) While 1 $iGUIMsg = GUIGetMsg() Switch $iGUIMsg Case $iExit, $GUI_EVENT_CLOSE ; Exit Exit EndSwitch WEnd ; using image list to set 1 image and have text on button Func _GetImageListHandle($sFile, $nIconID = 0, $fLarge = False) Local $iSize = 16 If $fLarge Then $iSize = 32 Local $hImage = _GUIImageList_Create($iSize, $iSize, 5, 3) If StringUpper(StringMid($sFile, StringLen($sFile) - 2)) = "BMP" Then _GUIImageList_AddBitmap($hImage, $sFile) Else _GUIImageList_AddIcon($hImage, $sFile, $nIconID, $fLarge) EndIf Return $hImage EndFunc ;==>_GetImageListHandle Programming today is a race between software engineers striving tobuild bigger and better idiot-proof programs, and the Universetrying to produce bigger and better idiots.So far, the Universe is winning.
Moderators Melba23 Posted August 21, 2012 Moderators Posted August 21, 2012 funkey, Great minds, eh? M23  Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Â
dany Posted August 21, 2012 Author Posted August 21, 2012 (edited) AWESOMEMuch appreciated, gentlemen. Funkey, your #includes are missing, but I get the point. I definetely need to read up on the standard lib.Again, Thanks! Edited August 21, 2012 by dany [center]Spiderskank Spiderskank[/center]GetOpt Parse command line options UDF | AU3Text Program internationalization UDF | Identicon visual hash UDF
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now