Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2016.07.24;
Скачать: [xml.tar.bz2];

Вниз

Своя отрисовка 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.005 c
4-1276263135
POP
2010-06-11 17:32
2016.07.24
DrawAnimatedRects не работает в Vista/Win7


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


4-1278077072
Festil
2010-07-02 17:24
2016.07.24
Инициализация драйвера камеры.


15-1447171629
DayGaykin
2015-11-10 19:07
2016.07.24
HTML, Chrome, Вложенные таблицы - помогите сформулировать вопрос


2-1416746513
Max
2014-11-23 15:41
2016.07.24
Сортировка в ListView WinApi.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский