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

    • 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
    • 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  
×