Что нового

Обновление элемента с уходом в начало

_Lexa98_

Осваивающий
Сообщения
551
Репутация
25
Есть код:
Код:
GuiCreate("Test", 100, 100)
$Edit = GuiCtrlCreateEdit(@CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF, 0, 0, 100, 100)
GUISetState(@SW_SHOW)
While 1
GuiCtrlSetData($Edit, @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF)
Sleep(5000)
WEnd

И так в этом коде каждый раз при обновлении edit, полоса прокрутки переезжает в начало. Как сделать так, чтобы при обновлении edit, полоса прокрутки оставалась на том же месте, на котором она была до обновления?


Добавлено:
Сообщение автоматически объединено:

Такое возможно?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Код:
#include <GUIConstantsEx.au3>
#include <ScrollBarConstants.au3>
#include <WindowsConstants.au3>

$hGUI = GUICreate("Test", 300, 200)
GUISetState(@SW_SHOW, $hGUI)

$iEdit = GUICtrlCreateEdit(@CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF, 0, 0, 200, 100)
$hEdit = GUICtrlGetHandle(-1)

$iAdd_Button = GUICtrlCreateButton('Add data', 20, 120)

While 1
	$nMsg = GUIGetMsg()

	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $iAdd_Button
			$aScrollVPos = DllCall("user32.dll", "int", "GetScrollPos", "hwnd", $hEdit, "int", $SB_VERT)
			
			GUICtrlSetData($iEdit, @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF)
			
			For $i = 1 To $aScrollVPos[0]
				GUICtrlSendMsg($iEdit, $WM_VSCROLL, $SB_LINEDOWN, 0)
			Next
	EndSwitch
WEnd


Как то так.
 
Автор
_Lexa98_

_Lexa98_

Осваивающий
Сообщения
551
Репутация
25
CreatoR
Спасибо.
А вариант только один? (А то не очень когда дёргается)
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
_Lexa98_ [?]
А вариант только один?
Можно ещё так:
Код:
#include <GUIConstantsEx.au3>
#include <GUIEdit.au3>
#include <WindowsConstants.au3>

$hGUI = GUICreate("Test", 300, 200)
GUISetState(@SW_SHOW, $hGUI)

$iEdit = GUICtrlCreateEdit(@CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & 'test', 0, 0, 200, 100)
$hEdit = GUICtrlGetHandle(-1)

$iAdd_Button = GUICtrlCreateButton('Add data', 20, 120)

While 1
    $nMsg = GUIGetMsg()

    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $iAdd_Button
			$iLine =  _GUICtrlEdit_GetFirstVisibleLine($hEdit)
			_GUICtrlEdit_SetText($hEdit, @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & 'test')
			_GUICtrlEdit_LineScroll($hEdit, 0, $iLine)
    EndSwitch
WEnd
 
Верх