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