Главная страница
    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.003 c
2-1288280931
Aleks
2010-10-28 19:48
2011.01.23
Программа-ценник


15-1286134332
NailMan
2010-10-03 23:32
2011.01.23
Полетал сегодня с камерой на хвосте


15-1286915347
Юрий
2010-10-13 00:29
2011.01.23
С днем рождения ! 13 октября 2010 среда


2-1288332436
Abcdef123
2010-10-29 10:07
2011.01.23
Есть ли компонент MessageDlg с дополнительным чекбоксом на форме?


2-1288113441
TStas
2010-10-26 21:17
2011.01.23
Программное переключение раскладки





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