Главная страница
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.012 c
2-1414037154
Drowsy
2014-10-23 08:05
2016.07.24
Unit не дебажится.


15-1444253403
Юрий
2015-10-08 00:30
2016.07.24
С днем рождения ! 8 октября 2015 четверг


15-1447832032
Dimka Maslov
2015-11-18 10:33
2016.07.24
Вот интересно


2-1416740909
Banana
2014-11-23 14:08
2016.07.24
Delphi 7 Юникод на печать


15-1444728307
Юрий Зотов
2015-10-13 12:25
2016.07.24
java XPath