iCode Posted December 28, 2013 Posted December 28, 2013 (edited) the concept comes from someone else here, though i forget who (if you, let me know and i'll be glad to give credit) rather than toggling line wrapping on and off in an AutoIt multi-line edit control, which apparently is not doable, this function destroys and recreates the control, preserving various aspects of the original it works by creating the new control with or without a horizontal scroll bar ($WS_HSCROLL) i'm no pro, so critique is welcome expandcollapse popup#include-once #include <WinAPI.au3> #include <GUIEdit.au3> #include <WindowsConstants.au3> ; #FUNCTION# ==================================================================================================================== ; Name ..........: _EditCtrl_ToggleLineWrap ; Version .......; 1.1 (29-Jan-2014) ; Description ...: toggle line wrapping for an AutoIt multi-line edit control ; Syntax ........: _EditCtrl_ToggleLineWrap($hWnd, $iCtrlID[, $iResize = $GUI_DOCKAUTO[, $iChars = 999999[, $sFont = ""[, $hexColor = 0x000000[, $hexBgColor = 0xFFFFFF]]]]]) ; Parameters ....: $hWnd - handle to parent window ; $iCtrlID - edit control ID ; $iResize - [optional] (integer) edit control resizing value for GUICtrlSetResizing() - def=$GUI_DOCKAUTO ; $iChars - [optional] (integer) edit control max chars - def=999999 ; $sFont - [optional] (string) "|" seperated string 4 of parameters for GUICtrlSetFont() (size, weight, attribute, fontname) - def="" ; $hexColor - [optional] (hex) font color - def=0x000000 (black) ; $hexBgColor - [optional] (hex) edit control background color - def=0xFFFFFF (white) ; Return values .: -1 = Error ; : 0 = Wrapping off ; : 1 = Wrapping on ; Author ........: iCode ; Modified ......: 1-JAN-2014 ; Remarks .......: tested with AutoIt 3.3.10.2 ; : it appears that if the edit control is too close to the GUI border, it can be re-created with entirely wrong dimentions ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func _EditCtrl_ToggleLineWrap($hWnd, $iCtrlID, $iResize = 1, $iChars = 999999, $sFont = "", $hexColor = 0x000000, $hexBgColor = 0xFFFFFF) Local $return, $aFont Local $string = GUICtrlRead($iCtrlID) Local $aCtrlPos = ControlGetPos($hWnd, "", $iCtrlID) If @error Or $aCtrlPos[2] < 1 Or $aCtrlPos[3] < 1 Then Return -1 Local $hCtrl = GUICtrlGetHandle($iCtrlID) If $hCtrl = 0 Then Return -1 Local $ctrlStyle = _WinAPI_GetWindowLong($hCtrl, $GWL_STYLE) If @error Then Return -1 Local $ctrlExStyle = _WinAPI_GetWindowLong($hCtrl, $GWL_EXSTYLE) If @error = 10 Then $ctrlExStyle = 0 Local $iMod = _GUICtrlEdit_GetModify($hCtrl) Local $aSel = _GUICtrlEdit_GetSel($hCtrl) Local $iLines = _GUICtrlEdit_GetFirstVisibleLine($hCtrl) GUICtrlDelete($iCtrlID) If BitAND($ctrlStyle, $WS_HSCROLL) Then $iCtrlID = GUICtrlCreateEdit("", $aCtrlPos[0], $aCtrlPos[1], $aCtrlPos[2], $aCtrlPos[3], $ctrlStyle - $WS_HSCROLL, $ctrlExStyle) $return = 1 Else $iCtrlID = GUICtrlCreateEdit("", $aCtrlPos[0], $aCtrlPos[1], $aCtrlPos[2], $aCtrlPos[3], $ctrlStyle + $WS_HSCROLL, $ctrlExStyle) $return = 0 EndIf GUICtrlSetResizing($iCtrlID, $iResize) GUICtrlSetBkColor($iCtrlID, $hexBgColor) GUICtrlSetColor($iCtrlID, $hexColor) If $sFont <> "" Then $aFont = StringSplit($sFont, "|") If $aFont[0] = 4 Then GUICtrlSetFont($iCtrlID, $aFont[1], $aFont[2], $aFont[3], $aFont[4]) EndIf EndIf GUICtrlSetLimit($iCtrlID, $iChars) GUICtrlSetData($iCtrlID, $string) _GUICtrlEdit_LineScroll($iCtrlID, 0, $iLines) _GUICtrlEdit_SetSel($iCtrlID, $aSel[0], $aSel[1]) _GUICtrlEdit_SetModify($iCtrlID, $iMod) Return $return EndFunc CHANGE LOG 29-Jan-2014 * fixed a bug that could cause incorrect extra style to be applied to edit control 1-Jan-2014 * restores the scroll position to the current line number * very minor changes 29-Dec-2013 * swapped the return values - they were backwards 28-Dec-2013 * include Martins suggestion to restore character selection * added check of edit control size to avoid problems if the control is less than 1x1 px Edited January 29, 2014 by iCode FUNCTIONS: WinDock (dock window to screen edge) | EditCtrl_ToggleLineWrap (line/word wrap for AU3 edit control) | SendEX (yet another alternative to Send( ) ) | Spell Checker (Hunspell wrapper) | SentenceCase (capitalize first letter of sentences) CODE SNIPPITS: Dynamic tab width (set tab control width according to window width)
martin Posted December 29, 2013 Posted December 29, 2013 One thing I included which you might want to consider is to allow for some text being selected, and setting where the cursor is when the user switches wrapping. $range = _GUICtrlEdit_GetSel($iCtrlID) ;delete the edit ;create the new edit _GUICtrlEdit_SetSel($iCtrlID, $range[0], $range[1]) Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script.
iCode Posted December 29, 2013 Author Posted December 29, 2013 thank martin! done was it you who i probably scarfed this idea from? FUNCTIONS: WinDock (dock window to screen edge) | EditCtrl_ToggleLineWrap (line/word wrap for AU3 edit control) | SendEX (yet another alternative to Send( ) ) | Spell Checker (Hunspell wrapper) | SentenceCase (capitalize first letter of sentences) CODE SNIPPITS: Dynamic tab width (set tab control width according to window width)
martin Posted December 30, 2013 Posted December 30, 2013 I don't think so because the script here I used the same idea I have never published. Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script.
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