![]() |
TGraphicControl.Canvas global machen
Hi!
Ich entwickel gerade eine Komponente die von TGraphicControl abgeleitet ist. In TGraphicControl ist Canvas so deklariert:
Delphi-Quellcode:
Ich möchte aber, dass der Anwender später auf den Canvas zeichnen darf, also in global zugänglich machen.
protected property Canvas: TCanvas read FCanvas;
(also:
Delphi-Quellcode:
Naja, oder so ähnlich.)
protected property Canvas: TCanvas read FCanvas write FCanvas;
Wie stell ich das an. So kennt er das Objekt FCanvas nicht, dass sollte doch vererbt worden sein oder?? |
Re: TGraphicControl.Canvas global machen
einfach so:
Delphi-Quellcode:
aber wenn du eine eigene Komponente schreibst könntest du auch ein neues property machen was in der GetMethode eben Canvas zurück liefert.
public
property Canvas; |
Re: TGraphicControl.Canvas global machen
Hi,
FCanvas ist in TGraphicControl als private deklariert. Alles was private ist, ist nur innerhalb der gleichen Klasse/Instanz sichtbar. Erbende Klassen sehen hier nur Methoden/Eigenschaften, die als Mindestsichtbarkeit protected sind. Zwar gibt es auch einen Weg, wie Du jetzt das Property veröffentlichen könntest, aber dafür ist TGraphicControl gar nicht gedacht! Da solltest Du nach einem anderen Vorfahren suchen, auf den Du ohne Probleme zeichnen kannst. Dazu zählt dann z.B. ein TBitmap-Objekt, dass Du dann in einem TImage anzeigen könntest. Für ein TGraphicControl sollte stattdessen die Methode paint überschrieben werden. Diese ist in TGraphicControl virtual deklariert, kann also überschrieben werden (sollte sie auch, die ist sonst leer). Überschreibst Du diese Methode, so tust Du dies im Kontext der erbenden Klasse und hast damit zugriff auf die protected Eigenschaft. Gruß Der Unwissende |
Re: TGraphicControl.Canvas global machen
Zitat:
Das mit der GetMethode müsste funktionieren. Ich mach mich gelich an die Arbeit... :-D Danke :mrgreen: @Der_Unwissende Das ist mir schon klar. Ich wollte nur das ich wenn ich die Komponente dann auf der Form habe, das ich dann noch ein bischen an dem Aussehen werkeln könnte. Ich überlege mir das nochmal. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz