Форум: "Основная";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];
ВнизМерцание TRichEdit при скроллинге Найти похожие ветки
← →
Tack (2004-09-24 15:44) [0]Использую TRichEdit (Delphi6) в качестве консоли, куда выводятся цветные сообщения программы. Консоль должна прокручиваться вниз автоматически при добавлении в нее строки. В общем, я реализовал это так:
var
S: String;
sm: TWMScroll;
RichEd: TRichEdit;
begin
.....
RichEd.Lines.BeginUpdate;
RichEd.Lines.Add(S); // Вставка строки S
sm.Msg := WM_VSCROLL;
sm.ScrollCode := SB_BOTTOM;
RichEd.Dispatch(sm);
Application.ProcessMessages;
RichEd.Lines.EndUpdate;
....
При вставке строк происходит мерцание контрола. Такое чувство, что он полностью перерисовывается, с первой строки до последней, а потом только прокручивается до конца текста.
Пытался включить свойство DoubleBuffered для TRichEdit - текст вообще становится невидимым.
Можно ли как-нибудь устранить это явление?
← →
[lamer]Barmaglot © (2004-09-24 15:52) [1]Сколько строк вставляем? Или опять больше 10000?
Рекомендации микрософт говорят о том, что вставлять надо максимум удвоенное количество ВИДИМЫХ строк...Остальные надо сохранять в памяти и подгружать по необходимости...
← →
Tack (2004-09-24 15:59) [2]Ограничение стоит на 200 строк. Потом каждый раз убирается нулевая строка, типа устаревшая.
Причем эффект мерцания виден только если широко распахнуть окно. При маленьком окне ничего не мерцает почти.
← →
Defunct © (2004-09-24 19:06) [3]> При вставке строк происходит мерцание контрола.
Без доработок компанента RichEdit избежать мерцания невозможно.
Могу вам лишь дать инструмент, который лочит контрол, а уж как вы его примените ваше дело.procedure LockControl(C: TWinControl; bLock: Boolean);
begin
If (C <> nil) And (C.Handle <> 0) Then
If bLock then SendMessage(c.Handle, WM_SETREDRAW, 0, 0) Else
Begin
SendMessage(c.Handle, WM_SETREDRAW, 1, 0);
RedrawWindow(c.Handle, nil, 0,
RDW_ERASE or RDW_FRAME or RDW_INVALIDATE or RDW_ALLCHILDREN);
End;
End;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.047 c