Du hast zwar zwischenzeitlich bereits geantwortet, aber vielleicht hilft dir das trotzdem weiter:
Da Caption aber z.B. schon recht früh vorhanden war, allerdings protected und man demnach eigentlich nicht ran kommt,
kann man diesen Typen dennoch nehmen und macht sich das Property sichtbar, über eine eigene Zugriffsklasse oder man castet einfach in "irgendwas", wo es endlich sichtbar ist.
In der LCL ist
Caption
bereits in
TControl
public
. Also kann dieses schonmal mit Hilfe von
TControl
verarbeitet werden.
ShowHint
und
Hint
sind ebenfalls bereits in
TControl
zugreifbar, also bleibt nur noch
Canvas
.
@Guido: Ich empfehle dir also das folgende: Nimm als Parametertyp
TControl
, dann solltest du schonmal auf
Caption
,
Hint
und
ShowHint
zugreifen können.
Für das Canvas empfehle ich dir das folgende:
Delphi-Quellcode:
var
thecanvas: TCanvas;
begin
// Sachen mit Caption und (Show)Hint machen
...
// jetzt den Canvas ermitteln, falls möglich
if ACtrlWithCanvas
is TCustomControl
then
thecanvas := TCustomControl(ACtrlWithCanvas).Canvas
else
if ACtrlWithCanvas
is TGraphicControl
then
thecanvas := TGraphicControl(ACtrlWithCanvas).Canvas
else
(* wir wissen nicht, ob das Control einen Canvas hat
* (das könnte man jetzt mit RTTI austesten, aber ich
* brech hier einfac mal ab)
*)
Exit;
// verwende "thecanvas" um auf den Canvas zuzugreifen
end;
is
dient übrigens dazu, um herauszufinden ob eine Objektinstanz von einer bestimmten Klasse abgeleitet ist. Zum Beispiel ist
someobj is TObject
für jede Objektinstanz wahr.
Gruß,
Sven