Что нового

[Элементы GUI] Выделение текста в элементе Edit

igorit

Новичок
Сообщения
25
Репутация
0
Всем дообрый день!
Пишу небольшую програмку, которая выводит различные данные в элемент edit Иногда длинна строки получается очень большой, тогда включается скролл.
Часть кода как у меня это реализовано:
Код:
$Edit1 = GUICtrlCreateEdit("", 104, 208, 241, 65, $ES_AUTOVSCROLL + $WS_VSCROLL)
...
GUICtrlSetData($Edit1, $Text)

Подскажите как сделать так, чтобы при щелчке мышки по элементу EDIT в нем выделялся весь текст? Это нужно что бы эго можно было легко скопировать через Ctrl+C.

P.S. прошу прощение если тема дубль, несмотря на любые мои запросы поиск упорно выдает ответ: "Длина слова должна быть хотя бы в два символа".
 

Litoy

Новичок
Сообщения
5
Репутация
1
Почитайте справку по функции _GUICtrlEdit_SetSel, она вам и поможет.
Код:
#include <GuiEdit.au3>
_GUICtrlEdit_SetSel ( $hWnd, $iStart, $iEnd )

Выделить весь текст можно так:
Код:
_GUICtrlEdit_SetSel($Edit1, 0, StringLen(ControlGetText($hGUI, "", $Edit1)))
 
Автор
I

igorit

Новичок
Сообщения
25
Репутация
0
Спасибо большое! Помогло!
Только я весь текст выделял так:
_GUICtrlEdit_SetSel($myedit, 0, -1)
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
igorit [?]
Это нужно что бы эго можно было легко скопировать через Ctrl+C.
Ctrl+A, к примеру, выделяет весь текст. Касательно же дела:

Код:
#Include <WindowsConstants.au3>
#Include <GUIEdit.au3>
#Include <WinAPIEx.au3>

Local $hWnd, $iEdit, $hEdit, $cbWndProc, _
	$g_pOldWndProc
; ---
$hWnd = GUICreate('')
$iEdit = GUICtrlCreateEdit('Example', 5, 5)
$hEdit = GUICtrlGetHandle($iEdit)
GUISetState()

$cbWndProc = DllCallbackRegister("_WndProc", "LRESULT", "HWND;UINT;WPARAM;LPARAM")
$g_pOldWndProc = _WinAPI_SetWindowLong($hEdit, $GWL_WNDPROC, DllCallbackGetPtr($cbWndProc))

While GUIGetMsg() <> -3
	WEnd

; Cleanup
If $g_pOldWndProc Then _
	_WinAPI_SetWindowLong($hEdit, $GWL_WNDPROC, $g_pOldWndProc)
If $cbWndProc Then _
	DllCallbackFree($cbWndProc)


Func _WndProc($hWnd, $iMsg, $wParam, $lParam)
	Switch $iMsg
		Case $WM_LBUTTONUP
			_GUICtrlEdit_SetSel($hWnd, 0, -1)
	EndSwitch
	; ---
	Return _WinAPI_CallWindowProc($g_pOldWndProc, $hWnd, $iMsg, $wParam, $lParam)
EndFunc


Но я настоятельно не рекомендую работать таким образом с элементами под AutoIt'ом.
 
Верх