Aphotic

Multi "Screen" GUI Management

8 posts in this topic

#1 ·  Posted (edited)

Just wanted to share my functions for managing a GUI with lots of controls and many screens.

I personally feel that it is very efficient and keeps line count to a minimum.

And if it's not, I'll learn a better solution!

Note: There are some conditional veriables such as $changes and $cont that are modified by the main loop in this particular script; they are meant as an example, please don't try too hard to understand why they're used.

*Usage*

This allows you to re-state a handful of buttons in one line when doing slight GUI changes:

ToggleCTRL($GUI_DISABLE, $dALO, $dAAF, $dRLA) (A few buttons on a certain screen)

ToggleCTRL($GUI_DISABLE, $dSAV, $dCAN) (Save/Cancel buttons)

AND

A single line solution to switching a GUI "screen":

GuiMod("MAIN", $GUI_HIDE)

GuiMod("DETAILS", $GUI_SHOW)

GuiMod("PLANS", $GUI_HIDE)

Another way I've used this to my advantage is as follows:

Say a GUI has 3 or 4 main screens, and 3 or 4 "form" screens.

When switching to a form screen, save the main screen that it was on to a variable; then once the user is done with the form, either submitting or cancelling, you can call the variable to revert back to the main screen it was on.

Func _GuiMod($i, $tog, $act = True)
   Switch $i
   Case "MAIN"
      If $tog = $GUI_SHOW And $changes Then
         $changes = False
         ControlClick($GUI, "", $LOGfg)
      Else
      EndIf
      If $tog = $GUI_SHOW Then WinMove($GUI, "", Default, Default, 535, 445)
      _ToggleCTRL($tog, $TAB, $LOGfl, $LOGfc, $LOGfi, $LOGfg, $LOGta, $LOGvd)
      _ToggleCTRL($tog, $LOGtp, $LOGse)
   Case "DETAILS"
      If $tog = $GUI_SHOW Then WinMove($GUI, "", Default, Default, 535, 475)
      Local $cont = True
      If $tog = $GUI_SHOW And $act Then
         If Not UpdateDetails() Then
            $cont = False
            _GuiMod("MAIN", $GUI_SHOW)
         EndIf
      EndIf
      If $cont Then
         _ToggleCTRL($tog, $dUID, $dICU, $dACC, $dCOF, $dNAM, $dCO2, $dIPW, $dEMA, $dEDI, $dLOG, $dMOD)
         _ToggleCTRL($tog, $dUPD, $dINP, $dAPL, $dALO, $dAAF, $dPLL, $dLOL, $dAFL, $dSAV, $dCAN, $dRPL)
         _ToggleCTRL($tog, $dRLA, $dACT, $dAC2, $dRET, $dDEL, $dADD, $dMQC)
      EndIf
   Case "ADD-INPUT"
      _ToggleCTRL($tog, $nCOMi, $nCO2i, $nNAMi, $nNAMb, $nEMAi, $nPREc, $nACCc, $nICUi, $nADDi, $nNOTi)
      _ToggleCTRL($tog, $nAPLb, $nALOb, $nAAFb, $nPLAl, $nLOCl, $nAFFl, $nRPLb, $nRLAb, $nADDb, $nCLEb)
   Case "PLANS"
      If $tog <> $GUI_SHOW Or Not $changing Then
         If $act Then _ToggleCTRL($tog, $dMOD, $dLOG, $dUPD, $dDEL)
         _ToggleCTRL($tog, $dINP, $dAPL, $dALO, $dAAF, $dPLL, $dLOL, $dAFL, $dSAV, $dCAN, $dRPL, $dRLA)
      EndIf
   Case "CHANGE"
      _ToggleCTRL($tog, $dITL, $dITC, $dAML, $dAMC, $dSCB, $dCCB, $dEAB)
      If $tog = $GUI_SHOW Then
         GUICtrlSetState($dRET, $GUI_DISABLE)
      Else
         GUICtrlSetState($dRET, $GUI_ENABLE)
      EndIf
   Case "NEW"
      If $tog = $GUI_SHOW Then WinMove($GUI, "", Default, Default, 465, 475)
      _ToggleCTRL($tog, $TAB, $nCOMl, $nCOMi, $nCO2l, $nCO2i, $nNAMl, $nNAMi, $nEMAl, $nEMAi, $nPREl, $nPREc)
      _ToggleCTRL($tog, $nACCl, $nACCc, $nPAEb, $nICUl, $nICUi, $nADDi, $nAPLb, $nALOb, $nAAFb, $nPLAl, $nLOCl)
      _ToggleCTRL($tog, $nAFFl, $nRPLb, $nNOTl, $nNOTi, $nADDb, $nCLEb, $nLAST)
   Case "ACCESS"
      If $tog = $GUI_SHOW Then WinMove($GUI, "", Default, Default, 465, 330)
      _ToggleCTRL($tog, $ACCd1, $ACCd2, $TYPla, $TYPli, $TYPad, $TYPde, $TYPmu, $TYPmd, $ACCla, $ACCli)
      _ToggleCTRL($tog, $ACCde, $ACCmu, $ACCmd, $ACCdl, $ACCdi, $ACCal, $ACCai, $ACCaa, $taRET)
   Case "TPi"
      _ToggleCTRL($tog, $tpOPEb, $tpCREr, $tpLINr, $tpCO2i, $tpEMAi, $tpEMAl, $tpCREb, $tpCOPb, $tpCOPi, $tpCTOi, $tpCGOb)
      _ToggleCTRL($tog, $tpUFLi, $tpUFLb, $tpICUi, $tpPLAi, $tpLINb, $tpDLIb, $tpUFMi, $tpSCAl, $tpCFAr, $tpCBAr)
   Case "TPC"
      If $tog = $GUI_SHOW Then
         _GuiMod("TPL", $GUI_HIDE)
         _GuiMod("TPH", $GUI_HIDE)
         _GuiMod("TPD", $GUI_HIDE)
      EndIf
      _ToggleCTRL($tog, $tpCO2l, $tpCO2i, $tpCOPl, $tpCOPi, $tpCREb, $tpCOPb, $tpSEPl, $tpCTOl, $tpCTOi, $tpCGOb, $tpLAST)
      _ToggleCTRL($tog, $tpIDNl, $tpIDNi, $tpIDNn, $tpSCAl, $tpEMAi, $tpEMAl, $tpCFAr, $tpCBAr)
   Case "TPL"
      If $tog = $GUI_SHOW Then
         _GuiMod("TPC", $GUI_HIDE)
         _GuiMod("TPH", $GUI_HIDE)
         _GuiMod("TPD", $GUI_HIDE)
      EndIf
      _ToggleCTRL($tog, $tpUFLl, $tpUFLi, $tpUFLb, $tpICUl, $tpICUi, $tpPLAl, $tpPLAi, $tpLINb, $tpDLIb, $tpUFMl, $tpUFMi, $tpIMAb, $tpIMRb)
   Case "TPH"
      If $tog = $GUI_SHOW Then
         _GuiMod("TPC", $GUI_HIDE)
         _GuiMod("TPL", $GUI_HIDE)
         _GuiMod("TPD", $GUI_HIDE)
      EndIf
      _ToggleCTRL($tog, $tpUFLl, $tpUFLi, $tpUFLb, $tpUFMl, $tpUFMi, $tpCOCl, $tpCOCi, $tpCOGb)
   Case "TPD"
      If $tog = $GUI_SHOW Then
         _GuiMod("TPC", $GUI_HIDE)
         _GuiMod("TPL", $GUI_HIDE)
         _GuiMod("TPH", $GUI_HIDE)
      EndIf
      _ToggleCTRL($tog, $tpDIDl, $tpDIDi, $tpDIDb)
   EndSwitch
