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

Вниз

Автоматическая прокрутка в TRichEdit глючит с RTF   Найти похожие ветки 

 
SuperVK   (2002-11-11 12:17) [0]

У меня есть TRichEdit со скроллбарами. Хочу прокрутить TRichEdit
немного вниз и вправо. Для этого делаю следующее:


var
ScrollMessage:TWMVScroll;
begin
ScrollMessage.Msg:=WM_VSCROLL;
ScrollMessage.ScrollCode:=SB_LINEDOWN;
Editor.Dispatch(ScrollMessage);

ScrollMessage.Msg:=WM_HSCROLL;
ScrollMessage.ScrollCode:=SB_LINEDOWN;
Editor.Dispatch(ScrollMessage);


Так вот после первых трех строк процедуры контрол действительно смещается вниз, но при выполнении следующих стрёх возвращается на исходную позицию (т.е. поднимается наверх) и лишь затем смещается вправо.

Если же первые три строки повторить два раза:


var
ScrollMessage:TWMVScroll;
begin
ScrollMessage.Msg:=WM_VSCROLL;
ScrollMessage.ScrollCode:=SB_LINEDOWN;
Editor.Dispatch(ScrollMessage);

ScrollMessage.Msg:=WM_VSCROLL;
ScrollMessage.ScrollCode:=SB_LINEDOWN;
Editor.Dispatch(ScrollMessage);

ScrollMessage.Msg:=WM_HSCROLL;
ScrollMessage.ScrollCode:=SB_LINEDOWN;
Editor.Dispatch(ScrollMessage);


,то смещается как надо. Как устранить то что после смещения вниз, а затем вправо отменяется перемещение вниз.
Может я чего-нибудь не так делаю?

Особенно занимательно то, что у меня это проявляется только с текстами, содержащими RTF, а с теми, которые содержат неформатированный текст этого не происходит, т.е. всё работает правильно.


 
Song   (2002-11-11 13:13) [1]

Я думаю, что скролин срабатывает от текущей позиции курсорва. В первом примере Вы просто передвинули скролы, а курсор-то остался на своём месте. Поэтому возможно во втором случае, он сначала возращается к первоначальной позиции.
К тому же с multi-edit контролами лучше работать через EM сообщения.


 
SuperVK   (2002-11-15 12:20) [2]

По поводу EM_* сообщений:
Пробовал через EM_SCROLL - не помогло. И вообще в MSDN по поводу EM_SCROLL сказано "This message is equivalent to sending a WM_VSCROLL message to the edit control". И разве можно с помощью EM_* сделать скроллинг по горизонтали?

По поводу скролла:
Я перед прокруткой устанавливал курсор в любую позицию, например в середину текста, это не дало результата. И вообще как-то странно себя ведёт прокрутка, после первого сообщения EM_SCROLL он (RichEdit) прокручивается на строку, после второго на чуть-чуть (ощущение, что на межстрочное расстояние и, видимо, поэтому при сдвиге вправо возвращается на строку вверх). Иногда работает как положено - сразу переходит на следующую строку, пропуская межстрочное расстояние.

PS: Намучался я с этими скроллами, может посоветуешь, как можно попробовать организовать такую штуку: два TRichEdit"а содержащие один и тот же текст располагаются так: один выглядывает из под другого, причем один может прокручиваться вверх, вниз, влево и вправо, а другой только вверх и вниз и надо чтобы по вертикали они перемещались синхронно, т.е. если один поехал вверх, то и другой тоже.
Если делать как я пытаюсь: посылать одинаковые сообщения для вертикальной прокрутки, то после прокрутки вниз, а затем вправо второго RichEdit, он смещается только вправо, а первый смещается вниз и у них получается разный сдвиг по вертикали...



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

Форум: "Основная";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
7-83013
Lendl
2002-09-25 12:48
2002.11.25
Работа с USB


3-82580
mvg_first
2002-11-06 17:18
2002.11.25
Отражение объетов на реляционную БД. Подходы? Способы?


14-83005
Красная Майка
2002-10-18 13:57
2002.11.25
Встреча мастаков в Московии.


1-82842
mvg_first
2002-11-13 20:22
2002.11.25
Помогите создать TDataSetProvider в рантайме


8-82880
ACR
2002-08-03 23:45
2002.11.25
Streming Video





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский