fopetesl Posted March 6, 2017 Share Posted March 6, 2017 (edited) For some reason my personal notes were omitted when posting. Still a Newb it seems! So have attached my slightly modified example. If I comment out Exit button references script will not Exit even with windows 'X' button icon. If I'm losing GUI/Tab focus I cannot see where is the difference with(out) definition. GUI_No_Exit.au3 Edited March 6, 2017 by fopetesl My notes were omitted! The most powerful number in the Universe. Zero. Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted March 6, 2017 Moderators Share Posted March 6, 2017 fopetesl, So what exactly is the problem? If you do not define a control, how do you expect it be recognised within your GUIGetMsg loop? M23 Starf0x 1 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 Link to comment Share on other sites More sharing options...
fopetesl Posted March 6, 2017 Author Share Posted March 6, 2017 (edited) 8 minutes ago, Melba23 said: fopetesl, So what exactly is the problem? If you do not define a control, how do you expect it be recognised within your GUIGetMsg loop? M23 I don't follow, Melba. The $Btn_Test still works so it is reading $msg. The $Btn_Exit missing locks out any means of closing the program so the script now doesn't even recognise the Windows close icon. However, if I define $Btn_Exit but do not include in the Switch statement the Windows 'X' icon now works. Edited March 6, 2017 by fopetesl Missed one reaction The most powerful number in the Universe. Zero. Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted March 6, 2017 Moderators Share Posted March 6, 2017 fopetesl, I understand now you have explained what happens - usually a good idea to do that in the OP. I imagine the problem is caused by the rather odd parent-child relationship - I will take a deeper look. 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 Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted March 6, 2017 Moderators Share Posted March 6, 2017 fopetesl, I knew this problem rang a bell - I ran into it some years ago when working with child windows. You need to have at least one control in the parent window or you run into focus problems - just as you do here when you can no longer focus on the main GUI to action the [X]. I asked the Devs about it at the time (in a private section of the forum) at the time and no-one was able to explain why this happened - so I cannot offer anything further. You can see that the "solution" works in this code: #include <GuiConstantsEx.au3> #include <WindowsConstants.au3> $Main_GUI = GUICreate("Main", @DesktopWidth * 1, @DesktopHeight * 1, 0, 0,-1, $WS_EX_COMPOSITED) GUISetState(@SW_SHOW, $Main_GUI) $Child1_GUI = GUICreate("ExitGUI", 480, 480, 10, 10, $WS_CHILD, -1, $Main_GUI) ;$Btn_Exit = GUICtrlCreateButton("E&xit", -1, -1, 90, 20) GUICtrlCreateLabel("", 1, 1, 0, 0) ; A control added to the parent window <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< GUISetState(@SW_SHOW, $Child1_GUI) $Child2_GUI = GUICreate("Child", 200, 100, 10, 50, $WS_CAPTION) $Btn_Test = GUICtrlCreateButton("Test", 10, 10, 90, 20) GUISetState(@SW_SHOW, $Child2_GUI) ; this puts the 'child' GUI within 'master' GUI... DllCall("user32.dll", "int", "SetParent", "hwnd", WinGetHandle($Child2_GUI), "hwnd", WinGetHandle($Child1_GUI)) ;sleep(5000) ;Exit While 1 $msg = GUIGetMsg() Switch $msg Case $GUI_EVENT_CLOSE; And now this works <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Exit Case $Btn_Test MsgBox(0, "Test", "Hit Button on Child Window") EndSwitch WEnd M23 fopetesl 1 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 Link to comment Share on other sites More sharing options...
InnI Posted March 6, 2017 Share Posted March 6, 2017 Maybe replace SetParent to create child for child? #include <GuiConstants.au3> $Main_GUI = GUICreate("Main", 500, 500) GUISetBkColor(0x1B5583, $Main_GUI) GUISetState(@SW_SHOW, $Main_GUI) $Child1_GUI = GUICreate("ExitGUI", 480, 480, 10, 10, $WS_CHILD, -1, $Main_GUI) GUISetState(@SW_SHOW, $Child1_GUI) $Child2_GUI = GUICreate("Child", 200, 100, 10, 50, BitOR($WS_CAPTION, $WS_CHILD), -1, $Child1_GUI) $Btn_Test = GUICtrlCreateButton("Test", 10, 10, 90, 20) GUISetState(@SW_SHOW, $Child2_GUI) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit Case $Btn_Test MsgBox(0, "Test", "Hit Button on Child Window") EndSwitch WEnd fopetesl 1 Link to comment Share on other sites More sharing options...
fopetesl Posted March 7, 2017 Author Share Posted March 7, 2017 (edited) Thanks, M23 & InnI, nice work arounds. Both solutions work fine I was somewhat chastised previously for asking abut au3 program flow but this example suggests not as straightforward, (to me), as C coding. I still haven't decided whether I need GUIs within GUIs or Tabs within GUI so I may be chasing my tail going down this path. What I would really like to achieve is a simplified version of the attached.... Edited March 7, 2017 by fopetesl Missing attachment? The most powerful number in the Universe. Zero. Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted March 7, 2017 Moderators Share Posted March 7, 2017 fopetesl, What makes you say that the "program flow" is not straightforward? The code starts at the top and works its way to the bottom. Anyway at first glance, a GUI such as that should be really easy to code in AutoIt, but as always the devil is in the detail. What exactly are the coloured boxes and what are the elements inside them? Clickable controls or just labels? If you can explain what the each element is supposed to be, we can see if we can produce something for you. Here is a quick and dirty example which might give you some idea of what could be done: expandcollapse popup#include <GUIConstantsEx.au3> #include <MsgBoxConstants.au3> ; Create arrays to hold details of element text and ControlID Global $aBox_1[3][2] = [["System Setup", 0], ["My Info Tool", 0], ["User Details Tool", 0]] Global $aBox_2[3][2] = [["Manager Reports", 0], ["Currency Details", 0], ["User Details", 0]] ; Create GUI $hGUI = GUICreate("Test", 500, 500) ; Create tab structure $cTab = GUICtrlCreateTab(10, 10, 480, 350) ; Create tab item $cTab_0 = GUICtrlCreateTabItem("Tab 0") ; And another $cTab_0 = GUICtrlCreateTabItem("Manager") GUICtrlSetState($cTab_0, $GUI_SHOW) ; Force ot be shown when GUI created ; Create coloured box GUICtrlCreateLabel("", 20, 40, 150, 100) GUICtrlSetBkColor(-1, 0xFFCCCC) GUICtrlSetState(-1, $GUI_DISABLE) ; And disable so that element labels are actionable ; Add title GUICtrlCreateLabel($aBox_1[0][0], 20, 50, 140, 20) GUICtrlSetFont(-1, Default, 800) ; Set to bold font ; Add actionable elements from the array For $i = 1 To UBound($aBox_1) - 1 $aBox_1[$i][1] = GUICtrlCreateLabel($aBox_1[$i][0], 20, 60 + (20 * $i), 140, 20) Next ; Create another coloured box GUICtrlCreateLabel("", 20, 180, 150, 100) GUICtrlSetBkColor(-1, 0xCCCCFF) GUICtrlSetState(-1, $GUI_DISABLE) ; Add title GUICtrlCreateLabel($aBox_2[0][0], 20, 190, 140, 20) GUICtrlSetFont(-1, Default, 800) ; Add actionable elements from the array For $i = 1 To UBound($aBox_2) - 1 $aBox_2[$i][1] = GUICtrlCreateLabel($aBox_2[$i][0], 20, 200 + (20 * $i), 140, 20) Next ; Create another tab item $cTab_0 = GUICtrlCreateTabItem("Tab 2") ; Close tab structure creation GUICtrlCreateTabItem("") ; Add other controls $cButton_1 = GUICtrlCreateButton("Button 1", 10, 410, 80, 30) $cButton_2 = GUICtrlCreateButton("Button 2", 410, 410, 80, 30) GUISetState() While 1 $iMsg = GUIGetMsg() Switch $iMsg Case $GUI_EVENT_CLOSE Exit Case $cButton_1 MsgBox($MB_SYSTEMMODAL, "Clicked", "Button 1") Case $cButton_2 MsgBox($MB_SYSTEMMODAL, "Clicked", "Button 2") Case Else ; Now look for the ControlID in the arrays For $i = 1 To UBound($aBox_1) - 1 If $iMsg = $aBox_1[$i][1] Then ; It was this element MsgBox($MB_SYSTEMMODAL, "Clicked", $aBox_1[$i][0]) ; No point in looking further ExitLoop EndIf Next For $i = 1 To UBound($aBox_2) - 1 If $iMsg = $aBox_2[$i][1] Then MsgBox($MB_SYSTEMMODAL, "Clicked", $aBox_2[$i][0]) ExitLoop EndIf Next EndSwitch WEnd 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 Link to comment Share on other sites More sharing options...
gononono64 Posted March 7, 2017 Share Posted March 7, 2017 Why not just use koda? Should take like 10 mins for the gui Link to comment Share on other sites More sharing options...
fopetesl Posted March 8, 2017 Author Share Posted March 8, 2017 M23. My excuse? Even older than older! Neat example M23. I look forward to the day I can generate code like that so apparently easily ... if I live that long The GUI I showed is an example of a manufacturing control program. Each tab has multiple choices each will open a sub GUI with more information to enter/search/view/edit. I like it because it's uncomplicated and user friendly. There's little point in amplifying more since my end result will be quite different, What I need to generate is a complete rewrite of a messy complicated IT-person-designed machine control and data capture/display program in LINUX. I have the task of doing the same in Windows without the complication of mixed software disciplines. So, there will be one tab or GUI for each operation. 1) Scan a sample. Operator enters relevant parameters. Then by calling a program using telnet to send commands and receive data. Received data, after processing with C program, is displayed as a graph with numerical detail. Data then saved as a unique file. 2) Retrieve scans' data and display/print/copy similar to 1) so needs to access usual Windows print options. As usual, devil is in the detail. Producing on screen graph with dual scaled plots with AutoIt? Showing progress of background program(s)? The most powerful number in the Universe. Zero. Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted March 8, 2017 Moderators Share Posted March 8, 2017 fopetesl, Quote Each tab has multiple choices each will open a sub GUI with more information to enter/search/view/edit Sounds like AutoIt would be a perfect tool in which to write this - and the above example should give you a good pointer as to how to go about it. Do not hesitate to come back and ask for help with any aspects that you find difficult. 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 Link to comment Share on other sites More sharing options...
fopetesl Posted March 9, 2017 Author Share Posted March 9, 2017 On 07/03/2017 at 11:34 AM, gononono64 said: Why not just use koda? Should take like 10 mins for the gui Would you care to elucidate, GoNoNo? The most powerful number in the Universe. Zero. Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted March 9, 2017 Moderators Share Posted March 9, 2017 fopetesl, Koda is a utility to help you create your GUIs using a graphical interface - personally I do not use it as I find manual coding of control position just as quick, but some swear by it. Of course the utility only deals with the GUI section of your script - you still have to do all the "bread and butter" coding to get the pretty GUI to actually do anything. 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 Link to comment Share on other sites More sharing options...
fopetesl Posted March 9, 2017 Author Share Posted March 9, 2017 I have to say, M23, that I grow ever more impressed with the AutoIt community. The proliferation of UDFs and camaraderie is amazing. Nothing like it on any other forum I have been a member of. Here one doesn't get ignored The most powerful number in the Universe. Zero. Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted March 9, 2017 Moderators Share Posted March 9, 2017 fopetesl, Delighted to hear it. 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 Link to comment Share on other sites More sharing options...
fopetesl Posted March 10, 2017 Author Share Posted March 10, 2017 Slightly puzzled: ; Create tab item $cTab_0 = GUICtrlCreateTabItem("Tab 0") ; And another $cTab_0 = GUICtrlCreateTabItem("Manager") GUICtrlSetState($cTab_0, $GUI_SHOW) ; Force ot be shown when GUI created Same variable $cTab_0 used twice for different definitions? This is by design? If so what am I missing? The most powerful number in the Universe. Zero. Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted March 10, 2017 Moderators Share Posted March 10, 2017 fopetesl, "Cut and paste" error - I did say the code was "quick and dirty"! 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 Link to comment Share on other sites More sharing options...
fopetesl Posted March 10, 2017 Author Share Posted March 10, 2017 Another lost focus? Where's my cut & paste typo expandcollapse popup;;;; Acquisition tab and action boxes...... ; Create tab item $cTab_0 = GUICtrlCreateTabItem("Acquisition") ; Create coloured box GUICtrlCreateLabel("", 20, 40, 250, 220,-1,1) GUICtrlSetBkColor(-1, 0xAFEEEE) GUICtrlSetState(-1, $GUI_DISABLE) ; And disable so that element labels are actionable ; Add title GUICtrlCreateLabel("New Sample", 20, 50, 240, 200, $SS_CENTER) GUICtrlSetFont(-1, 10, 800) ; Set to bold font ; $0Box_1 = GUICtrlCreateLabel("Scan", 25, 80, 140, 20,$SS_CENTER) $0Box_1 = GUICtrlCreateLabel("Scan", 20, 20, 140, 20,$SS_CENTER) ;<<< works outside of box ; add baseline check and/or scan ;;;; ...end..Acquisition tab and action boxes...... ; ; ; While 1 $iMsg = GUIGetMsg() Switch $iMsg Case $GUI_EVENT_CLOSE Exit ; Case $cButton_1 ; MsgBox($MB_SYSTEMMODAL, "Clicked", "Button 1") ; Case $cButton_2 ; MsgBox($MB_SYSTEMMODAL, "Clicked", "Button 2") Case $0Box_1 MsgBox($MB_SYSTEMMODAL, "Clicked", "Scan!") Case Else ; Now look for the ControlID in the arrays For $i = 1 To UBound($aBox_1) - 1 If $iMsg = $aBox_1[$i][1] Then ; It was this element MsgBox($MB_SYSTEMMODAL, "Clicked", $aBox_1[$i][0]) ; No point in looking further ExitLoop EndIf Next If I position $0Box_1 outside of GUICtrlCreateTabItem("Acquisition") the Case reacts as coded. Positioned inside the box it doesn't react, so I've lost focus? The most powerful number in the Universe. Zero. Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted March 10, 2017 Moderators Share Posted March 10, 2017 fopetesl, Please post a runnable script which shows the problem or we have little chance of finding a solution as it could well be the result of factors other than the tab structure and will not appear if we add our own GUI code 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 Link to comment Share on other sites More sharing options...
fopetesl Posted March 10, 2017 Author Share Posted March 10, 2017 OK, will remember for future.. here it is... expandcollapse popup#include <GUIConstantsEx.au3> #include <MsgBoxConstants.au3> #include <StaticConstants.au3> ; Create arrays to hold details of element text and ControlID Global $aBox_1[3][2] = [[" System Setup", 0], [" My Info Tool", 0], [" User Details Tool", 0]] Global $aBox_2[3][2] = [[" Manager Reports", 0], [" Currency Details", 0], [" User Details", 0]] ; Create GUI $hGUI = GUICreate("New GUI", @DesktopWidth * .99, @DesktopHeight * .96, 0, 0,-1) ; Create tab structure $cTab = GUICtrlCreateTab(5, 5, @DesktopWidth * .97, @DesktopHeight * .95,-1,1) ;;;; Acquisition tab and action boxes...... ; Create tab item $cTab_0 = GUICtrlCreateTabItem("Acquisition") ; Create coloured box GUICtrlCreateLabel("", 20, 40, 250, 220,-1,1) GUICtrlSetBkColor(-1, 0xAFEEEE) GUICtrlSetState(-1, $GUI_DISABLE) ; And disable so that element labels are actionable ; Add title GUICtrlCreateLabel("New Sample", 20, 50, 240, 200, $SS_CENTER) GUICtrlSetFont(-1, 10, 800) ; Set to bold font ; $0Box_1 = GUICtrlCreateLabel("Scan", 25, 80, 140, 20,$SS_CENTER) $0Box_1 = GUICtrlCreateLabel("Scan", -1, 260, 140, 20,$SS_CENTER) GUICtrlSetFont(-1, 10, 800) ; Set to bold font $0Box_2 = GUICtrlCreateLabel("Start Scan", -1, 100, 140, 20,$SS_CENTER) GUICtrlSetFont(-1, 10, 800) ; Set to bold font ;;;; ...end..Acquisition tab and action boxes...... ;;;; Manager tab and action boxes...... ; And another $cTab_1 = GUICtrlCreateTabItem("Manager") GUICtrlSetState($cTab_1, $GUI_SHOW) ; Force to be shown when GUI created ; Create coloured box GUICtrlCreateLabel("", 20, 40, 150, 100,-1,1) GUICtrlSetBkColor(-1, 0xFFCCCC) GUICtrlSetState(-1, $GUI_DISABLE) ; And disable so that element labels are actionable ; Add title GUICtrlCreateLabel($aBox_1[0][0], 20, 50, 140, 20) GUICtrlSetFont(-1, Default, 800) ; Set to bold font ; Add actionable elements from the array For $i = 1 To UBound($aBox_1) - 1 $aBox_1[$i][1] = GUICtrlCreateLabel($aBox_1[$i][0], 20, 60 + (20 * $i), 140, 20) Next ; Create another coloured box GUICtrlCreateLabel("", 20, 180, 150, 100,-1,1) GUICtrlSetBkColor(-1, 0xCCCCFF) GUICtrlSetState(-1, $GUI_DISABLE) ; Add title GUICtrlCreateLabel($aBox_2[0][0], 20, 190, 140, 20) GUICtrlSetFont(-1, Default, 800) ; Add actionable elements from the array For $i = 1 To UBound($aBox_2) - 1 $aBox_2[$i][1] = GUICtrlCreateLabel($aBox_2[$i][0], 20, 200 + (20 * $i), 140, 20) Next ;;;;;;;;; ..end.. Manager tab & action boxes ;;;;;;;; ;;;;;;;; Database tab & action boxes..... ; Create another tab item $cTab_0 = GUICtrlCreateTabItem("Database") ;;;;;;;; ..end.. Database tab & action boxes..... ; Close tab structure creation GUICtrlCreateTabItem("") ; Add other controls ;$cButton_1 = GUICtrlCreateButton("Button 1", 10, 410, 80, 30) ; actionable :)) ;$cButton_2 = GUICtrlCreateButton("Button 2", 410, 410, 80, 30) GUISetState() While 1 $iMsg = GUIGetMsg() Switch $iMsg Case $GUI_EVENT_CLOSE Exit ; Case $cButton_1 ; MsgBox($MB_SYSTEMMODAL, "Clicked", "Button 1") ; Case $cButton_2 ; MsgBox($MB_SYSTEMMODAL, "Clicked", "Button 2") Case $0Box_1 MsgBox($MB_SYSTEMMODAL, "Clicked", "Scan") Case $0Box_2 MsgBox($MB_SYSTEMMODAL, "Clicked", "Start Scan") Case Else ; Now look for the ControlID in the arrays For $i = 1 To UBound($aBox_1) - 1 If $iMsg = $aBox_1[$i][1] Then ; It was this element MsgBox($MB_SYSTEMMODAL, "Clicked", $aBox_1[$i][0]) ; No point in looking further ExitLoop EndIf Next For $i = 1 To UBound($aBox_2) - 1 If $iMsg = $aBox_2[$i][1] Then MsgBox($MB_SYSTEMMODAL, "Clicked", $aBox_2[$i][0]) ExitLoop EndIf Next EndSwitch WEnd The most powerful number in the Universe. Zero. Link to comment Share on other sites More sharing options...
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