EndFunc

Func _ToggleCTRL($tog, $c0 = 0, $c1 = 0, $c2 = 0, $c3 = 0, $c4 = 0, $c5 = 0, $c6 = 0, $c7 = 0, $c8 = 0, $c9 = 0, $c10 = 0, $c11 = 0, $c12 = 0)
   For $i = 0 To @NumParams
      GUICtrlSetState(Eval("c" & $i), $tog)
   Next
EndFunc

 

Edited by Aphotic

Share this post


Link to post
Share on other sites



I see only functions.
Can you post also example to show us how to use it ?

 


ADO.au3 UDF     POP3.au3 UDF     XML.au3 UDF    How to use IE.au3  UDF with  AutoIt v3.3.14.x  for other useful stuff click the following button:

Spoiler

Last update: 2016-12-23
Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft Components * TeamViewer API -UDF * JavaManagement UDF * VIES over SOAPPOP3.au3 UDF *  RTF Printer - UDF * XML.au3 - BETA * ADO.au3 UDF SMTP Mailer UDF * WinSCP UDF *

My contribution to others projects: * _sql.au3 UDF  *

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Best coding practices * 

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities *

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, The Art of Computer Programming
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

 

Share this post


Link to post
Share on other sites

Small question/suggestion for your _ToggleCTRL function.  Why not just provide an array to the function?  That way you don't limit yourself to x (12) manually defined parameters and you eliminate the extra overhead from the Eval function.

