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

Вниз

Мерцание 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.058 c
14-1095926430
DiamondShark
2004-09-23 12:00
2004.10.10
Деловая игра "Инквизиция"


1-1096031373
AdmeraL
2004-09-24 17:09
2004.10.10
TRegIniFile


14-1095670737
Rule
2004-09-20 12:58
2004.10.10
Неужели в москве такие зарплаты ????


3-1094652066
Mefodiy
2004-09-08 18:01
2004.10.10
Ошибка "Invalid file name" при SQL запросе


14-1095437436
olookin
2004-09-17 20:10
2004.10.10
коли делать нечего...