Jump to content
Bester

How to disable GUI control dotted border

Recommended Posts

Bester

Hello there,

after i updated to the newest version of Autoit, every GUI control (buttons, checkboxes, radiobuttons, etc. ) that is currently focused has a dotted border (sorry, dont know the proper name) around it, and i don`t know how to disable it.

controlborder.png

I have tried setting exStyle of GUICreate to 0, that worked for one run and then it was back.
I have tried setting style of GUICreate to 0, didn`t help at all.

Am i missing something very obvious here? 
Please do help, it`s driving me crazy :D

Thanks

Share this post


Link to post
Share on other sites
Melba23

Bester,

My NoFocusLines UDF (look in my sig for the link) is just what you need.

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
Bester

Thank you so much for your reply, unfortunately, unless i`m using your UDF wrong, it does not work for me.

#RequireAdmin

Opt("MustDeclareVars", 1)

#include <date.au3>
#include <string.au3>
#include <Crypt.au3>
;~ #include <StaticConstants.au3>
;~ #include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>


#include "Include\variables.au3"
#include "Include\_NoFocusLines.au3"
#include "Include\_Licence.au3"


_NoFocusLines_Global_Set()


Local $gui_select
Local $nMsg
Local $btn_trial
Local $btn_reg
Local $btn_atris
Local $applicationName = "IP Conf"

$gui_select = GUICreate($applicationName, 280, 80)
;~      GUISetBkColor(0xFFFFFF, $gui_select)

GUICtrlCreateLabel("This is a Trial version of " & $applicationName, 10, 10, 200, 20)
$btn_trial = GUICtrlCreateButton("Continue Trial", 10, 40, 90, 30)
;~ If $trialPeriod = -1 Then GUICtrlSetState($btn_trial, $GUI_DISABLE)
$btn_reg = GUICtrlCreateButton("Register", 110, 40, 90, 30)
$btn_atris = GUICtrlCreateButton("", 220, 4, 57, 68, $BS_BITMAP)
;~ InetGet($atris_logo, @TempDir & "\atris.bmp")
GUICtrlSetImage($btn_atris, @TempDir & "\atris.bmp", -1, 0)

GUISetState()

While True
    $nMsg = GUIGetMsg()

    If $nMsg = $GUI_EVENT_CLOSE Then
        _NoFocusLines_Global_Exit()
        Exit
    EndIf

    If $nMsg = $btn_atris Then
        ;atris logo button
        ShellExecute("http://atris.sk/")
    EndIf

    If $nMsg = $btn_trial Then
        ;trial button
        $RequiresRegCode = 0
        GUIDelete($gui_select)
        $validation = CheckValidation()
        If $validation <> -1 Then
            MsgBox(0, "", "You are currently running Trial version of " & $applicationName & @CRLF & _
                    "If you like this software, please consider buying a full version." & @CRLF & @CRLF & _
                    "You have " & $validation & " days left to evaluate this software.")
        EndIf
        FileSetAttrib($LicenceTDll, "+HS")
        ExitLoop
    EndIf

    If $nMsg = $btn_reg Then
        ;register button
        ShellExecute($product_page)
        $RequiresRegCode = 1
        $trialPeriod = -1
        GUIDelete($gui_select)
        EnterNewCode()
        FileSetAttrib($LicenceDll, "+HS")
        ExitLoop
    EndIf

WEnd

 

Share this post


Link to post
Share on other sites
Melba23

Bester,

Once I remove all the code I cannot run it works fine for me:

#RequireAdmin

;Opt("MustDeclareVars", 1)

#include <date.au3>
#include <string.au3>
#include <Crypt.au3>
;~ #include <StaticConstants.au3>
;~ #include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>

;#include "Include\variables.au3"
#include "NoFocusLines.au3" ; Renamed to match my filepath
;#include "Include\_Licence.au3"

$iRet = _NoFocusLines_Global_Set()
MsgBox(0, "NFL", $iRet)

Local $gui_select
Local $nMsg
Local $btn_trial
Local $btn_reg
Local $btn_atris
Local $applicationName = "IP Conf"

