[Lazarus] Why is TCustomControl.Canvas public?

Luiz Americo Pereira Camara luizmed at oi.com.br
Thu Jul 14 02:40:00 CEST 2011


On 13/7/2011 21:03, Flávio Etrusco wrote:
>> IMHO it does not makes sense since TCustomControl is not supposed to be used
>> directly. It's supposed to be derived and override Paint. The same for
>> SetColor. Color should not be public so not handled by default in
>> TCustomControl.
> I kind of agree; that must be the reasoning for Borland.
> OTOH I realize it can be quite useful for quick hacks,

TCustomControl is to be a base class not for quick hacks. Adding more 
functions would blow the code for most components that don't use it

OnPaint can be even undesired in some controls

If some descendants needs OnPaint is pretty simple to add with the 
benefit of choosing where to call.

As an example see 
http://code.google.com/p/luipack/source/browse/trunk/cairo/lcl/cairolcl.pas#86

OnPaint and SetColor are not necessary here just blow code

>   like painting a
> background image. It'd be even more useful there pre- and post- events
> hardcoded in PaintWindow. I vote for Painting and Paint, respectively
> ;-)

I would keep a lean base class. Even i would remove onpaint and setcolor 
altogether

Anyway, since TCustomControl is not a visual control and you need those 
features, you can create easily an descendant and use it as base for 
your components

Luiz






More information about the Lazarus mailing list