Главная страница
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.013 c
15-1441315802
Юрий
2015-09-04 00:30
2016.07.24
С днем рождения ! 4 сентября 2015 пятница


15-1445778899
pavelnk
2015-10-25 16:14
2016.07.24
SEO странность


4-1278405370
tytus
2010-07-06 12:36
2016.07.24
CryptoAPI (Delphi 2010, XP SP3)


15-1442241297
timokhasarov
2015-09-14 17:34
2016.07.24
Access ошибка доступа к программе


15-1445266190
картман
2015-10-19 17:49
2016.07.24
Центр Вселенной