Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Как прокрутить TRichEdit в конец

Delphi , Компоненты и Классы , TMemo и TRichEdit

Как прокрутить TRichEdit в конец

Существует множество способов, включая и:


with MainFrm.RichEdit1 do
begin
  perform (WM_VSCROLL, SB_BOTTOM, 0);
  perform (WM_VSCROLL, SB_PAGEUP, 0);
end;

Вышеприведённый пример работает отлично в 9x и NT4, но не работает в Windows 2000. Поэетому предлагаю воспользоваться следующим примером:


with MainFrm.RichEdit1 do 
begin 
  SelStart := Length(Text);
  Perform(EM_SCROLLCARET, 0, 0);
end;

или


SendMessage(RichEdit1.Handle, EM_SCROLL, SB_LINEDOWN, 0); 

Here's the translation of the content into Russian:

Задача - прокрутить контролл TRichEdit до конца его содержимого.

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

  1. Использование сообщений Windows:
with MainFrm.RichEdit1 do
begin
  perform(WM_VSCROLL, SB_BOTTOM, 0);
  perform(WM_VSCROLL, SB_PAGEUP, 0);
end;

Этот подход использует сообщение WM_VSCROLL для прокрутки контрола до конца. Параметр SB_BOTTOM specifies, что мы хотим прокрутить до конца контрола. Второй вызов perform не необходим и может вызвать проблемы в некоторых версиях Windows.

Проблема: Это код работает хорошо в Windows 9x и NT4, но fails в Windows 2000, как вы упомянули.

  1. Использование свойства SelStart:
with MainFrm.RichEdit1 do
begin
  SelStart := Length(Text);
  Perform(EM_SCROLLCARET, 0, 0);
end;

Этот подход устанавливает позицию начала выделения в конце текста с помощью SelStart. Затем он использует сообщение EM_SCROLLCARET для прокрутки контрола до курсора (т.е., вставки). Вызов Perform обеспечивает обновление контрола соответственно.

Преимущество: Этот метод работает в всех версиях Windows и не требует дополнительных сообщений.

  1. Использование функции SendMessage:
SendMessage(RichEdit1.Handle, EM_SCROLL, SB_LINEDOWN, 0);

Этот подход использует функцию SendMessage для отправки сообщения WM_EM_SCROLL контролу с параметром SB_LINEDOWN, который прокручивает контрол вниз на одну строку.

Преимущество: Этот метод прям и легко использовать, но может не работать, если контрол имеет конкретный фокус или выделение.

Все три подхода должны прокрутить контрол TRichEdit до конца его содержимого. Второй подход с использованием SelStart и EM_SCROLLCARET является вероятно наиболее надежным и эффективным методом, так как он работает в всех версиях Windows без требования дополнительных сообщений.

Как прокрутить TRichEdit в конец - статья предлагает несколько способов прокрутки Rich Edit controls до конца, включая использование WM_VSCROLL, SelStart и SendMessage.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: TMemo и TRichEdit ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-05-19 17:53:24
2024-05-19 18:51:27/0.004741907119751/2