Share this post


Link to post
Share on other sites

#4 ·  Posted (edited)

On ‎11‎/‎11‎/‎2016 at 4:30 PM, mLipok said:

I see only functions.
Can you post also example to show us how to use it ?

 

Edited the first post.

On ‎11‎/‎14‎/‎2016 at 2:54 PM, spudw2k said:

Small question/suggestion for your _ToggleCTRL function.  Why not just provide an array to the function?  That way you don't limit yourself to x (12) manually defined parameters and you eliminate the extra overhead from the Eval function.

Sometimes, I call the ToggleCTRL function with different groups of control variables, maybe even just two to three.

I like your idea, although I wish I could call it with something like:

ToggleCTRL($GUI_DISABLE, [$nALOb, $nAAFb])

I don't like the idea of having to declare a local variable every time before calling it, unless I'm missing something...

Local $tcArr = [$nALOb, $nAAFb]

ToggleCTRL($GUI_DISABLE, $tcArr)

The idea is to reduce the line count in the main script logic; please advise?

 

Thank you to you both!

 

 

Edited by Aphotic

Share this post


Link to post
Share on other sites

#5 ·  Posted (edited)

Well, you're right...you'd have to define the arrays, but not every time (unless it truly needs to be dynamic).  You could declare arrays for each collection of controls at the beginning of your script.  

edit:
Another idea I thought of to simply the array creation....you could use StringSplit to create an array from a character delimited string with your control IDs.  Really cutting out the Eval overhead is what I was suggesting.  

Edited by spudw2k
1 person likes this

Share this post


Link to post
Share on other sites
21 hours ago, spudw2k said:

Well, you're right...you'd have to define the arrays, but not every time (unless it truly needs to be dynamic).  You could declare arrays for each collection of controls at the beginning of your script.  

edit:
Another idea I thought of to simply the array creation....you could use StringSplit to create an array from a character delimited string with your control IDs.  Really cutting out the Eval overhead is what I was suggesting.  

Yeah, I'd rather not define an array that's going to be used once.

The delimited string idea is perfect, thank you very much; I'll edit the first post with that!

Share this post


Link to post
Share on other sites

I'm not sure if I prefer this method. It may reduce the need for Eval and turn it into a one line solution, although I've never had issues with performance when using Eval and the method I'm currently using is a tad easier to read.

Func _GuiMod($i, $tog, $act = True)
   Switch $i
   Case "MAIN"
      If $tog = $GUI_SHOW And $changes Then
         $changes = False
         ControlClick($GUI, "", $LOGfg)
      Else
      EndIf
      If $tog = $GUI_SHOW Then WinMove($GUI, "", Default, Default, 535, 445)
      _ToggleCTRL($tog, $TAB &"|"& $LOGfl &"|"& $LOGfc &"|"& $LOGfi &"|"& $LOGfg &"|"& $LOGta &"|"& $LOGvd &"|"& $LOGtp &"|"& $LOGse)
   Case "DETAILS"
      If $tog = $GUI_SHOW Then WinMove($GUI, "", Default, Default, 535, 475)
      Local $cont = True
      If $tog = $GUI_SHOW And $act Then
         If Not UpdateDetails() Then
            $cont = False
            _GuiMod("MAIN", $GUI_SHOW)
         EndIf
      EndIf
      If $cont Then
         _ToggleCTRL($tog, $dUID &"|"& $dICU &"|"& $dACC &"|"& $dCOF &"|"& $dNAM &"|"& $dCO2 &"|"& $dIPW &"|"& $dEMA &"|"& $dEDI &"|"& $dLOG &"|"& $dMOD)
         _ToggleCTRL($tog, $dUPD &"|"& $dINP &"|"& $dAPL &"|"& $dALO &"|"& $dAAF &"|"& $dPLL &"|"& $dLOL &"|"& $dAFL &"|"& $dSAV &"|"& $dCAN &"|"& $dRPL)
         _ToggleCTRL($tog, $dRLA &"|"& $dACT &"|"& $dAC2 &"|"& $dRET &"|"& $dDEL &"|"& $dADD &"|"& $dMQC)
      EndIf
   Case "ADD-INPUT"
      _ToggleCTRL($tog, $nCOMi &"|"& $nCO2i &"|"& $nNAMi &"|"& $nNAMb &"|"& $nEMAi &"|"& $nPREc &"|"& $nACCc &"|"& $nICUi &"|"& $nADDi &"|"& $nNOTi)
      _ToggleCTRL($tog, $nAPLb &"|"& $nALOb &"|"& $nAAFb &"|"& $nPLAl &"|"& $nLOCl &"|"& $nAFFl &"|"& $nRPLb &"|"& $nRLAb &"|"& $nADDb &"|"& $nCLEb)
   Case "PLANS"
      If $tog <> $GUI_SHOW Or Not $changing Then
         If $act Then _ToggleCTRL($tog, $dMOD &"|"& $dLOG &"|"& $dUPD &"|"& $dDEL)
         _ToggleCTRL($tog, $dINP &"|"& $dAPL &"|"& $dALO &"|"& $dAAF &"|"& $dPLL &"|"& $dLOL &"|"& $dAFL &"|"& $dSAV &"|"& $dCAN &"|"& $dRPL &"|"& $dRLA)
      EndIf
   Case "CHANGE"
      _ToggleCTRL($tog, $dITL &"|"& $dITC &"|"& $dAML &"|"& $dAMC &"|"& $dSCB &"|"& $dCCB &"|"& $dEAB)
      If $tog = $GUI_SHOW Then
         GUICtrlSetState($dRET, $GUI_DISABLE)
      Else
         GUICtrlSetState($dRET, $GUI_ENABLE)
      EndIf
   Case "NEW"
      If $tog = $GUI_SHOW Then WinMove($GUI, "", Default, Default, 465, 475)
      _ToggleCTRL($tog, $TAB &"|"& $nCOMl &"|"& $nCOMi &"|"& $nCO2l &"|"& $nCO2i &"|"& $nNAMl &"|"& $nNAMi &"|"& $nEMAl &"|"& $nEMAi &"|"& $nPREl &"|"& $nPREc &"|"& $nACCl &"|"& $nACCc &"|"& $nPAEb &"|"& $nICUl &"|"& $nICUi &"|"& $nADDi &"|"& $nAPLb &"|"& $nALOb &"|"& $nAAFb &"|"& $nPLAl &"|"& $nLOCl &"|"& $nAFFl &"|"& $nRPLb &"|"& $nNOTl &"|"& $nNOTi &"|"& $nADDb &"|"& $nCLEb &"|"& $nLAST)
   Case "ACCESS"
      If $tog = $GUI_SHOW Then WinMove($GUI, "", Default, Default, 465, 330)
      _ToggleCTRL($tog, $ACCd1 &"|"& $ACCd2 &"|"& $TYPla &"|"& $TYPli &"|"& $TYPad &"|"& $TYPde &"|"& $TYPmu &"|"& $TYPmd &"|"& $ACCla &"|"& $ACCli &"|"& $ACCde &"|"& $ACCmu &"|"& $ACCmd &"|"& $ACCdl &"|"& $ACCdi &"|"& $ACCal &"|"& $ACCai &"|"& $ACCaa &"|"& $taRET)
   Case "TPi"
      _ToggleCTRL($tog, $tpOPEb &"|"& $tpCREr &"|"& $tpLINr &"|"& $tpCO2i &"|"& $tpEMAi &"|"& $tpEMAl &"|"& $tpCREb &"|"& $tpCOPb &"|"& $tpCOPi &"|"& $tpCTOi &"|"& $tpCGOb &"|"& $tpUFLi &"|"& $tpUFLb &"|"& $tpICUi &"|"& $tpPLAi &"|"& $tpLINb &"|"& $tpDLIb &"|"& $tpUFMi &"|"& $tpSCAl &"|"& $tpCFAr &"|"& $tpCBAr)
   Case "TPC"
      If $tog = $GUI_SHOW Then
         _GuiMod("TPL", $GUI_HIDE)
         _GuiMod("TPH", $GUI_HIDE)
         _GuiMod("TPD", $GUI_HIDE)
      EndIf
      _ToggleCTRL($tog, $tpCO2l &"|"& $tpCO2i &"|"& $tpCOPl &"|"& $tpCOPi &"|"& $tpCREb &"|"& $tpCOPb &"|"& $tpSEPl &"|"& $tpCTOl &"|"& $tpCTOi &"|"& $tpCGOb &"|"& $tpLAST &"|"& $tpIDNl &"|"& $tpIDNi &"|"& $tpIDNn &"|"& $tpSCAl &"|"& $tpEMAi &"|"& $tpEMAl &"|"& $tpCFAr &"|"& $tpCBAr)
   Case "TPL"
      If $tog = $GUI_SHOW Then
         _GuiMod("TPC", $GUI_HIDE)
         _GuiMod("TPH", $GUI_HIDE)
         _GuiMod("TPD", $GUI_HIDE)
      EndIf
      _ToggleCTRL($tog, $tpUFLl &"|"& $tpUFLi &"|"& $tpUFLb &"|"& $tpICUl &"|"& $tpICUi &"|"& $tpPLAl &"|"& $tpPLAi &"|"& $tpLINb &"|"& $tpDLIb &"|"& $tpUFMl &"|"& $tpUFMi &"|"& $tpIMAb &"|"& $tpIMRb)
   Case "TPH"
      If $tog = $GUI_SHOW Then
         _GuiMod("TPC", $GUI_HIDE)
         _GuiMod("TPL", $GUI_HIDE)
         _GuiMod("TPD", $GUI_HIDE)
      EndIf
      _ToggleCTRL($tog, $tpUFLl &"|"& $tpUFLi &"|"& $tpUFLb &"|"& $tpUFMl &"|"& $tpUFMi &"|"& $tpCOCl &"|"& $tpCOCi &"|"& $tpCOGb)
   Case "TPD"
      If $tog = $GUI_SHOW Then
         _GuiMod("TPC", $GUI_HIDE)
         _GuiMod("TPL", $GUI_HIDE)
         _GuiMod("TPH", $GUI_HIDE)
      EndIf
      _ToggleCTRL($tog, $tpDIDl &"|"& $tpDIDi &"|"& $tpDIDb)
   EndSwitch
