Jump to content
Sign in to follow this  
NeverDUN

Help with GUI script needed.

Recommended Posts

NeverDUN

Ok so thus far the script does what it's suppose to do.. to a point. 

There are two complications and they are as follows:

  • There is suppose to be ONE GUI that opens up.

When i run the script it opens, but when i close it another identical one opens behind it.

  • When i click save on the first GUI it saves like it's supposed too.

BUT when i close it and reopen it, it's suppose to open with the info that was saved.

I'm no pro coder, maybe it's something very small i'm not getting.

Some help would be highly appreciated.

Yea.. i have it saving alot :3

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <MsgBoxConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <ProgressConstants.au3>
#include <WindowsConstants.au3>


Do
    $pass = InputBox("Enter Password", "Please enter the password", "", "*", 150, 120)
    If $pass <> "Password" Then
    EndIf
    If (@error == 1) Then Exit ;
Until $pass == "123"
MsgBox(0, "Success", "Correct password" & @CRLF & "")

Global $sConfigPath = @ScriptDir & "\Settings.ini"

ProgressOn("Title", "Loading program", "Loading...")

For $i = 0 To 100
    ProgressSet($i)
    Sleep(5)
Next

ProgressSet(50, "Half Way.")
Sleep(250)

ProgressSet(100, "Done!")
Sleep(750)
ProgressOff()

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Title", 610, 477, 206, 143)
$Input1 = GUICtrlCreateInput("Date", 480, 16, 113, 21)
$Input2 = GUICtrlCreateInput("Title", 16, 56, 577, 21)
$Edit1 = GUICtrlCreateEdit("", 16, 80, 577, 329)
$Button1 = GUICtrlCreateButton("Save", 520, 424, 75, 25, $BS_DEFPUSHBUTTON)
$idProgressbar1 = GUICtrlCreateProgress(16, 424, 454, 17)
$StatusBar1 = _GUICtrlStatusBar_Create($Form1)
GUICtrlSetColor(-1, 32250)
GUISetState(@SW_SHOW)

Local $iWait = 20; wait 20ms for next progressstep
Local $iSavPos = 0; progressbar-saveposition

Local $idMsg, $idM
; Loop until the user exits.
Do
    $idMsg = GUIGetMsg()
    If $idMsg = $Button1 Then
        GUICtrlSetData($Button1, "Stop")
        For $i = $iSavPos To 100
            If GUICtrlRead($idProgressbar1) = 50 Then MsgBox($MB_SYSTEMMODAL, "Info", "half is done...", 1)
            $idM = GUIGetMsg()

            If $idM = -3 Then ExitLoop

            If $idM = $Button1 Then
                GUICtrlSetData($Button1, "Next")
                $iSavPos = $i;save the current bar-position to $iSavPos
                ExitLoop
            Else
                $iSavPos = 0
                GUICtrlSetData($idProgressbar1, $i)
                Sleep($iWait)
            EndIf
        Next
        If $i > 100 Then
            ;       $iSavPos=0
            GUICtrlSetData($Button1, "Click")
        EndIf

        If GUICtrlSetData($Button1, "Click") Then
            IniWrite($sConfigPath, "Date", "Input1", GUICtrlRead($Input1))
            IniWrite($sConfigPath, "Title", "Input2", GUICtrlRead($Input2))
            IniWrite($sConfigPath, "Edit", "Edit1", GUICtrlRead($Edit1))
        EndIf

        If IniWrite($sConfigPath, "Edit", "Edit1", GUICtrlRead($Edit1)) Then
            GUICtrlSetData($Button1, "Done")
        EndIf
    EndIf
Until $idMsg = $GUI_EVENT_CLOSE



GUICtrlSetData($Input1, IniRead($sConfigPath, "Date", "Input1", "Date"))
GUICtrlSetData($Input2, IniRead($sConfigPath, "Title", "Input2", "Title"))
GUICtrlSetData($Edit1, IniRead($sConfigPath, "Edit", "Edit1", "Start writing..."))



While 1
    $idMsg = GUIGetMsg()

    Switch $idMsg
        Case $GUI_EVENT_CLOSE
            ; Note: Exit needs to be changed to ExitLoop
            ; for any code after the loop to execute.
            ExitLoop
    EndSwitch

    If $idMsg = $GUI_EVENT_CLOSE Then ExitLoop
    If $idMsg = $Button1 Then SendMyData()
WEnd

