Вниз
Скачать: CL | DM;

TMemo и DoubleBuffered проблема   Найти похожие ветки 

← →
Alex_C ©   (2006-10-12 15:51) [0]

Мне надо создать потомок от TMemo c измененным WMPaint. При использовании DoubleBuffered:= False - все без проблем как в факах, но при этом мемо естественно мерцает при перерисовке. При выставлении св-ва DoubleBuffered := true - мемо перестает закрашивать свободную от надписей клиенткую область. Как этого избежать?
Вот пример моего WMPaint (взят из примера):

procedure TMyMemo.WMPaint(var Message: TWMPaint);
var
   i, dy : Integer;
   PS:TPaintStruct;
   DC:HDC;
   aCanvas: TCanvas;
begin
   DC:= Message.DC;
   if DC= 0 then
       DC:= BeginPaint(Handle, PS);
   aCanvas:=TCanvas.Create;
   try
       aCanvas.Handle:= DC;
       aCanvas.Font:= Font;

// Если вот сюда поставить aCanvas.FillRec, то все закрашивается,
// но естественно начинает сильно мерцать.

       with aCanvas do
       begin
           dy := 1;
           for i:= 0 to Lines.Count-1 do
           begin
               if (i mod 2) = 0 then
                   Font.Color:= clBlue
               else
                   Font.Color:= clBlack;
               TextOut(1, dy, Lines[i]);
               dy:= dy+ TextHeight("X");
           end;
       end;
   finally
       if Message.DC = 0 then EndPaint(Handle, PS);
       aCanvas.Free;
   end;
end;


← →
Ketmar ©   (2006-10-12 17:05) [1]

интересно, а почему не взять richedit? в твоём коде как минимум одна ошибка -- попробуй выделить текст. что будет с выделением? и вообще -- если уж ВСЁ рисуешь руками -- так и рисуй себе на битмап, а потом битмап выводи.



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.029 c
15-1160381006
i-am-vladko
2006-10-09 12:03
2006.10.29
Проблемы с Zeos - не ставится под Delphi 5


15-1160362502
Slider007
2006-10-09 06:55
2006.10.29
С днем рождения ! 7 октября


2-1160572066
Romas81
2006-10-11 17:07
2006.10.29
как в Delphi запустить другое приложение


2-1160626264
apl
2006-10-12 08:11
2006.10.29
Про даты


2-1160721685
alucard
2006-10-13 10:41
2006.10.29
Как сделать Таймер активирующийся по Вторникам и Четв. в 15:00




   Наверх