Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2008.01.20;
Скачать: [xml.tar.bz2];

Вниз

Взять 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 вся ветка

Форум: "KOL";
Текущий архив: 2008.01.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.048 c
15-1197268731
venoel
2007-12-10 09:38
2008.01.20
Что делать с ненужными компактами?


15-1197298242
@!!ex
2007-12-10 17:50
2008.01.20
Помогите установить Turbo Delphi


15-1197531643
Alkid
2007-12-13 10:40
2008.01.20
Менеджмент достал.


6-1178938053
mm0
2007-05-12 06:47
2008.01.20
Как узнать все ли данные получены? (Indy)


15-1197504416
No_Dead
2007-12-13 03:06
2008.01.20
А работает ли математика?:) (в частности ИО)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский