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

Вниз

RichEdit - переместить курсор в последнюю позицию.   Найти похожие ветки 

 
JohnKorsh   (2010-11-02 10:51) [0]

Не поможет ли кто с RichEdit.
Хочу позиционировать курсор на последнее знакоместо последней введённой строки.
Программа заполняет RichEdit по мере надобности.
При запуске программы курсор остаётся в первой позиции первой строки.
Если вручную передвинуть его на последнюю позицию, или просто сдвинуть, то, делее ведёт себя как и
планировалось, т.е. перемещается после каждой записи в RichEdit в конец, прокручивая текст.

Где я ошибся - почему не перемещается в конец текста с самого начала?

// RE_Log - это RichEdit или Memo.

 var
  Vol, i                     : integer;

 begin

// Считаю, сколько всего символов в RichEdit.

  Vol := 0;
  for i := 0 to RE_Log.Lines.Count do
   begin
    Vol := Vol + length (RE_Log.Lines [i]);
   end;

// Двигаю в эту позицию курсор.

   RE_Log.SelStart := Vol;

  end;


 
И. Павел ©   (2010-11-02 11:15) [1]

> Vol := 0;
>  for i := 0 to RE_Log.Lines.Count do
>   begin
>    Vol := Vol + length (RE_Log.Lines [i]);
>   end;


Vol := length(RE_Log.Text)

Если нужно без символов перехода на новую строку, то:

Vol := length(RE_Log.Text) - 2 * (RE_Log.Lines.Count - 1);


 
И. Павел ©   (2010-11-02 11:20) [2]

Точнее так:
Vol := length(RE_Log.Text) - 2 * RE_Log.Lines.Count
if RE_Log.Text[Length(RE_Log.Text) - 1] = chr(13) then Vol := Vol - 2;


 
JohnKorsh   (2010-11-02 11:40) [3]

Спасибо.


 
JohnKorsh   (2010-11-02 12:36) [4]

Я рано обрадовался. Ваш код, конечное быстрее, но эффект сохранился.

Чего хочу - автоматически позиционировать на последнюю строку. И чтобы введённый текст сдвигался по мере накопления.
При запуске этого не происходит. Строки добавляются, уменьшается движок ScrolBar, текст остаётся на месте - видны по-прежнему первые строки.

Если в процессе работы программы вручную с использованием ScrollBar передвинуть позицию так, чтобы была видна последняя строка, то всё работает - по мере добавления строк они прокручиваются, показывая последнюю добавленную.  
RE_Log.SelStart получает значение введённого объема текста в любом случае, но не сдвигает текст.

Как мне грамотно исправить код?


 
И. Павел ©   (2010-11-02 12:48) [5]

Можно слать сообщение:
RE_Log.Perform(EM_LINESCROLL, 0, RE_Log.Lines.Count - 1);


 
JohnKorsh   (2010-11-02 13:33) [6]

Спасибо. Теперь работает так, как хотелось.



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

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

Наверх





Память: 0.46 MB
Время: 0.015 c
3-1250771479
Ламот
2009-08-20 16:31
2011.01.23
select отказывается искать данные в столбце...


2-1288724567
SIV5000
2010-11-02 22:02
2011.01.23
Контекстное меню


15-1286012047
xayam
2010-10-02 13:34
2011.01.23
Проект Россия


2-1288203552
ZV
2010-10-27 22:19
2011.01.23
Как изменить шрифт набираемого кода в Delphi2009


2-1289104970
Zalm
2010-11-07 07:42
2011.01.23
TIdPOP3 & TIdMessage.Flags





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