Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Взять Items[i] как из RichEdit RTF-строку


=BuckLr= ©   (2007-06-22 13:08:00) 

Задача - взять целую строку из RichEdit в формате Rich Text, но НЕ используя выделение при помощи SelStart-SelLength + RE_Text[reRTF, True] и иже с ними...
Что подскажете? Может, есть какие-то АПИ для этого?


Vladimir Kladov   (2007-06-23 11:29:00) [1]

Вот, нашел: EM_GETSCROLLPOS and EM_SETSCROLLPOS. Начиная с RichEdit3.0 вроде бы. Сейчас попробую с ними.


Vladimir Kladov   (2007-06-23 11:23:00) [2]

Я попробовал сделать тройку методов. Сейчас положу, посмотрите. В richedit после скролла вертикального (за тумбу на скролле мышкой) верхняя строка может отображаться частично. Восстановление приводит к небольшому спрыгу, чтобы показывалась целая (следующая) строка. Кроме того, в RichEdit не удается восстановить горизонтальную позицию скролла, в нем EM_LINESCROLL не работает для горизонтальной прокрутки. И ничего вообще нет для горизонтальной прокуртки, кроме EM_SCROLLCARET, а это все равно прыг. Попытка обратиться к непосредственно прокруткам контрола для RichEdit тоже ничего не дает: прокрутки позицию меняют, но это не влияет на сам RichEdit.


=BuckLr=   (2007-06-23 10:23:00) [3]


> Да, действительно ускакивает куда попало

:) а я думал, что от моих манипуляций (у меня там курсор по всму экрану ездит) :)


>  по окончании операции целый цикл организовывать, чтобы
> вернуть изображение туда же

А по-моему, проще будет поставить туда курсор и что-то типа EM_SCROLLCARET. Или SetScrollPos, только я не знаю, как оно работает, не сталкивался.


Vladimir Kladov   (2007-06-23 09:15:00) [4]

Да, действительно ускакивает куда попало. Чтобы восстановить хотя бы приблизительно в ту же позицию, надо EM_CHARFROMPOS, 0, 0 - запомнить позицию символа, ближайшего к верхнему левому углу, а по окончании операции целый цикл организовывать, чтобы вернуть изображение туда же.


=BuckLr=   (2007-06-22 22:50:00) [5]


> Вроде не должен уходить, с чего бы это

с того, что мне приходится менять положение каретки - при таком подходе это обязательно. Ну да ладно, проблему решим.


Vladimir Kladov   (2007-06-22 20:41:00) [6]

Вроде не должен уходить, с чего бы это. Если не использовать EM_SCROLL, EM_SCROLLCARET, то не должен только при изменении выделения.


=BuckLr=   (2007-06-22 20:36:00) [7]


> никто ничего и не заметит

да, я так и делаю. Правда, скроллинг всё равно уходит не туда, где был, но это мелочь... В общем, думал, что есть какой-то магический способ :)


Vladimir Kladov   (2007-06-22 17:22:00) [8]

Нет, выделение это и есть стандартный способ. Если выделение устанавливать временно, а затем восстанавливать, то никто ничего и не заметит. На случай длинных операций есть beginupdate/endupdate.


Наверх

Титульная страница Поиск, карта сайта Написать письмо