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

Вниз

Своя отрисовка TMemo   Найти похожие ветки 

 
Alex_C   (2014-10-21 12:26) [0]

Необходимо сделать наследника TMemo со своей отрисовкой. Вроде все просто - переопределил WM_PAINT и рисую, что надо. Но при Memo.Lines.Add(..) происходит отрисовка сначала "стандартного" мемо, и поверх уже моя отрисовка, что приводит к мерцанию.  Нашел, что отрисовка стандартного мемо происходит здесь:


procedure TMemoStrings.Insert(Index: Integer; const S: string);
var
 SelStart, LineLen: Integer;
 Line: string;
begin
 if Index >= 0 then
 begin
   SelStart := SendMessage(Memo.Handle, EM_LINEINDEX, Index, 0);
   if SelStart >= 0 then Line := S + #13#10 else
   begin
     SelStart := SendMessage(Memo.Handle, EM_LINEINDEX, Index - 1, 0);
     if SelStart < 0 then Exit;
     LineLen := SendMessage(Memo.Handle, EM_LINELENGTH, SelStart, 0);
     if LineLen = 0 then Exit;
     Inc(SelStart, LineLen);
     Line := #13#10 + s;
     if s = "" then
       Line := Line + #13#10;
   end;
   SendMessage(Memo.Handle, EM_SETSEL, SelStart, SelStart);
   SendTextMessage(Memo.Handle, EM_REPLACESEL, 0, Line);
 end;
end;


т.е. при вызове события EM_REPLACESEL виндовый контрол перерисовывает себя не смотря на то, что метод WM_PAINT в моем компоненте перехвачен.
Вопрос: можно ли виндовому контролу сказать replace selection, но без перерисовки?


 
brother ©   (2014-10-21 13:16) [1]

перекрыть Insert и не вызывать
SendMessage(Memo.Handle, EM_SETSEL, SelStart, SelStart);
SendTextMessage(Memo.Handle, EM_REPLACESEL, 0, Line);
?


 
AlexC   (2014-10-22 00:07) [2]

Очень долго искал решение на свой вопрос - на самом деле не в первый раз уже им озадачиваюсь и не только в плане мемо. И вот сегодня совершенно случайно решение найдено - LockWindowUpdate! :)



Страницы: 1 вся ветка

Текущий архив: 2016.07.24;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.015 c
15-1447172846
aka
2015-11-10 19:27
2016.07.24
Wifi router


15-1443130202
Юрий
2015-09-25 00:30
2016.07.24
С днем рождения ! 25 сентября 2015 пятница


2-1414689143
Signal
2014-10-30 21:12
2016.07.24
Другое приложение и контекстное меню


15-1447765802
Кто б сомневался
2015-11-17 16:10
2016.07.24
Digital signatures - как узнать name of signer программно


15-1441438120
Pavia
2015-09-05 10:28
2016.07.24
Настройка W-Fi роутера