fopetesl Posted April 24, 2017 Posted April 24, 2017 (edited) One statement of GUICtrlRead() fails. Result is always "Long/Short" in written file. The other GUICtrlRead() calls work as expected expandcollapse popupFunc GetScanSettings() ; Read User Input for scan Local $collectusername, $collectlot, $collectsample $UserFile = "Sample.dat" ; Global $UserFile = save this scan's parameters $datafile = FileOpen($UserFile) If( $datafile <> -1) Then $collectusername = FileReadLine($datafile, 1) EndIf FileClose($datafile) ; now open a new 'clean' file.. $datafile = FileOpen($UserFile,$FO_OVERWRITE ) ;Create GUI $Main = GUICreate('Enter Sample Detail', 500, 500) Opt("GUICoordMode",1) If( $collectusername <> "") Then $username = GUICtrlCreateInput($collectusername,100,20,100,20) Else $username = GUICtrlCreateInput('',100,20,100,20) EndIf $usernamelabel = GUICtrlCreateLabel('Username',30,22) $FileName = GUICtrlCreateInput("",100,45,100,0) $FileNamelabel = GUICtrlCreateLabel('File Name',30,47) $BatchNum = GUICtrlCreateInput("",100,65,100,0) $BatchNumlabel = GUICtrlCreateLabel('Lot',30,72) $SampleNum = GUICtrlCreateInput("",100,85,100,0) $SampleNumlabel = GUICtrlCreateLabel('Sample',30,97) $SampleLS = GUICtrlCreateInput("",100,105,100,0) $SampleNumLS = GUICtrlCreateLabel('Long/Short',30,117) $Button_1 = GUICtrlCreateButton ("OK", 190, 170, 0, 0, 0x0001) GUISetState (); Run the GUI until the dialog is closed While 1 $msg = GUIGetMsg() ; complete data entries Select Case $msg = $Button_1 $collectusername = GUICtrlRead($username) WinSetState('Collect Username','',@SW_HIDE) $collectfilename = GUICtrlRead($FileName) $collectlot = GUICtrlRead($BatchNum) $collectsample = GUICtrlRead($SampleNum) $collectLS = GUICtrlRead($SampleNumLS) ; Do ; $collectLS = GUICtrlRead($SampleNumLS) ; If $collectLS <> 'Long' And $collectLS <> 'Short' Then ; Soundplay("Windows XP Error.wav", 1) ; $collectLS = "" ; EndIf ; Until $collectLS = 'Long' Or $collectLS = 'Short' ExitLoop EndSelect Wend GUIDelete($Main) FileWrite($datafile,$collectusername & @CRLF & $collectfilename & @CRLF & $collectlot _ & @CRLF & $collectsample & @CRLF & 'Long' & @CRLF ) ; $collectLS & @CRLF) FileClose($datafile) EndFunc ;<=== GetScanSettings ================== I also tried to force user to enter either 'Short' or 'Long' but I got that wrong also The final FileWrite() edited so I do have a correct result. sample.dat Pete FilenamePete Num1 Samp2 Long/Short Edited April 24, 2017 by fopetesl Typo! The most powerful number in the Universe. Zero.
fopetesl Posted April 24, 2017 Author Posted April 24, 2017 4 minutes ago, Subz said: Your reading the label not the input. Oops! Thanks. Now how do I force user to enter either Short or Long? The most powerful number in the Universe. Zero.
fopetesl Posted April 24, 2017 Author Posted April 24, 2017 2 minutes ago, LerN said: $collectLS = GUICtrlRead($SampleLS) Yeah. Works. A lesson in being more careful in naming variables! Now. Forcing user input? The most powerful number in the Universe. Zero.
Subz Posted April 24, 2017 Posted April 24, 2017 Couple of ways, you could use a Radio or ComboBox as a control, which makes the user select Long or Short. Also after the $collectLS = GuiCtrlRead($SampleLS) you can use something like: $collectLS = GUICtrlRead($SampleLS) Switch $collectLS Case "Long" Case "Short" Case Else MsgBox(0, "Selection", "Please Select Long/Short") ContinueLoop EndSwitch fopetesl 1
fopetesl Posted April 24, 2017 Author Posted April 24, 2017 Something new every day. 'ContinueLoop' Magic Works like a charm. The most powerful number in the Universe. Zero.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now