Jump to content
Wicked_Caty

GUI behaves strangely

Recommended Posts

Wicked_Caty

A function is started and creates a GUI with two buttons. If either of those are pressed, the function will return a value, which will be used to start another function. However, only one of those two buttons works.

Local $gui = GUICreate("Crypt", 120, 130)
   Local $button0 = GUICtrlCreateButton("Encrypt", 10, 10, 100, 50)
   Local $button1 = GUICtrlCreateButton("Decrypt", 10, 70, 100, 50)
   GUISetState(@SW_SHOW, $gui)

   While 1

      If GUIGetMsg() = $button0 Then
         GUISetState(@SW_HIDE, $gui)
         GUIDelete($gui)
         Return 1
      ElseIf GUIGetMsg() = $button1 Then
         GUISetState(@SW_HIDE, $gui)
         GUIDelete($gui)
         Return 2
      ElseIf GUIGetMsg() = $GUI_EVENT_CLOSE Then
         GUISetState(@SW_HIDE, $gui)
         GUIDelete($gui)
         Return 0
      EndIf

   WEnd

The If works as expected, but the two ElseIf don't work at all. No matter how hard or how often I hit that $button1 or click that X in the top-right of the GUI.

Maybe I haven't had enough coffee today, who knows, but I'm stuck right now...

Thanks - complete source-code is attached

_Crypt.au3

Edited by Wicked_Caty
Grammar, spelling, formatting

Share this post


Link to post
Share on other sites
InunoTaishou

I'd suggest organizing your code a bit better and probably not jumping multiple functions that are pretty related (Creating a gui for login then trapping the execution in the login function, then a gui for mode and trapping your execution for mode). Anyways, the solution is to store the GUIGetMsg() in a variable or use it as the expression in a switch statement.

 

Edited by InunoTaishou

Share this post


Link to post
Share on other sites
TheSaint

In other words, you are calling GUIGetMsg() too many times in you While.. loop, and your program would be eating up too much memory, and most likely giving you a timing issue. Inserting a Sleep(50) every loop might help too.

Like Inuno said, use a variable, etc.

While 1
    $msg = GUIGetMsg()
      If $msg = $button0 Then
         GUISetState(@SW_HIDE, $gui)
         GUIDelete($gui)
         Return 1
      ElseIf $msg = $button1 Then
         GUISetState(@SW_HIDE, $gui)
         GUIDelete($gui)
         Return 2
      ElseIf $msg = $GUI_EVENT_CLOSE Then
         GUISetState(@SW_HIDE, $gui)
         GUIDelete($gui)
         Return 0
      EndIf
    ;Sleep(50)
   WEnd

Like he also said though, you would be better off using the traditional Switch method.

Haven't looked at the rest of your code or tried my improvement, but that misuse of memory stood out.


AutoIt.4.Life Clubrooms - Life is like a Donut (secret key)

Make sure brain is in gear before opening mouth!
Remember, what is not said, can be just as important as what is said.

Spoiler

What is the Secret Key? Life is like a Donut

If I put effort into communication, I expect you to read properly & fully, or just not comment.
Ignoring those who try to divert conversation with irrelevancies.
If I'm intent on insulting you or being rude, I will be obvious, not ambiguous about it.
I'm only big and bad, to those who have an over-active imagination.

I may have the Artistic Liesense ;) to disagree with you. TheSaint's Toolbox (be advised many downloads are not working due to ISP screwup with my storage)

userbar.png

Share this post


Link to post
Share on other sites
Wicked_Caty
Quote

I'd suggest organizing your code a bit better and probably not jumping multiple functions that are pretty related (Creating a gui for login then trapping the execution in the login function, then a gui for mode and trapping your execution for mode). Anyways, the solution is to store the GUIGetMsg() in a variable or use it as the expression in a switch statement.

How am I supposed to do that? I don't know the "guildelines" or the "rulebook" :/

Share this post


Link to post
Share on other sites
InunoTaishou