EndFunc

Func _ToggleCTRL($tog, $ctrl)
   Local $arr = StringSplit($ctrl, "|")
   For $i = 1 To Ubount($arr)-1
      GUICtrlSetState($arr[$i], $tog)
   Next
EndFunc

 

Share this post


Link to post
Share on other sites

#8 ·  Posted (edited)

Today I realized a good way to further reduce the needed code to process controls like this.

 

Local $mNamLa = GUICtrlCreateLabel("Name:", 8, 9)
Local $mNamIn = GUICtrlCreateInput("", 50, 5, 220, 20)
Local $mTypLa = GUICtrlCreateLabel("Type:", 12, 39)
Local $mTypAD = GUICtrlCreateRadio("Active Directory", 50, 35, 100)
Local $mTypIn = GUICtrlCreateRadio("Input", 160, 35, 50)
Local $mTypSe = GUICtrlCreateRadio("Select", 220, 35, 50)
Local $mADaLa = GUICtrlCreateLabel("Attribute Name:", 10, 71, 79)
Local $mADaIn = GUICtrlCreateInput("", 90, 67, 180)
Local $mSelLa = GUICtrlCreateLabel("Values:", 30, 71, 44)
Local $mSelCo = GUICtrlCreateCombo("", 75, 67, 120, 25, $CBS_DROPDOWNLIST)
Local $mSelAd = GUICtrlCreateButton("", 205, 64, 26, 26, $BS_ICON)
GUICtrlSetImage(-1, @ScriptDir & "\icons\add.ico")
Local $mSelRe = GUICtrlCreateButton("", 240, 64, 26, 26, $BS_ICON)
GUICtrlSetImage(-1, @ScriptDir & "\icons\delete.ico")
Local $mActSa = GUICtrlCreateButton("Save", 30, 105, 100, 25)
Local $mActCa = GUICtrlCreateButton("Cancel", 150, 105, 100, 25)

