dreamzboy Posted November 5, 2013 Posted November 5, 2013 (edited) I have a list box control that allows me to see the output as the script runs. Since I control those outputs, I want the message to display neatly inside the list box without scrolling all the way to the right to read the text. I don't need anything fancy that calculates the length as I can just send a message from a new line. Sound simple enough but I'm having trouble getting the function to issue @CRLF and indent properly. I've already read through >this thread but it's not what I was looking for. This line did not enter a new line. GUICtrlSetData ($log_label, @HOUR & ":" & @MIN & ":" & @SEC & " Error - One or more fields doesn't match!" & @CRLF & " Remove white space and/or extra entry before trying again." & @CRLF) While this line only gave me 1 tab. GUICtrlSetData ($log_label, @TAB & @TAB & @TAB & " Remove white space and/or extra entry before trying again." & @CRLF) Also tried the below but no help either. It complained about the $aTabs. I declared $aTabs[1] = [100] at the top (commented out) when trying this method. GUICtrlSetData ($log_label, @HOUR & ":" & @MIN & ":" & @SEC & " Error - One or more fields doesn't match!" & @CRLF) _GUICtrlListBox_SetTabStops ($log_label, $aTabs) _GUICtrlListBox_AddString ($log_label, @TAB & " Remove white space and/or extra entry before trying again." & @CRLF) Here's my code. All you have to do is click on the "Generate" button and you'll see what I mean. expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <StaticConstants.au3> #include <ButtonConstants.au3> #include <GuiListBox.au3> #include <array.au3> #include <constants.au3> Opt ("TrayIconDebug", 1) Local $ribcl_temp = '', $xml_temp, $i, $j Local $hn_input, $ip_input, $pw_input Local $host_Count, $ip_Count, $pw_Count Local $msg, $success, $password, $hostname, $ip_address Local $log_label, $generate_btn, $clrLog_btn Local $test_str0 = "dl360g7-25" & @CRLF & "dl360g7-26" Local $test_str1 = "10.112.15.22" & @CRLF & "10.112.15.23" & @CRLF & "10.112.15.24" Local $test_str2 = "pass1" & @CRLF & "pass2" & @CRLF & "pass3" ;Local $aTabs[1] = [100] GUICreate ("Test", 600, 450) GUICtrlCreateLabel ("1. Enter hostname (ex: dl360g7-25):", 30, 70, 250, 20) GUICtrlSetFont (-1, 10) $hn_input = GUICtrlCreateEdit ("", 30, 90, 215, 70) GUICtrlSetData ($hn_input, $test_str0) GUICtrlCreateLabel ("2. Enter iLO static IP address:", 30, 180, 250, 20) GUICtrlSetFont (-1, 10) $ip_input = GUICtrlCreateEdit ("", 30, 200, 215, 70) GUICtrlSetData ($ip_input, $test_str1) GUICtrlCreateLabel ("3. Enter iLO default password:", 30, 290, 200, 20) GUICtrlSetFont (-1, 10) $pw_input = GUICtrlCreateEdit ("", 30, 310, 215, 70) GUICtrlSetData ($pw_input, $test_str2) $log_label = GUICtrlCreateList ("", 300, 90, 270, 292, BitOR($WS_BORDER, $WS_VSCROLL, $WS_HSCROLL)) $generate_btn = GUICtrlCreateButton ("Generate XML File", 55, 400, 150, 30) GUICtrlSetFont (-1, 10) GUICtrlCreateLabel ("version 2.0", 530, 425, 70) GUICtrlSetColor (-1, 0x0000cd) $clrLog_btn = GUICtrlCreateButton ("Clear Log", 385, 400, 100, 30) GUICtrlSetFont (-1, 10) GUISetState () Do $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE Exit Case $msg = $generate_btn ; Check entry simliarity on all fields $hostname = StringSplit (GUICtrlRead ($hn_input), @CRLF, 3) ;MsgBox (0, "Before", $hostname) $hostname = StringStripWS ($hostname, 3) ;MsgBox (0, "After", $hostname) $host_Count = UBound ($hostname) $ip_address = StringSplit (GUICtrlRead ($ip_input), @CRLF, 3) $ip_Count = UBound ($ip_address) $password = StringSplit (GUICtrlRead ($pw_input), @CRLF, 3) $pw_Count = UBound ($password) If ($host_Count = $ip_Count And $ip_Count = $pw_Count And $host_Count = $pw_Count) Then ;Msgbox($mb_ok,'TRUE', $ip_Count & @crlf & $host_Count & @crlf & $pw_Count) GUICtrlSetData ($log_label, @HOUR & ":" & @MIN & ":" & @SEC & " It works!") For $i = 0 To $host_Count - 1 ;MsgBox (0, "", $hostname[$i] GUICtrlSetData ($log_label, @HOUR & ":" & @MIN & ":" & @SEC & " " & $hostname[$i] & @CRLF) GUICtrlSetData ($log_label, @HOUR & ":" & @MIN & ":" & @SEC & " " & $ip_address[$i] & @CRLF) GUICtrlSetData ($log_label, @HOUR & ":" & @MIN & ":" & @SEC & " " & $password[$i] & @CRLF) Next Else ;Msgbox($mb_ok,'FALSE', $ip_Count & @crlf & $host_Count & @crlf & $pw_Count) GUICtrlSetData ($log_label, @HOUR & ":" & @MIN & ":" & @SEC & " Error - One or more fields doesn't match!" & @CRLF & " Remove white space and/or extra entry before trying again." & @CRLF) GUICtrlSetData ($log_label, @TAB & @TAB & @TAB & " Remove white space and/or extra entry before trying again." & @CRLF) Endif #cs Else GUICtrlSetData ($log_label, @HOUR & ":" & @MIN & ":" & @SEC & " Error - One or more fields doesn't match!") MsgBox (48, "Error", "One or more fields does not match! Please check the entries and try again.") EndIf #ce _GUICtrlListBox_UpdateHScroll ($log_label) Sleep (1000) Case $msg = $clrLog_btn GUICtrlSetData ($log_label, "") ; Clear log file EndSelect Until 0 Cheers, Dreamzboy Edited November 5, 2013 by dreamzboy
Moderators Melba23 Posted November 5, 2013 Moderators Posted November 5, 2013 dreamzboy,Listbox is a single line control - you need to use an Edit control if you want multiple line entries. And if a line is too long for the control you need scrollbars to see it. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
dreamzboy Posted November 5, 2013 Author Posted November 5, 2013 (edited) Doh! If you can elaborate on how to use these 2 codes, it would do what I need. I'm mainly interested in getting the tab to work. I can manually enter a new line by coding another "_GuiCtrlListBox_AddString" or "GuiCtrlSetData". From the GUICtrlListBox example, the columns are evenly distributed by the tab stop. I'd like to set up that tab stop. Edit: I already have my horizontal and vertical scroll in place and that is working. _GUICtrlListBox_SetTabStops ($log_label, $aTabs) _GUICtrlListBox_AddString ($log_label, @TAB & " Remove white space and/or extra entry before trying again." & @CRLF) Edited November 5, 2013 by dreamzboy
dreamzboy Posted November 5, 2013 Author Posted November 5, 2013 (edited) I somewhat figured it out. I need to declare 4 elements array to be used with _GUICtrlListBox_SetTabStops; however, when that function is called, it looks like this: Local $aTabs[4] = [3, 30, 0, 0] _GUICtrlListBox_SetTabStops ($log_label, $aTabs) _GUICtrlListBox_AddString ($log_label, @HOUR & ":" & @MIN & ":" & @SEC & " Error - One or more fields doesn't match!") _GUICtrlListBox_AddString ($log_label, @TAB & " Remove white space and/or extra entry before trying again.") - Output - Remove white space and/or extra entry before trying again. 12:16:52 Error - One or more fields doesn't match! I wonder why the order flipped? Edited November 5, 2013 by dreamzboy
Solution dreamzboy Posted November 5, 2013 Author Solution Posted November 5, 2013 (edited) Figured it out. Here's a working code in case anyone need to refer to it in the future. expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <StaticConstants.au3> #include <ButtonConstants.au3> #include <GuiListBox.au3> #include <array.au3> #include <constants.au3> Opt ("TrayIconDebug", 1) Local $ribcl_temp = '', $xml_temp, $i, $j Local $hn_input, $ip_input, $pw_input Local $host_Count, $ip_Count, $pw_Count Local $msg, $success, $password, $hostname, $ip_address Local $log_label, $generate_btn, $clrLog_btn Local $test_str0 = "dl360g7-25" & @CRLF & "dl360g7-26" & @CRLF & "dl360g7-27" Local $test_str1 = "10.112.15.22" & @CRLF & "10.112.15.23" & @CRLF & "10.112.15.24" Local $test_str2 = "pass1" & @CRLF & "pass2" & @CRLF & "pass3" Local $aTabs[4] = [3, 29, 0, 0] ; Define your tab stop GUICreate ("Test", 600, 450) GUICtrlCreateLabel ("1. Enter hostname (ex: dl360g7-25):", 30, 70, 250, 20) GUICtrlSetFont (-1, 10) $hn_input = GUICtrlCreateEdit ("", 30, 90, 215, 70) GUICtrlSetData ($hn_input, $test_str0) GUICtrlCreateLabel ("2. Enter iLO static IP address:", 30, 180, 250, 20) GUICtrlSetFont (-1, 10) $ip_input = GUICtrlCreateEdit ("", 30, 200, 215, 70) GUICtrlSetData ($ip_input, $test_str1) GUICtrlCreateLabel ("3. Enter iLO default password:", 30, 290, 200, 20) GUICtrlSetFont (-1, 10) $pw_input = GUICtrlCreateEdit ("", 30, 310, 215, 70) GUICtrlSetData ($pw_input, $test_str2) $log_label = GUICtrlCreateList ("", 300, 90, 270, 292, BitOR($WS_BORDER, $WS_VSCROLL, $WS_HSCROLL, $LBS_USETABSTOPS)) ; Add option $LBS_USETABSTOPS to enable tab stop $generate_btn = GUICtrlCreateButton ("Generate XML File", 55, 400, 150, 30) GUICtrlSetFont (-1, 10) GUICtrlCreateLabel ("version 2.0", 530, 425, 70) GUICtrlSetColor (-1, 0x0000cd) $clrLog_btn = GUICtrlCreateButton ("Clear Log", 385, 400, 100, 30) GUICtrlSetFont (-1, 10) GUISetState () Do $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE Exit Case $msg = $generate_btn ; Check entry simliarity on all fields $hostname = StringSplit (GUICtrlRead ($hn_input), @CRLF, 3) $host_Count = UBound ($hostname) ; MsgBox (0, "", $host_Count) $ip_address = StringSplit (GUICtrlRead ($ip_input), @CRLF, 3) $ip_Count = UBound ($ip_address) ; MsgBox (0, "", $ip_Count) $password = StringSplit (GUICtrlRead ($pw_input), @CRLF, 3) $pw_Count = UBound ($password) ; MsgBox (0, "", $pw_Count) If ($host_Count = $ip_Count And $ip_Count = $pw_Count And $host_Count = $pw_Count) Then ;Msgbox($mb_ok,'TRUE', $ip_Count & @crlf & $host_Count & @crlf & $pw_Count) GUICtrlSetData ($log_label, @HOUR & ":" & @MIN & ":" & @SEC & " It works!") For $i = 0 To $host_Count - 1 ;MsgBox (0, "", $hostname[$i] GUICtrlSetData ($log_label, @HOUR & ":" & @MIN & ":" & @SEC & " " & $hostname[$i] & @CRLF) GUICtrlSetData ($log_label, @HOUR & ":" & @MIN & ":" & @SEC & " " & $ip_address[$i] & @CRLF) GUICtrlSetData ($log_label, @HOUR & ":" & @MIN & ":" & @SEC & " " & $password[$i] & @CRLF) Next Else ;Msgbox($mb_ok,'FALSE', $ip_Count & @crlf & $host_Count & @crlf & $pw_Count) ;_GUICtrlListBox_SetTabStops ($log_label, $aTabs) GUICtrlSetData ($log_label, @HOUR & ":" & @MIN & ":" & @SEC & " Error - One or more fields doesn't match!" & @CRLF) _GUICtrlListBox_SetTabStops ($log_label, $aTabs) _GUICtrlListBox_AddString ($log_label, @TAB & " Remove white space and/or extra entry ") _GUICtrlListBox_AddString ($log_label, @TAB & " before trying again.") ;GUICtrlSetData ($log_label, @TAB & " Remove white space and/or extra entry before trying again." & @CRLF) Endif _GUICtrlListBox_UpdateHScroll ($log_label) Sleep (1000) Case $msg = $clrLog_btn GUICtrlSetData ($log_label, "") ; Clear log file EndSelect Until 0 Edited November 5, 2013 by dreamzboy
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