[Lazarus] RE : RE : gtk2 TCustomControl.Paint, InvalidateRect

Ludo Brands ludo.brands at free.fr
Sat Jul 9 11:39:48 CEST 2011


The scrollbar invalidates indeed the whole region, even if it is located
outside the customcontrol (and thus invisible). If nobody else has another
idea I would suggest to create a bug report.

In the mean time, a workaround is to parent the scrollbox to the parent of
TPaintTest. The constructor becomes then

constructor TPaintTest.Create(AOwner: Tcomponent; ParentControl:
TWinControl);
begin
   inherited Create(AOwner);
   self.Parent:=ParentControl;
   self.width := 500; self.height := 500;

   ScrollBar:= TScrollBar.Create(Self);
   ScrollBar.Kind := sbVertical;  
   ScrollBar.left:=self.width+self.left;
   ScrollBar.height :=self.height+self.top;
   ScrollBar.LargeChange := 100;  ScrollBar.Max := 1000;
   ScrollBar.Parent := ParentControl;

   t := TTimer.create(self);  t.interval := 1000;
   t.onTimer := @invalidateTest;  t.enabled := true;
end;

Create it as t:=TPaintTest.Create(self,panel1);

Downside is that you have to create the code to move/resize the scrollbar
when TPaintTest moves or resizes.

Ludo





More information about the Lazarus mailing list