Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.01.23;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.065 c
15-1286539443
xayam
2010-10-08 16:04
2011.01.23
Drupal 6 + .profile для мультисайтинга


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


3-1251287621
vegarulez
2009-08-26 15:53
2011.01.23
Вопрос про select числа с разделителем дробной части.


15-1286483351
Юрий
2010-10-08 00:29
2011.01.23
С днем рождения ! 8 октября 2010 пятница


15-1286722664
AlexDn
2010-10-10 18:57
2011.01.23
Gif анимтор..