Func Button1Click()
    IniWrite($sConfigPath, "Date", "Input1", GUICtrlRead($Input1))
    IniWrite($sConfigPath, "Title", "Input2", GUICtrlRead($Input2))
    IniWrite($sConfigPath, "Edit", "Edit1", GUICtrlRead($Edit1))
EndFunc   ;==>Button1Click

IniWrite($sConfigPath, "Date", "Input1", GUICtrlRead($Input1))
IniWrite($sConfigPath, "Title", "Input2", GUICtrlRead($Input2))
IniWrite($sConfigPath, "Edit", "Edit1", GUICtrlRead($Edit1))

Func SendMyData()
    FileDelete('Settings.ini')
    $data = "[General]" & @CRLF & GUICtrlRead($Input2) & @CRLF & @CRLF & GUICtrlRead($Edit1)
    FileWrite('\Settings.ini', $data)
    MsgBox(0, 'Info', 'Data saved')
EndFunc   ;==>SendMyData
#EndRegion ### END Koda GUI section ###
Edited by NeverDUN

Share this post


Link to post
Share on other sites
abberration

Your program is so simple, progress bars are not necessary. The Do/Until loop is overly complicated. Also, near the end of the program, I see you were deleting the INI file and using FileWrite to write to it. That is very inefficient. I'm posting some simple code that does what you need. Perhaps it can help you see a better way:

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <MsgBoxConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <ProgressConstants.au3>
#include <WindowsConstants.au3>

Do
    $pass = InputBox("Enter Password", "Please enter the password", "", "*", 150, 120)
    If $pass <> "Password" Then
    EndIf
    If (@error == 1) Then Exit ;
Until $pass == "123"
MsgBox(0, "Success", "Correct password" & @CRLF & "")

Global $sConfigPath = @ScriptDir & "\Settings.ini"

$Form1 = GUICreate("Title", 610, 477, 206, 143)
$Input1 = GUICtrlCreateInput("Date", 480, 16, 113, 21)
$Input2 = GUICtrlCreateInput("Title", 16, 56, 577, 21)
$Edit1 = GUICtrlCreateEdit("", 16, 80, 577, 329)
$Button1 = GUICtrlCreateButton("Save", 520, 424, 75, 25, $BS_DEFPUSHBUTTON)
$StatusBar1 = _GUICtrlStatusBar_Create($Form1)
GUICtrlSetColor(-1, 32250)
GUISetState(@SW_SHOW)

$dateRead = IniRead($sConfigPath, "Date", "Input1", "")
$titleRead = IniRead($sConfigPath, "Title", "Input2", "")
$editRead = IniRead($sConfigPath, "Edit", "Edit1", "")
GUICtrlSetData($Input1, $dateRead)
GUICtrlSetData($Input2, $titleRead)
GUICtrlSetData($Edit1, $editRead)

While 1
    $idMsg = GUIGetMsg()
    Switch $idMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            If GUICtrlRead($Button1) = "Save" Then
                IniWrite($sConfigPath, "Date", "Input1", GUICtrlRead($Input1))
                IniWrite($sConfigPath, "Title", "Input2", GUICtrlRead($Input2))
                IniWrite($sConfigPath, "Edit", "Edit1", GUICtrlRead($Edit1))
                GUICtrlSetData($Button1, "Done")
            ElseIf GUICtrlRead($Button1) = "Done" Then
                Exit
            EndIf
    EndSwitch
WEnd
Edited by abberration

RAID Calculator | Software Installer

