[Lazarus] Repainting nested components
Roland Turcan
konf at rotursoft.sk
Wed Jul 2 11:01:14 CEST 2008
Thanks for you answer.
I am converting one project from Delphi/Kylix to Lazarus and using SVN
versions of Lazarus with FPC 2.2.0.
This behavior is currently related to i386-linux-gtk. But I am going
to port it under MacOS too (Carbon).
MG> Some widgetsets use a mixture. That means it depends on the type of widget, what
MG> technique is used.
Where I can find information of differences among widgets?
TRoland;
<<< 30.6.2008 12:57 - Mattias Gärtner "nc-gaertnma at netcologne.de" >>>
MG> Zitat von Roland Turcan <konf at rotursoft.sk>:
>> Hello lazarus project!
>>
>> How to assure, that all nested components will be repainted after
>> calling MyPanel.Paint, because actually all components are behind new
>> rectangle.
MG> I'm not sure, if you found a bug or if you misunderstood the concept of event
MG> based painting and/or clipping.
MG> In general:
MG> TPanel and TRadioButton are TWinControls and have their own handle. So it is up
MG> to the widgetset (windows, gtk, carbon, qt, fpgui ...) to control the order and
MG> how (double buffered, default background, clipping, overlapping) these widgets
MG> are painted. If they use clipping, then they can paint in any order. They can
MG> even paint only one of them. If they don't use clipping, then they will first
MG> paint TPanel and then TRadioButton.
MG> Some widgetsets use a mixture. That means it depends on the type of widget, what
MG> technique is used.
MG> What widgetset are you using?
MG> What effect do you expect and what do you get?
MG> What lazarus, fpc and OS version are you using?
>> procedure TMyPanel.Paint;
>> var rect :TRect;
>> begin
>> rect := GetClientRect;
>> InflateRect(rect,-50,-50);
>> Canvas.Brush.Color:= clYellow;
>> Canvas.Rectangle(rect);
>>
>> inherited Paint;
>> end;
>>
>> procedure TForm1.FormCreate(Sender: TObject);
>> var mp:TMyPanel;
>> begin
>> mp := TMyPanel.Create (self);
>> with mp do begin
>> Parent := self;
>> Left := 0;
>> Top := 0;
>> Width := 200;
>> Height := 150;
>> Color:= clRed;
>> end;
>>
>> with TRadioButton.Create(mp) do begin
>> Left:= 10;
>> Top := mp.Height div 2;
>> Width:=150;
>> Caption:= 'Roland';
>> Parent := mp;
>> end;
>> end;
>>
>> Thanks in advance.
MG> Mattias
--
Best regards, TRoland
http://www.rotursoft.sk
http://exekutor.rotursoft.sk
More information about the Lazarus
mailing list