$gui_select = GUICreate($applicationName, 280, 80)
;~      GUISetBkColor(0xFFFFFF, $gui_select)

GUICtrlCreateLabel("This is a Trial version of " & $applicationName, 10, 10, 200, 20)
$btn_trial = GUICtrlCreateButton("Continue Trial", 10, 40, 90, 30)
;~ If $trialPeriod = -1 Then GUICtrlSetState($btn_trial, $GUI_DISABLE)
$btn_reg = GUICtrlCreateButton("Register", 110, 40, 90, 30)
$btn_atris = GUICtrlCreateButton("", 220, 4, 57, 68, $BS_BITMAP)
;~ InetGet($atris_logo, @TempDir & "\atris.bmp")
GUICtrlSetImage($btn_atris, @TempDir & "\atris.bmp", -1, 0)

GUISetState()

While True
    $nMsg = GUIGetMsg()

    If $nMsg = $GUI_EVENT_CLOSE Then
        _NoFocusLines_Global_Exit()
        Exit
    EndIf

    If $nMsg = $btn_atris Then
        ;atris logo button
        ;ShellExecute("http://atris.sk/")
    EndIf

    If $nMsg = $btn_trial Then
        ;trial button
        ;$RequiresRegCode = 0
        ;GUIDelete($gui_select)
        ;$validation = CheckValidation()
        ;If $validation <> -1 Then
        ;    MsgBox(0, "", "You are currently running Trial version of " & $applicationName & @CRLF & _
        ;            "If you like this software, please consider buying a full version." & @CRLF & @CRLF & _
        ;           "You have " & $validation & " days left to evaluate this software.")
        ;EndIf
        ;FileSetAttrib($LicenceTDll, "+HS")
        ;ExitLoop
    EndIf

    If $nMsg = $btn_reg Then
        ;register button
        ;ShellExecute($product_page)
        ;$RequiresRegCode = 1
        ;$trialPeriod = -1
        ;GUIDelete($gui_select)
        ;EnterNewCode()
        ;FileSetAttrib($LicenceDll, "+HS")
        ;ExitLoop
    EndIf

WEnd

What do you get in the MsgBox?

And you really need to look in the Help file at how a Switch structure works to greatly simplify your GUIGetMsg loop.

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
Bester

Thank you again for your reply and the highlights

now here`s the funny thing, in the code you just posted i do get dotted border at the first MsgBox

MsgBox(0, "NFL", $iRet)

but if i click with mouse on button with dotted border (OK), i will not get it after that, which is great, but if i do remove that MsgBox or close it with Esc, or press Enter on the OK button, i`ll get dotted border on my GUI

So, i`m kinda lost here

Edit:
after more testing, even if i remove your function, it acts exactly the same way, i really have no idea how that damn dotted border thing works

Edited by Bester

Share this post


Link to post
Share on other sites
Melba23

Bester,

Quote

i`m kinda lost here

So am I!

it does not surprise me that the MsgBox displays the focus lines - but I am surprised that your GUI is affected by the manner in which you dismiss it. Does this very simple version of your script display focus lines on the buttons when you use {TAB} to move between them?

#include <GUIConstantsEx.au3>

#include "NoFocusLines.au3"

_NoFocusLines_Global_Set()

$gui_select = GUICreate("", 280, 80)

GUICtrlCreateLabel("This is a Trial version", 10, 10, 200, 20)
$btn_trial = GUICtrlCreateButton("Continue Trial", 10, 40, 90, 30)
$btn_reg = GUICtrlCreateButton("Register", 110, 40, 90, 30)
$btn_atris = GUICtrlCreateButton("", 220, 4, 57, 68)

GUISetState()

While True
    $nMsg = GUIGetMsg()
    If $nMsg = $GUI_EVENT_CLOSE Then
        Exit
    EndIf
WEnd

If not then we can begin to add other sections to see if we can define the problem area. 

M23

Edited by Melba23
Typo

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
Bester

Another rather interesting observation (applies for code with or without your function):

so i run the code you send me and if i run the script and just wait for GUI, i will always get button with dotted border, BUT if i run the script and click on some other window or Windows taskbar, i will not get dotted border

what is this madness?

 

Share this post


Link to post
Share on other sites
Melba23

Bester,

I have no idea why you are having this problem - no-one else has ever reported any difficulties with the UDF. What OS are you running?

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
Bester

Thank you again for your reply and i'm sorry for my late reply,

i'm running Win 7 Pro x64 EN, but since you mentioned no-one else has had difficulties, i'm going to test this with a few newly installed machines at work to see what's going on

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

    • Pricehacker
      By Pricehacker
      Hello again!
      I have tried searching for quite some time now but couldn´t find a single working way to change the class of your GUI that doesn´t include changing it manually after its compilation.
      First or "AutoIt v3 GUI" is a pretty boring name tbh and i would like to spice it up a bit, also, and more importantly, I would like to identify my windows by something other than its title as it will change depending on some factors and im using two different programs independently as multi threading isn't supported.
      Any help is appreciated! Thank you!
    • xtcislove
      By xtcislove
      Hello, 
      i have a Problem with  _WinAPI_SetLayeredWindowAttributes, everything is working as excepted if u are on Windows 7.

      But if u are on Windows 10 the transparent background of a control is not clickable anymore. 

      Could someone help?

      Please see example below, put cmd.jpg into the same folder as Example.au3

      Please see trigger.jpg to see which sections are not clickable in Windows 10 (the red dots, the green dots are clickable) on Windows 7 the red ones and green ones are clickable.
       
      The same problem occurs if i use 
       
       
      Example.au3


    • WilliamasKumeliukas
      By WilliamasKumeliukas
      Hello everyones reading this post,
      I'm struggling at resizing properly my radio buttons to fit long text inside without affecting others radio buttons and also adjust position of them relative to the string.
      I tried with _StringSize UDF but I guess im too tired to figure out how to use it correctly..
      I also tried: _Control_SetWidth2Text I found on this forum, it work aslong im not maximizing GUI (radio text is gone when I maximize and maximize is a must)
       
      here is the code example, I hope someone can figure out (sorry if guictrlsetpos is not included in the example, I know thats probably the way to go but I wanted to make sure there is nothing better before use it)
      Thank you
       
      Br,
      ~WilliamasKumeliukas
       
      #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <Array.au3> #include <StringConstants.au3> #include <FileConstants.au3> #include <WindowsConstants.au3> #include <File.au3> #include <EditConstants.au3> #include <GUIListBox.au3> #include <ButtonConstants.au3> #include <ProgressConstants.au3> #include <ColorConstants.au3> #include <AutoitConstants.au3> #include <Misc.au3> #include <WinAPIReg.au3> #include <WinAPI.au3> #Region Opt's Opt("GUIResizeMode", 802) #EndRegion Opt's Global $q = "INTRO LINE" & @CRLF & @CRLF & "description of everything until user press start." Global $file = @TempDir & "\test.p" destroy() Global $msg, $score = 0, $rate, $com, $total = 0, $cfile, $cq, $i = 0, $time = 0, $min = 0, $sec = 0, $hour = 0, $qf, $ii = 0 Main() Func Main() Global $iGUIInitSize = 550 #Region GUI Opt("GUICloseOnEsc", 1) Global $gui = GUICreate("example", 1124, 550,-1 ,-1, BitOR($WS_MAXIMIZEBOX , $WS_MINIMIZEBOX)) Global $gui_size = WinGetClientSize($gui) Global $iFontSize = Int(2 * (.25 + (8 * $gui_size[0] / $iGUIInitSize))) / 2 Global $options = GUICtrlCreateMenu("&Options") Global $guide = GUICtrlCreateMenuItem("Guide", $options) Global $restart = GUICtrlCreateMenuItem("Restart", $options) Global $about = GUICtrlCreateMenuItem("About", $options) Global $exit = GUICtrlCreateMenuItem("Exit", $options) Global $extra = GUICtrlCreateMenu("Extras") Global $creator = GUICtrlCreateMenu("CQB", $extra ) Global $new = GUICtrlCreateMenuItem("custom QP", $creator) Global $load = GUICtrlCreateMenuItem("CQ", $creator ) Global $timer = GUICtrlCreateLabel("", 752, 472, 294, 30, $WS_BORDER) GUICtrlSetResizing(-1, BitOR($GUI_DOCKHCENTER, $GUI_DOCKVCENTER) ) GUICtrlSetFont(-1, $iFontSize) GUICtrlSetState($timer, $GUI_HIDE) Global $info = GUICtrlCreateLabel( $q, 200, 20, 700, 200, $SS_CENTER ) GUICtrlSetResizing(-1, BitOR($GUI_DOCKHCENTER, $GUI_DOCKVCENTER) ) $fi = GUICtrlSetFont($info, $iFontSize) Global $a = GUICtrlCreateRadio("A)", 100, 210, $WS_EX_CLIENTEDGE) $fa = GUICtrlSetFont($a, 15) GUICtrlSetResizing(-1, BitOR($GUI_DOCKHCENTER, $GUI_DOCKVCENTER) ) GUICtrlSetState($a, 16) Global $b = GUICtrlCreateRadio("B)", 100, 310 , $WS_EX_CLIENTEDGE) $fb = GUICtrlSetFont($b, 15) GUICtrlSetResizing(-1, BitOR($GUI_DOCKHCENTER, $GUI_DOCKVCENTER) ) GUICtrlSetState($b, 16) Global $c = GUICtrlCreateRadio("C)", 750, 210 , $WS_EX_CLIENTEDGE) $fc = GUICtrlSetFont($c, 15) GUICtrlSetResizing(-1, BitOR($GUI_DOCKHCENTER, $GUI_DOCKVCENTER) ) GUICtrlSetState($c, 16) Global $d = GUICtrlCreateRadio( "D) ", 750, 310, $WS_EX_CLIENTEDGE) $fd = GUICtrlSetFont($d, 15) GUICtrlSetResizing (-1, BitOR($GUI_DOCKHCENTER, $GUI_DOCKVCENTER) ) GUICtrlSetState($d, 16) Global $sign = GUICtrlCreateLabel( $file, 420, 480, -1, -1, BitOR ( $SS_CENTER, $WS_BORDER ) ) GUICtrlSetResizing ( -1, BitOR ( $GUI_DOCKHCENTER, $GUI_DOCKVCENTER ) ) GUICtrlSetFont($sign, 12) Global $yb = GUICtrlCreateRadio("True", 200, 420, 200, 50, $BS_PUSHLIKE) GUICtrlSetResizing(-1, BitOR($GUI_DOCKHCENTER, $GUI_DOCKVCENTER,$GUI_DOCKSIZE)) GUICtrlSetFont($yb, 15) GUICtrlSetState($yb, 32) Global $nb = GUICtrlCreateRadio("False", 700, 420, 200, 50, $BS_PUSHLIKE) GUICtrlSetResizing(-1, BitOR($GUI_DOCKHCENTER, $GUI_DOCKVCENTER, $GUI_DOCKSIZE)) GUICtrlSetFont($nb, 15) GUICtrlSetState($nb, 32) Global $start = GUICtrlCreateButton("Start", 20, 20, 100, 50, $SS_CENTER, $WS_EX_CLIENTEDGE) GUICtrlSetResizing(-1, BitOR($GUI_DOCKHCENTER, $GUI_DOCKVCENTER)) GUICtrlSetFont($start, 12) Global $valid = GUICtrlCreateButton("Confirm", 20, 20, 100, 50, $SS_CENTER, $WS_EX_CLIENTEDGE) GUICtrlSetResizing(-1, BitOR($GUI_DOCKHCENTER, $GUI_DOCKVCENTER)) GUICtrlSetFont($valid, 12) GUICtrlSetState($valid, 32) GUISetState(@SW_SHOW) #EndRegion GUI While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Switch MsgBox(4096 + 4, "Warning", "Are you sure to exit?") Case 6 AdlibUnRegister("timer") If Not $qf = "" Then FileClose($file) EndIf Exit Case 7 ContinueLoop EndSwitch Case $start ;AdlibRegister("timer") ;Global $qf = StringSplit(StringStripWS(FileRead($file), 6), @CRLF, 0) ;qloop($file) GUICtrlSetData($a, "A) This long string is an example as string that I want to fit in 4 radio buttons because sometimes it can be that long.") GUICtrlSetData($b, "B) This long string is an example as string that I want to fit in 4 radio buttons because sometimes it can be that long.") GUICtrlSetData($c, "C) This long string is an example as string that I want to fit in 4 radio buttons because sometimes it can be that long.") GUICtrlSetData($d, "D) This long string is an example as string that I want to fit in 4 radio buttons because sometimes it can be that long.") Case $restart MsgBox(4096, "Warning", 'Normally, your suposed to start something before restarting it.') ContinueLoop Case $new ;GUISetState(@SW_HIDE, $gui) ;_CustomNew() ContinueLoop Case $load ;_CustomLoad() Case $about ;_About() EndSwitch WEnd EndFunc ;Main() Func timer() If $time = 0 Then Global $time = TimerInit() Global $diff = TimerDiff($time) Global $sec = Int(Mod($diff / 1000, 60)) Global $min = Int(Mod($diff / 60000, 60)) Global $hour = Int($diff / 3600000) If $sec < 10 Then $sec = "0" & $sec If $min < 10 Then $min = "0" & $min If $hour < 10 Then $hour = "0" & $hour GUICtrlSetData($timer, "Temps: " & $hour & ":" & $min & ":" & $sec) EndFunc ;==>timer Func destroy() If FileExists($file) Then FileDelete($file) EndIf DirCreate(@TempDir & "\About") FileInstall("C:\test.txt", $file) EndFunc ;==>destroy  
    • xtcislove
      By xtcislove
      Hello,

      im searching like 6 hours and i didnt found the right solution.

      Im trying to build a treeview from a directory and its subfolders etc.

      This function give me right treeview, but i cant color each item seperated.

       
      #include <GuiTreeView.au3> $hGui = GUICreate("Demo1", 600, 400) $hTreeView = _GUICtrlTreeView_Create($hGui, 10, 10, 580, 380) GUISetState() _GUICtrlTreeView_BeginUpdate($hTreeView) ListFiles_ToTreeView(@ScriptDir, 0) _GUICtrlTreeView_EndUpdate($hTreeView) Do Until GUIGetMsg() = -3 Func ListFiles_ToTreeView($sSourceFolder, $hItem) Local $sFile ; Force a trailing \ If StringRight($sSourceFolder, 1) <> "\" Then $sSourceFolder &= "\" ; Start the search Local $hSearch = FileFindFirstFile($sSourceFolder & "*.*") ; If no files found then return If $hSearch = -1 Then Return ; This is where we break the recursive loop <<<<<<<<<<<<<<<<<<<<<<<<<< ; Now run through the contents of the folder While 1 ; Get next match $sFile = FileFindNextFile($hSearch) ; If no more files then close search handle and return If @error Then ExitLoop ; This is where we break the recursive loop <<<<<<<<<<<<<<<<<<<<<<<<<< ; Check if a folder If @extended Then ; If so then call the function recursively ListFiles_ToTreeView($sSourceFolder & $sFile, _GUICtrlTreeView_AddChild($hTreeView, $hItem, $sFile)) Else ; If a file than write path and name _GUICtrlTreeView_AddChild($hTreeView, $hItem, $sFile) EndIf WEnd ; Close search handle FileClose($hSearch) EndFunc ;==>ListFiles_ToTreeView
      So i am searching for the exact same function just with
      GUICtrlCreateTreeViewItem
      instead of 
      _GUICtrlTreeView_AddChild
       
      Ps: i have a folder structure where i like to color each item green if a file only exist once and red if it exist more than once.

      Could someone help?
       
      Solution:

       
       
    • Pricehacker
      By Pricehacker
      Title pretty much says it all. Im wondering what button the "primary mouse button" is, and while im here i would also like to know what the "secondary mouse button" is. I´m guessing its the left and right mouse buttons but i could not confirm this.
      Thank you!
×