Главная страница
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-1412950706
AntonArm
2014-10-10 18:18
2016.07.24
Xe7 и Thread


4-1277281791
ANB
2010-06-23 12:29
2016.07.24
Как установить шрифт консольному приложению


2-1415425555
Signal
2014-11-08 08:45
2016.07.24
Чтение почты через протокол с TLS порт 995


15-1445780305
Кто б сомневался
2015-10-25 16:38
2016.07.24
Посоветуйте какие то интересные сайты, типа хабра


15-1444929114
ВладОшин
2015-10-15 20:11
2016.07.24
Как то так..