Форум: "Основная";
Текущий архив: 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