There's no rule book for it, it's just a suggestion. You could do something like this (I didn't do all of it, just the login and crypt gui)

#include <MsgBoxConstants.au3>
#include <GUIConstants.au3>
#include <FileConstants.au3>
#include <StringConstants.au3>
#include <Array.au3>

Global $frmLogin = 1
Global $inpUsername
Global $inpPassword
Global $btnLogin
Global $btnExit
Global $frmCrypt = 1
Global $btnEncrypt
Global $btnDecrypt
Global Const $user = "Caty"
Global Const $pass = 1234

Main()

Func CreateLoginGUI()
    $frmLogin = GUICreate("Crypt", 220, 110)
    $inpUsername = GUICtrlCreateInput("Username:", 10, 10, 200, 20)
    $inpPassword = GUICtrlCreateInput("Password:", 10, 40, 200, 20)
    $btnLogin = GUICtrlCreateButton("Log in", 10, 70, 95, 30)
    $btnExit = GUICtrlCreateButton("Exit", 115, 70, 95, 30)
    GUISetState(@SW_SHOW, $frmLogin)
EndFunc   ;==>Login

Func CreateCryptGUI()
    $frmCrypt = GUICreate("Crypt", 120, 130)
    $btnEncrypt = GUICtrlCreateButton("Encrypt", 10, 10, 100, 50)
    $btnDecrypt = GUICtrlCreateButton("Decrypt", 10, 70, 100, 50)
    GUISetState(@SW_SHOW, $frmCrypt)
EndFunc   ;==>Mode

Func Encryption()

    Local $gui = GUICreate("Crypt", 200, 140)
    Local $ctrl0 = GUICtrlCreateInput("Filename", 10, 10, 180, 30)
    Local $ctrl1 = GUICtrlCreateInput("Text", 10, 50, 180, 30)
    Local $button = GUICtrlCreateButton("Encrypt", 10, 90, 180, 40)
    GUISetBkColor(0xFF8811, $gui)
    GUISetState(@SW_SHOW, $gui)

    While 1

        If GUIGetMsg() = $button Then
            ExitLoop
        Else
            Sleep(25)
        EndIf

    WEnd

    Local $f = FileOpen("D:\documents\coding\Crypt\" & GUICtrlRead($ctrl0), $FO_APPEND)
    Local $text = StringSplit(GUICtrlRead($ctrl1), '', 2)

    Local $len = UBound($text)
    Local $tmp = ""

    FileWrite($f, $len & @CRLF)

    For $i = 0 To $len - 1

        $tmp = ""
        $tmp = AscW($text[$i])
        $tmp = $tmp * 29212
        $tmp = $tmp / 18108
        $tmp = $tmp * 14481
        $tmp = $tmp / 10857
        $tmp = $tmp * 31627
        $tmp = $tmp / 24087
        $tmp = $tmp * 15835
        $tmp = $tmp / 25878
        $tmp = $tmp * 11957
        $tmp = $tmp / 27520
        $tmp = $tmp * 01324

        FileWrite($f, $tmp & @CRLF)

    Next

    GUISetBkColor(0x11FF88, $gui)

    FileClose($f)
    GUISetState(@SW_HIDE, $gui)
    GUIDelete($gui)
    Return True

EndFunc   ;==>Encryption

Func Decryption()

    Local $gui = GUICreate("Crypt", 200, 140)
    Local $ctrl0 = GUICtrlCreateInput("Encrypted", 10, 10, 180, 30)
    Local $ctrl1 = GUICtrlCreateInput("Decrypted", 10, 50, 180, 30)
    Local $button = GUICtrlCreateButton("Decrypt", 10, 90, 180, 40)
    GUISetBkColor(0xFF8811, $gui)
    GUISetState(@SW_SHOW, $gui)

    While 1

        If GUIGetMsg() = $button Then
            ExitLoop
        Else
            Sleep(25)
        EndIf

    WEnd

    Local $fin = FileOpen("D:\documents\coding\Crypt\" & GUICtrlRead($ctrl0), $FO_APPEND)
    Local $len = Number(FileReadLine($fin, 1))
    Local $tmp0, $tmp1, $tmp2

    For $i = 0 To $len - 1

        $tmp0 = ""
        $tmp1 = ""
        $tmp0 = Dec(Number(FileReadLine($fin, $i + 1)))
        $tmp0 = $tmp0 / 01324
        $tmp0 = $tmp0 * 27520
        $tmp0 = $tmp0 / 11957
        $tmp0 = $tmp0 * 25878
        $tmp0 = $tmp0 / 15835
        $tmp0 = $tmp0 * 24087
        $tmp0 = $tmp0 / 31627
        $tmp0 = $tmp0 * 10857
        $tmp0 = $tmp0 / 14481
        $tmp0 = $tmp0 * 18108
        $tmp0 = $tmp0 / 29212
        $tmp0 = ChrW($tmp0)
        $tmp1 = String($tmp1) + String($tmp0)

    Next

    GUISetBkColor(0x11FF88, $gui)

    FileClose($fin)
    Local $fou = FileOpen("D:\documents\coding\Crypt\" & GUICtrlRead($ctrl1), $FO_APPEND)
    FileWrite($fou, $tmp2)
    FileClose($fou)
    GUISetState(@SW_HIDE, $gui)
    GUIDelete($gui)
    Return True

EndFunc   ;==>Decryption

Func Main()
    Local $att = 3
    CreateLoginGUI()

    While (True)
        Local $nMsg = GUIGetMsg(1)
        Switch ($nMsg[1])
            Case $frmLogin
                Switch ($nMsg[0])
                    Case $GUI_EVENT_CLOSE, $btnExit
                        GUIDelete($frmLogin)
                        Exit 0
                    Case $btnLogin
                        If GUICtrlRead($inpUsername) = $user And GUICtrlRead($inpPassword) = $pass Then
                            GUIDelete($frmLogin)
                            CreateCryptGUI()
                        Else
                            If $att = 3 Then
                                GUISetBkColor(0xFF9911, $frmLogin)
                            ElseIf $att = 2 Then
                                GUISetBkColor(0xFF6611, $frmLogin)
                            ElseIf $att = 1 Then
                                GUISetBkColor(0xFF3311, $frmLogin)
                            Else
                                GUIDelete($frmLogin)
                                Exit -1
                            EndIf
                            $att -= 1
                        EndIf
                EndSwitch
            Case $frmCrypt
                Switch ($nMsg[0])
                    case $GUI_EVENT_CLOSE
                        GUIDelete($frmCrypt)
                        Return 0
                    Case $btnEncrypt
                        Encryption()
                    Case $btnDecrypt
                        Decryption()
                EndSwitch
        EndSwitch
    WEnd
EndFunc   ;==>Main

Call a function that creates the corresponding GUI but the execution stays in Main() and using the advanced mode in GUIGetMsg, since we'll be working with multiple GUIs.

If it's too complicated then GUIOnEventMode might be easier.

#include <MsgBoxConstants.au3>
#include <GUIConstants.au3>
#include <FileConstants.au3>
#include <StringConstants.au3>
#include <Array.au3>

Opt("GUIOnEventMode", 1)

Global $frmLogin
Global $inpUsername
Global $inpPassword
Global $btnLogin
Global $btnExit
Global $frmCrypt
Global $btnEncrypt
Global $btnDecrypt
Global Const $user = "Caty"
Global Const $pass = 1234


CreateLoginGUI()

While (True)
    Sleep(100)
WEnd

Func Close()
    If ($frmLogin) Then GUIDelete($frmLogin)
    If ($frmCrypt) Then GUIDelete($frmCrypt)
    Exit 0
EndFunc   ;==>Close

Func btnLogin()
    Local Static $att = 3
    If (GUICtrlRead($inpUsername) = $user And GUICtrlRead($inpPassword) = $pass) Then
        GUIDelete($frmLogin)
        CreateCryptGUI()
    Else
        If $att = 3 Then
            GUISetBkColor(0xFF9911, $frmLogin)
        ElseIf $att = 2 Then
            GUISetBkColor(0xFF6611, $frmLogin)
        ElseIf $att = 1 Then
            GUISetBkColor(0xFF3311, $frmLogin)
        Else
            GUIDelete($frmLogin)
            Exit -1
        EndIf
        $att -= 1
    EndIf
EndFunc   ;==>btnLogin

Func CreateLoginGUI()
    $frmLogin = GUICreate("Crypt", 220, 110)
    $inpUsername = GUICtrlCreateInput("Username:", 10, 10, 200, 20)
    $inpPassword = GUICtrlCreateInput("Password:", 10, 40, 200, 20)
    $btnLogin = GUICtrlCreateButton("Log in", 10, 70, 95, 30)
    $btnExit = GUICtrlCreateButton("Exit", 115, 70, 95, 30)

    GUICtrlSetOnEvent($btnLogin, "btnLogin")
    GUICtrlSetOnEvent($btnExit, "Close")
    GUISetOnEvent($GUI_EVENT_CLOSE, "Close")
    GUISetState(@SW_SHOW, $frmLogin)
EndFunc   ;==>CreateLoginGUI

Func CreateCryptGUI()
    $frmCrypt = GUICreate("Crypt", 120, 130)
    $btnEncrypt = GUICtrlCreateButton("Encryption", 10, 10, 100, 50)
    $btnDecrypt = GUICtrlCreateButton("Decryption", 10, 70, 100, 50)

    GUICtrlSetOnEvent($btnEncrypt, "Encryption")
    GUICtrlSetOnEvent($btnDecrypt, "Decryption")
    GUISetOnEvent($GUI_EVENT_CLOSE, "Close")
    GUISetState(@SW_SHOW, $frmCrypt)
EndFunc   ;==>CreateCryptGUI

Func Encryption()

    Local $gui = GUICreate("Crypt", 200, 140)
    Local $ctrl0 = GUICtrlCreateInput("Filename", 10, 10, 180, 30)
    Local $ctrl1 = GUICtrlCreateInput("Text", 10, 50, 180, 30)
    Local $button = GUICtrlCreateButton("Encrypt", 10, 90, 180, 40)
    GUISetBkColor(0xFF8811, $gui)
    GUISetState(@SW_SHOW, $gui)

    While 1

        If GUIGetMsg() = $button Then
            ExitLoop
        Else
            Sleep(25)
        EndIf

    WEnd

    Local $f = FileOpen("D:\documents\coding\Crypt\" & GUICtrlRead($ctrl0), $FO_APPEND)
    Local $text = StringSplit(GUICtrlRead($ctrl1), '', 2)

    Local $len = UBound($text)
    Local $tmp = ""

    FileWrite($f, $len & @CRLF)

    For $i = 0 To $len - 1

        $tmp = ""
        $tmp = AscW($text[$i])
        $tmp = $tmp * 29212
        $tmp = $tmp / 18108
        $tmp = $tmp * 14481
        $tmp = $tmp / 10857
        $tmp = $tmp * 31627
        $tmp = $tmp / 24087
        $tmp = $tmp * 15835
        $tmp = $tmp / 25878
        $tmp = $tmp * 11957
        $tmp = $tmp / 27520
        $tmp = $tmp * 01324

        FileWrite($f, $tmp & @CRLF)

    Next

    GUISetBkColor(0x11FF88, $gui)

    FileClose($f)
    GUISetState(@SW_HIDE, $gui)
    GUIDelete($gui)
    Return True

EndFunc   ;==>Encryption

Func Decryption()

    Local $gui = GUICreate("Crypt", 200, 140)
    Local $ctrl0 = GUICtrlCreateInput("Encrypted", 10, 10, 180, 30)
    Local $ctrl1 = GUICtrlCreateInput("Decrypted", 10, 50, 180, 30)
    Local $button = GUICtrlCreateButton("Decrypt", 10, 90, 180, 40)
    GUISetBkColor(0xFF8811, $gui)
    GUISetState(@SW_SHOW, $gui)

    While 1

        If GUIGetMsg() = $button Then
            ExitLoop
        Else
            Sleep(25)
        EndIf

    WEnd

    Local $fin = FileOpen("D:\documents\coding\Crypt\" & GUICtrlRead($ctrl0), $FO_APPEND)
    Local $len = Number(FileReadLine($fin, 1))
    Local $tmp0, $tmp1, $tmp2

    For $i = 0 To $len - 1

        $tmp0 = ""
        $tmp1 = ""
        $tmp0 = Dec(Number(FileReadLine($fin, $i + 1)))
        $tmp0 = $tmp0 / 01324
        $tmp0 = $tmp0 * 27520
        $tmp0 = $tmp0 / 11957
        $tmp0 = $tmp0 * 25878
        $tmp0 = $tmp0 / 15835
        $tmp0 = $tmp0 * 24087
        $tmp0 = $tmp0 / 31627
        $tmp0 = $tmp0 * 10857
        $tmp0 = $tmp0 / 14481
        $tmp0 = $tmp0 * 18108
        $tmp0 = $tmp0 / 29212
        $tmp0 = ChrW($tmp0)
        $tmp1 = String($tmp1) + String($tmp0)

    Next

    GUISetBkColor(0x11FF88, $gui)

    FileClose($fin)
    Local $fou = FileOpen("D:\documents\coding\Crypt\" & GUICtrlRead($ctrl1), $FO_APPEND)
    FileWrite($fou, $tmp2)
    FileClose($fou)
    GUISetState(@SW_HIDE, $gui)
    GUIDelete($gui)
    Return True

EndFunc   ;==>Decryption

Main() isn't even needed for this one. We're going to create the login GUI then wait until they click one of the buttons, or close. The corresponding functions for the buttons take care of the sequential order of the script, moving on to the next part.

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

    • Bllee
      By Bllee
      every time i press "delete button" delete a line, but i can't add new line with info. the id line write normally but i can't change or add new info
      obs: looking at the "includes" one realizes that already tried of everything that knew
      my code
      #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <GUIListBox.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <GUIConstantsEx.au3> #include <GuiImageList.au3> #include <GuiListView.au3> #include <GUIConstantsEx.au3> #include <GuiListView.au3> #include <MsgBoxConstants.au3> #include <WinAPI.au3> #include <StringConstants.au3> #include <Array.au3> #include <GuiListBox.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Form1", 612, 480, 192, 154) $MenuItem1 = GUICtrlCreateMenu("&Arquivo") $MenuItem2 = GUICtrlCreateMenuItem("Salvar Ctrl+S", $MenuItem1, $SS_CENTER) $MenuItem4 = GUICtrlCreateMenuItem("Carregar Ctrl+O", $MenuItem1, $SS_CENTER) $MenuItem3 = GUICtrlCreateMenuItem("Salvar Como Shitft+Ctrl+S", $MenuItem1, $SS_CENTER) $Group1 = GUICtrlCreateGroup("", 21, 8, 569, 97, $SS_CENTER) $Input1 = GUICtrlCreateInput("ID COR", 122, 32, 97, 21, $SS_CENTER) $Input2 = GUICtrlCreateInput("REGIÃO", 138, 64, 249, 21, $SS_CENTER) $Input3 = GUICtrlCreateInput("Label", 264, 30, 121, 21, $SS_CENTER) $Label1 = GUICtrlCreateLabel("Label", 232, 32, 30, 17, $SS_CENTER) $Button1 = GUICtrlCreateButton("Capturar Cor", 42, 30, 75, 25, $SS_CENTER) $Button2 = GUICtrlCreateButton("Capturar Região", 42, 62, 91, 25, $SS_CENTER) $Button3 = GUICtrlCreateButton("ADD", 442, 24, 113, 33) $Button5 = GUICtrlCreateButton("Delet", 442, 64, 113, 33) $Group2 = GUICtrlCreateGroup("Editar ID selecionado", 8, 384, 601, 57, $SS_CENTER) $Input7 = GUICtrlCreateInput("ID", 10, 402, 40,21, $SS_CENTER) $Input4 = GUICtrlCreateInput("COR", 51, 402, 121, 21, $SS_CENTER) $Input5 = GUICtrlCreateInput("REGIÃO", 173, 402, 249, 21, $SS_CENTER) $Input6 = GUICtrlCreateInput("LABEL", 423, 402, 121, 21, $SS_CENTER) $Button4 = GUICtrlCreateButton("\/", 544, 400, 30, 25, $SS_CENTER) $Button6 = GUICtrlCreateButton("/\", 574, 400, 30, 25, $SS_CENTER) ; Add column Global $id = Int(0) $List1 = GUICtrlCreateListView("",5, 120, 601, 253, $SS_CENTER) _GUICtrlListView_AddColumn($List1, "ID",40) _GUICtrlListView_AddColumn($List1, "COR",100) _GUICtrlListView_AddColumn($List1, "COORDENADA",305) _GUICtrlListView_AddColumn($List1, "LABEL",150) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $MenuItem2 MsgBox($MB_SYSTEMMODAL, "ctrl + s", "Nothing Here",1) Case $MenuItem3 MsgBox($MB_SYSTEMMODAL, "shift+ctrl s", "Nothing Here",1) Case $MenuItem4 MsgBox($MB_SYSTEMMODAL, "ctrl + o", "Nothing Here",1) Case $Button1 MsgBox($MB_SYSTEMMODAL, "Capturar cor", "Aperte espaço para capturar a cor") GUICtrlSetData($Input1,MouseColor()) Case $Button2 MsgBox($MB_SYSTEMMODAL, "capturar região", "Aperte espaço para capturar a posição inicial") local $mouse = MouseGetPos() $x_init = $mouse[0] $y_init = $mouse[1] MsgBox($MB_SYSTEMMODAL, "capturar região", "Aperte espaço para capturar a posição final") local $mouse = MouseGetPos() $x_end = $mouse[0] $y_end = $mouse[1] GUICtrlSetData($Input2,$x_init&','&$y_init&' ; '&$x_end&','&$y_end) Case $Button3 _GUICtrlListView_AddItem($List1, $id, 1) ; id _GUICtrlListView_AddSubItem($List1, $id, GUICtrlRead($Input1), 1, 1) ;cor _GUICtrlListView_AddSubItem($List1, $id, GUICtrlRead($Input2), 2, 1) ;coordenada _GUICtrlListView_AddSubItem($List1, $id, GUICtrlRead($Input3), 3, 1) ;label $id= $id + 1 Case $Button4 $Item = _GUICtrlListView_GetSelectedIndices($List1) $Sid = _GUICtrlListView_GetItem($List1, Number($Item),0) $Scor = _GUICtrlListView_GetItem($List1, Number($Item),1) $Scord = _GUICtrlListView_GetItem($List1, Number($Item),2) $Slabel = _GUICtrlListView_GetItem($List1, Number($Item),3) ; get info GUICtrlSetData($Input7,$Sid[3]) GUICtrlSetData($Input4,$Scor[3]) GUICtrlSetData($Input5,$Scord[3]) GUICtrlSetData($Input6,$Slabel[3]) Case $Button5 _GUICtrlListView_DeleteItemsSelected($List1) Case $Button6 ; give back inf if GUICtrlRead($Input7) <> "ID" Then _GUICtrlListView_SetItem($List1, GUICtrlRead($Input4), GUICtrlRead($Input7),1) ;cor _GUICtrlListView_SetItem($List1, GUICtrlRead($Input5), GUICtrlRead($Input7),2) ;coordenada _GUICtrlListView_SetItem($List1, GUICtrlRead($Input6), GUICtrlRead($Input7),3) ;coordenada EndIf EndSwitch WEnd Func MouseColor() local $mouse = MouseGetPos() Return Hex(PixelGetColor($mouse[0],$mouse[1]), 6) EndFunc  
    • FrancescoDiMuro
      By FrancescoDiMuro
      Good evening everyone
      First, I want to apologize with you for the title not very clear, but I thought a little bit on which title to set at the thread, and this is the one that came in mind.
      Now, let me explain what I'm trying to understand.

      I am making an application ( with n clients ), with an SQLite Database, which has a Main form, and n sub-forms... 
      Since these sub-forms are called several times, because they are used to add or update records to the Database, I put the code that generates the GUI of these sub-forms in Functions.
      There are two sub-forms which are "treated" as two main forms, since even them have n sub-forms, which perform various tasks.
      Where am I stucked?

      For the Main form I created a Status Bar, in order to display messages ( add/delete/update/search results ), and it works perfectly with all the forms which don't have other sub-forms.
      For the two forms, which indeed have n sub-forms, I created two separated Status Bars, which are (re)created everytime I call the function that then displays the form.
      Practically, I can't set icons to these two Status Bars, and I don't know why.
      I'm really sorry that I don't feel clear enough, so, here you are an example of what I am saying.
      I recreated exactly what my script does:
      #include <GuiButton.au3> #include <GUIConstantsEx.au3> #include <GuiStatusBar.au3> #include <WindowsConstants.au3> Opt("GUIOnEventMode", 1) Global $frmSubForm, _ $txtSubFormField, _ $sbSubFormStatusBar, _ $objSB_IconError = _WinAPI_LoadShell32Icon(109), _ $objSB_IconInformation = _WinAPI_LoadShell32Icon(277) #Region ### START Koda GUI section ### Form= $frmMainForm = GUICreate("Main Form", 300, 300, -1, -1) GUISetOnEvent($GUI_EVENT_CLOSE, "ExitApplication") $sbMainStatusBar = _GUICtrlStatusBar_Create($frmMainForm) $btnCreateSubForm = GUICtrlCreateButton("Create Sub Form", 105, 110, 75, 41, BitOR($BS_CENTER,$BS_VCENTER,$BS_MULTILINE)) GUICtrlSetOnEvent(-1, "GenerateSubForm") GUICtrlSetFont(-1, 10, 400, 0, "Arial") _GUICtrlStatusBar_SetSimple($sbMainStatusBar) _GUICtrlStatusBar_SetText($sbMainStatusBar, "") GUISetState(@SW_SHOW, $frmMainForm) #EndRegion ### END Koda GUI section ### While 1 Sleep(100) WEnd Func ExitApplication() Exit EndFunc Func GenerateSubForm() #Region ### START Koda GUI section ### Form= $frmSubForm = GUICreate("Sub-Form", 300, 300, -1, -1, -1, -1, $frmMainForm) GUISetOnEvent($GUI_EVENT_CLOSE, "DeleteSubForm") $txtSubFormField = GUICtrlCreateInput("", 0, 0, 100, 20) $btnCheckSubFormField = GUICtrlCreateButton("Check Field", 105, 110, 75, 41, BitOR($BS_CENTER,$BS_VCENTER,$BS_MULTILINE)) GUICtrlSetOnEvent(-1, "CheckSubFormField") GUICtrlSetFont(-1, 10, 400, 0, "Arial") $sbSubFormStatusBar = _GUICtrlStatusBar_Create($frmSubForm) _GUICtrlStatusBar_SetSimple($sbSubFormStatusBar) _GUICtrlStatusBar_SetText($sbSubFormStatusBar, "") GUISetState(@SW_SHOW, $frmSubForm) GUISetState(@SW_DISABLE, $frmMainForm) #EndRegion ### END Koda GUI section ### EndFunc Func DeleteSubForm() ; Declared Globally => $frmSubForm GUIDelete($frmSubForm) GUISetState(@SW_ENABLE, $frmMainForm) EndFunc Func WriteToStatusBar($sbStatusBar, $objSB_Icon, $strText) _GUICtrlStatusBar_SetIcon($sbStatusBar, 0, $objSB_Icon) _GUICtrlStatusBar_SetText($sbStatusBar, $strText) ConsoleWrite("Icon Handle: " & $objSB_Icon & @CRLF) EndFunc Func CheckSubFormField() ; Declared Globally => $txtSubFormField If GUICtrlRead($txtSubFormField) = "" Then ; Declared Globally => $sbStatusBar WriteToStatusBar($sbSubFormStatusBar, $objSB_IconError, "Field NOK.") Else WriteToStatusBar($sbSubFormStatusBar, $objSB_IconInformation, "Field OK.") EndIf EndFunc The text is set, but icon is not.
      Could someone please tell me why?
      Thanks everyone in advance  

      Best Regards.
    • Reziskonh
      By Reziskonh
      Hi, everybody
      I look for GUI whose behavior similar to the message of an email client or antivirus
      In other words:
          Any PC screen able to calculate the size
          To consider the Task bar size
          To find the lower corner on the right/below and to nestle on it

      Notes:
      In GUI the GUICtrlCreateEdit field (as option) - that can be received and displayed through variable information
      Thanks a lot
      PS
      I use the translator, excuse if something is not clear
       

    • nacerbaaziz
      By nacerbaaziz
      Hi dear
      I have a request
      I want a simplified example of how to create the toolbar
      With an example of pressing the buttons inside this bar
      for example
      Toolbar contains Three buttons
      open, save, And delete
      and i want  If i press a button from among these buttons a MSGBox appears
      I know this is easy
      But I did not know how to do it
      I hope you help me
      I apologize for the inconvenience
      Thank you in advance
    • VollachR
      By VollachR
      Hi,
      I'd like to show a progress bar for an operation performed by an external program my script is running silently, I want to show it in a GUI I created using the GUICtrlCreateProgress but I have no idea how to do it.
      The important thing to point out is that there's no way of knowing how long the external program will run, as it is a file splitter and it depends on the size of file it splits and the split parts size.
      Can someone point me in the right direction or give me an example how to do so?
      This is my RunWait command:
      RunWait($MYFILES1 & '\fsplit.exe -split ' & $Size & ' mb ' & $File & " -f " & $File & "." & $extension) It uses multiple variables declared and set earlier in the script, how will I got about having the progress of that command shown using GUICtrlCreateProgress ? Is it possible?
      Thank you.
×