Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[54.91.19.62] |
|
Сообщ.
#1
,
|
|
|
Задача - запомнить позицию ScrollBar в RichEdit. При следующем запуске программы - восстановить эту позицию, прокрутив текст в требуемое место.
Предистория: намучавшись с темой, перелопатив кучи msdn EM_, SB_, SBM_ и прочее (в очередной раз возненавидев микрософт за тонны бесполезных подфункций), потом перелопатив интернет, и в частности sources.ru, ответ (нехватало восстановления позиции) был найден на... sources.ru!! в косвенной теме, ветке c++. Дабы следом идущим было проще, вот ответ: Result, ToPos: Cardinal; запомнить позицию: Result:=GetScrollPos(RichEdit.Handle, SB_VERT); восстановить позицию: SendMessage(RichEdit.Handle, WM_VSCROLL, MAKEWPARAM(SB_THUMBPOSITION, ToPos), 0); Как всё просто... P.S. Для полноты раскрытия темы, добавлю, работа с кареткой: - Считать позицию каретки: CarPos:=RichEdit1.CaretPos; //var CarPos:TPoint - Установить позицию каретки: RichEdit.perform(EM_LineIndex,LineNumber,0)+CharNumber; //Эх... - Прокрутить к позиции каретки: RichEdit.Perform(EM_ScrollCaret,0,0); |