I'm trying to write a custom draw cell method for a TDBGridEh
. The problem is when I change properties of pen, brush, ... the painting becomes messy. That's because the control does some extra painting itself after it calls the event handler. So I have to keep all props and then reset them when my own painting was finished.
I tried to create my own TControlCanvas
and assign grid's one to it, but I get a run-time exception with message:
Cannot assign a TControlCanvas to a TControlCanvas
, that indicates the AssignTo
method is not implemented for TControlCanvas
nor for its ancestors. So my questions are:
Why
TControlCanvas
does not have anAssignTo
method? What is the problem?How can I keep and restore all properties of a TControlCanvas? And by that I mean something more convenient than creating
TPen
,TBrush
,TFont
, etc. .
Not sure if this fits what your expects, but there are
TPenRecall
,TBrushRecall
andTFontRecall
to save and restore the settings of these three properties in a semi-automatic way.The handling is pretty simple: Create an instance of these classes with the corresponding properties as the parameter and do whatever you want with Pen, Brush and Font. In the end free those instances, which will restore the settings.
In combination with a
TObjectList
and some internal reference counting the effort needed to save and restore these canvas properties can be reduced to a one liner.Usage: