Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.01.20;
Скачать: CL | DM;

Вниз

Взять Items[i] как из RichEdit RTF-строку   Найти похожие ветки 

 
=BuckLr=   (2007-06-22 13:08) [0]

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


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

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


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


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

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


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

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


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


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

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


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

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


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


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

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


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

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


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

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2008.01.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
15-1197727186
turbouser
2007-12-15 16:59
2008.01.20
Хоккей


15-1197530353
Dennis I. Komarov
2007-12-13 10:19
2008.01.20
Посоветуйте on-line мануальчик для Oracle желательно RU.


2-1197983348
Alex_C
2007-12-18 16:09
2008.01.20
Можно ли узнать, кто использует DLL


2-1198055139
kyn66
2007-12-19 12:05
2008.01.20
ADSQuery1.Requery ???


2-1198404022
Blind Guardian
2007-12-23 13:00
2008.01.20
timer:longint absolute $0000:$046C;