;Using the function below, you can use the following to toggle gui screens.
_ToggleCTRL($GUI_HIDE, "mNamLa", "mActCa")
;Further, it leaves the option to toggle a list of particular ones that are not in order if you need to
_ToggleCTRL($GUI_HIDE, $mTypLa, $mTypAD, $mTypIn, $mTypSe, $mSelLa, $mSelCo)

Func _ToggleCTRL($tog, $c0 = 0, $c1 = 0, $c2 = 0, $c3 = 0, $c4 = 0, $c5 = 0, $c6 = 0, $c7 = 0, $c8 = 0, $c9 = 0, $c10 = 0, $c11 = 0, $c12 = 0)
   If IsString($c0) Then
      For $i = Eval($c0) To Eval($c1)
         GUICtrlSetState($i, $tog)
      Next
   Else
      For $i = 0 To @NumParams
         GUICtrlSetState(Eval("c" & $i), $tog)
      Next
   EndIf
EndFunc

 

Edited by Aphotic

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

  • Similar Content

    • ronaldo97
      By ronaldo97
      Hello How can I make the GUI is compatible with all screen sizes ??  
      #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Form1", 623, 445, 192, 124, BitOR($GUI_SS_DEFAULT_GUI,$WS_MAXIMIZE)) GUISetBkColor(0x1E1E1E) $Label1 = GUICtrlCreateLabel("Welcome Back !!", 424, 64, 161, 29) GUICtrlSetFont(-1, 16, 400, 0, "Tahoma") GUICtrlSetColor(-1, 0x800000) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd How do I make Gui interface compatible with all screen sizes ?? 800*600
      1024*768
      1280*1024
    • Genotypek
      By Genotypek
      Hello.
      I've got a problem. I want to center my input vertically, but I don't have any single idea how to do it.
      There's my example code:
      #include <GUIConstantsEx.au3> $GUI = GUICreate("Gui", 237, 93, 192, 124) $Input1 = GUICtrlCreateInput("Center vertically isn't correct", 16, 16, 201, 62) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd What could I do?
      Greetings, "genotypek".
    • argv1
      By argv1
      Hi,
      working on my first autoit GUI an got some questions.
      Is it possible to get an action on the first menu level
      For example:
      $StartMenu = GUICtrlCreateMenu("Datei") ... while 1 Switch GUIGetMsg() Case $StartMenu MsgBox(0, "Test", "yes this works") (currently this does not work for me)
      Currently I have to create GUICtrlCreateMenuItem 's this will leed to a result
       
      And a 2nd question. I saw many time this:
      $StartMenu = GUICtrlCreateMenu("&Datei") For what does I need the ampersand? If I leave out the & nothing seems to change
       
      Thank you very much in advance
       
    • Blueman
      By Blueman
      Hey Guys,
      I am Struggling with a issue that i cannot seem to fix.
      I hope that you guys can help me with this.
      I have a GUI with some text attributes, for all i use the following code;
      $Label_ts_Header = GUICtrlCreateLabel("Manual Adress", 60, 10, 500, 50) GUICtrlSetBkColor($Label_ts_Header, $COLOR_WHITE) GUICtrlSetFont ($Label_ts_Header, 26, 800, 0, "Calibri") This is all working like it should, but when i activate the GUI on another pc the text size is bigger and the GUI size is somewhat smaller.
      The problem is that it isn't on all computers, i can't seem to find the problem,..
      If i make it fit on one pc it is to small on another or to big,..
      What am i doing wrong?
       
      Is there some kind of attribute that i need to add to the top of my script to normalize text sizes in the script?
       
      Thanks!
       
      EDIT: Found the problem guys, some computers has changed the text size to 125% // Can i force 100% for my GUI somehow ?
       
      EDIT2: Fixed it guys! // I used the Function Below to get the DPI Setting and used that to determine the text size (example below)
       
      Func _GDIPlus_GraphicsGetDPIRatio($iDPIDef = 96) _GDIPlus_Startup() Local $hGfx = _GDIPlus_GraphicsCreateFromHWND(0) If @error Then Return SetError(1, @extended, 0) Local $aResult #forcedef $__g_hGDIPDll, $ghGDIPDll $aResult = DllCall($__g_hGDIPDll, "int", "GdipGetDpiX", "handle", $hGfx, "float*", 0) If @error Then Return SetError(2, @extended, 0) Local $iDPI = $aResult[2] Local $aresults[2] = [$iDPIDef / $iDPI, $iDPI / $iDPIDef] _GDIPlus_GraphicsDispose($hGfx) _GDIPlus_Shutdown() Return $aresults EndFunc ;==>_GDIPlus_GraphicsGetDPIRatio  
      $Label_S2 = GUICtrlCreateLabel("Data from The Base", 10, 300, 400, 20) GUICtrlSetBkColor($Label_S2, $COLOR_WHITE) GUICtrlSetFont ($Label_S2, 13 * _GDIPlus_GraphicsGetDPIRatio()[0])  
       
    • Em4gdn1m
      By Em4gdn1m
      Hey everyone, I'm curious if there is a way to incorporate a checkbox with a combo GUICtrl?
      so for instance I have a GUI that has a bunch of checkboxes that allow me to open certain programs as needed.  (this is just some parsing of my code, sorry, noob here and not sure what the preferred method of displaying code is, please enlighten me)

          $L0742 = GUICtrlCreateCheckbox("L07 4.2", 110, 320, 100)
          $L07502 = GUICtrlCreateCheckbox("L07 5.0.2", 110, 350, 100)
          $GenComm = GUICtrlCreateCheckbox("GenComm", 110, 380, 100)
          $Templates = GUICtrlCreateCheckbox("Templates", 110, 410, 100)
          $MCT = GUICtrlCreateCheckbox("MCT", 110, 440, 100)
          $Desktop_Shortcuts = GUICtrlCreateCheckbox("Desktop Shortcuts by Tester", 110, 470, 200)
       
      ...
      Case $msg = $RunBtn
                  RunPrograms()
       
      ...
      Func RunPrograms()

          if GUICtrlRead($L0742) = $GUI_CHECKED then Run("C:\Program Files\Varian\Paxscan\L07 Rel4.2\viva\viva.exe", "")
          if GUICtrlRead($L07502) = $GUI_CHECKED then Run("C:\Program Files\Varian\Paxscan\L07 Rel5\viva\viva.exe", "")
          if GUICtrlRead($GenComm) = $GUI_CHECKED then Run("\\Fpanelfs1\FPShared\Desktop_Shortcuts_by_Tester\Matt\CPI Generator\CPI Generator Windows 7 64 Bit\GenComm\GenComm.NET.exe", "")
          if GUICtrlRead($Templates) = $GUI_CHECKED then ShellExecute("\\Fpanelfs1\FPProjects\Documentation Controlled\Test_Templates")
          if GUICtrlRead($MCT) = $GUI_CHECKED then Run("\\Fpanelfs1\FPProjects\Documentation Controlled\Manufacturing Software\MCT\MCT.exe","")
          if GUICtrlRead($Desktop_Shortcuts) = $GUI_CHECKED then ShellExecute("\\Fpanelfs1\fpshared\Desktop_Shortcuts_by_Tester")
      EndFunc
       
      so i click some checkboxes, and hit a run button and the programs which are checked run, great.
      BUT i want to add a bunch of options under one checkbox. A combo that will list a bunch of versions of a program that can be opened. something like this... but I want that program to be part of a checkbox
      $ViVAComboBox = GUICtrlCreateCombo("L01 Rel 13", 110, 320, 100)
      GUICtrlSetData($ViVAComboBox, "L04|L05|L07 Rel 4.2|L07 Rel 5.0.2|L09", "L07 Rel 4.2")
       
      is this possible? is there another GUICtrl that does this better that i am not aware of?