The truth has been suppressed since the dawn of time.

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
Sign in to follow this  

  • Similar Content

    • Blueman
      By Blueman
      Hey Guys,
      Hope that you can help me with something, maybe this is a bug in the new version of AUTOIT but first i will check it with you to know for sure.
      I have made a simple GUI with a Embedded IE Object, then i would like to read the HTML with _IEBodyReadHTML(), easy right?
      When i use the old IE.au3 include from a year back or so, it is working fine!
      When i use the new IE.au3 include came with the new installation that is currently available on autoitscript.com it isnt working (i get a result that says; 0).
      Let me show you.
       
      Working Example
      #include <GUIConstantsEx.au3> #include <IE_EmbeddedVersioning.au3> #include <IE_PreVersion.au3> ;Older Version Example() Func Example() ; Create a GUI with various controls. Local $hGUI = GUICreate("Example", 1000, 1000) Local $idOK = GUICtrlCreateButton("OK", 310, 370, 85, 25) Global $oIE_1 = _IECreateEmbedded() ; CREATE IE OBJECT(S) GUICtrlCreateObj($oIE_1, 355, 5, 600, 360) _IENavigate($oIE_1, "https://www.google.nl", 1) Local $CheckHTML_T = _IEBodyReadHTML($oIE_1) ; Display the GUI. GUISetState(@SW_SHOW, $hGUI) MsgBox(48,"",$CheckHTML_T) ; Loop until the user exits. While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE, $idOK ExitLoop EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc ;==>Example  
      Failing Example
      #include <GUIConstantsEx.au3> #include <IE_EmbeddedVersioning.au3> #include <IE.au3> ;New Version Example() Func Example() ; Create a GUI with various controls. Local $hGUI = GUICreate("Example", 1000, 1000) Local $idOK = GUICtrlCreateButton("OK", 310, 370, 85, 25) Global $oIE_1 = _IECreateEmbedded() ; CREATE IE OBJECT(S) GUICtrlCreateObj($oIE_1, 355, 5, 600, 360) _IENavigate($oIE_1, "https://www.google.nl", 1) Local $CheckHTML_T = _IEBodyReadHTML($oIE_1) ; Display the GUI. GUISetState(@SW_SHOW, $hGUI) MsgBox(48,"",$CheckHTML_T) ; Loop until the user exits. While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE, $idOK ExitLoop EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete($hGUI) EndFunc ;==>Example  
      I have attachted all files and i am testing on Windows 10 with the latest SciTe Program (Not compiled). 
      When i compile the script it is showing the same result.
      Thanks guys!
      IE_PreVersion.au3
      IE.au3
      IE_EmbeddedVersioning.au3
    • Emmhor1
      By Emmhor1
      Hi All,

      MAIN QUESTION:
      Is it possible to Call specific function within a GUI

      So I have a script with multiple functions although I don't want to use every function every time.
      My Idea is to create a simple GUI which allows me to select what functions I want to use then run the funtions by clicking a button.
      I have already made a GUI which allows me to select specific .exe's I would like to run after selection it runs the .exe one by one.
      This script is on my work laptops and cannot access it right now.
       
      Who can help me with this?
      GUIcreate
      Func1 
      Func2
      Func3
      Then have a boxes which allows me to select the specif Func.(I used GUIChecked and Unchecked in my other script)
      Then a button which executes/calls the selected functions
    • Blois
      By Blois
      Hi Guis,
       
      I need to create keyboard shortcut to navigate the tabs and activate them, but I could not use the code below:
      #include <TabConstants.au3> #include <WindowsConstants.au3> #include <GuiTab.au3> #include <GUIConstantsEx.au3> HotKeySet("^{TAB}", "_TabRight") HotKeySet("^+{TAB}", "_TabLeft") $gui = GUICreate("test",450, 300) $Tab1 = GUICtrlCreateTab(20, 24, 425, 201) $TabSheet1 = GUICtrlCreateTabItem("Tabsheet 1") $lbContagemGrupos2 = GUICtrlCreateLabel("aaaa", 50, 50) GUICtrlSetColor(-1, 0x0000FF) GUICtrlCreateTabItem("") $TabSheet2 = GUICtrlCreateTabItem(" ") $TabSheet3 = GUICtrlCreateTabItem(" ") GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop EndSwitch WEnd Func _TabRight() $CurPos = _GUICtrlTab_GetCurSel($Tab1) _GUICtrlTab_SetCurSel($Tab1, $CurPos + 1) $tab = "$TabSheet" & $CurPos GUICtrlSetState($TabSheet1 + $CurPos, $GUI_SHOW) Return EndFunc Func _TabLeft() $CurPos = _GUICtrlTab_GetCurSel($Tab1) _GUICtrlTab_SetCurSel($Tab1, $CurPos - 1) $tab = "$TabSheet" & $CurPos GUICtrlSetState($TabSheet1 + $CurPos, $GUI_SHOW) Return EndFunc Exit  
      can you help me?
    • smud
      By smud
      Currently, I'm working on a program that will display Dialog boxes with either Yes or No.
      For each dialog, I reward the user with X amount of Credits.
      I'm hoping to output the amount of credits to a cell in a column (there will be 20 different columns).
      It will only post to a row that is equal to today's date (first column). If no row exists yet with the current date, it will start a new row.
      Any suggestions?
      Thank you
×