Что нового

[SetData, CtrlEdit] Добавка в CtrlEdit новых данных

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Всем доброго времени суток.
Возникла небольшая проблема с Edit боксом, необходимо добавлять в него новые данные.
Далее опишу суть:
В Edit есть некий текст, необходимо добавить новый не удаляя старый.
1) Если использовать флаг "1" в функции GUICtrlSetData, то данные добавятся в текущее положение курсора, а нужно в самый конец.
2) Если работать по принципу:
Код:
GUICtrlSetData($Edit,GUICtrlRead($Edit) & $Data)

То в этом случае ползунок постоянно перемещается в самый верх, а это крайне неудобно. Edit содержит прилично информации и часто обновляется.

Вывод: Нужно добавить новые данные в самый конец без замены и смещения ползунка вверх(нужно в самый низ).

Заранее спасибо!
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
firex
Код:
_GUICtrlEdit_AppendText
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Код:
ControlFocus($Gui, "", $Edit)
ControlSend($Gui, "", $Edit, "^{END}")
GUICtrlSetData($Edit, $Data, 1)
 

ArtInt

Знающий
Сообщения
135
Репутация
18
InnI
это разве не смещает ползунок?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
firex [?]
этом случае ползунок постоянно перемещается в самый верх
А что мешает использовать в этом случае последний параметр 1?

Код:
#include <GUIConstantsEx.au3>

$hGUI = GUICreate("Test Script", 300, 200)

$iEdit = GUICtrlCreateEdit("First Line" & @CRLF, 20, 40, 260, 120)

GUISetState(@SW_SHOW, $hGUI)

$sData = ""

For $i = 1 To 200
	$sData &= "Line #" & $i & @CRLF
Next

GUICtrlSetData($iEdit, GUICtrlRead($iEdit) & $sData, 1)

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch
WEnd
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
это разве не смещает ползунок?
Смещает. И ползунок полосы прокрутки. И курсор. В самый конец. И добавляет текст.
Нужно добавить новые данные в самый конец без замены и смещения ползунка вверх(нужно в самый низ).

Или вы хотите добавить текст за пределы видимости без смещения курсора и прокрутки?
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Ещё один способ без использования UDF.
Код:
$TextEnd = StringLen(GUICtrlRead($Edit))
GUICtrlSendMsg($Edit, 0xB1, $TextEnd, $TextEnd) ; $EM_SETSEL = 0xB1
GUICtrlSetData($Edit, $Data, 1)
 
Верх