AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TGraphicControl.Canvas global machen

Ein Thema von halinchen · begonnen am 13. Feb 2007 · letzter Beitrag vom 13. Feb 2007
Antwort Antwort
Benutzerbild von halinchen
halinchen

Registriert seit: 13. Jun 2006
508 Beiträge
 
Delphi 2007 Professional
 
#1

TGraphicControl.Canvas global machen

  Alt 13. Feb 2007, 18:11
Hi!
Ich entwickel gerade eine Komponente die von TGraphicControl abgeleitet ist.

In TGraphicControl ist Canvas so deklariert:
protected property Canvas: TCanvas read FCanvas; Ich möchte aber, dass der Anwender später auf den Canvas zeichnen darf, also in global zugänglich machen.
(also:
protected property Canvas: TCanvas read FCanvas write FCanvas; Naja, oder so ähnlich.)

Wie stell ich das an. So kennt er das Objekt FCanvas nicht, dass sollte doch vererbt worden sein oder??
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: TGraphicControl.Canvas global machen

  Alt 13. Feb 2007, 18:21
einfach so:
Delphi-Quellcode:
public
  property Canvas;
aber wenn du eine eigene Komponente schreibst könntest du auch ein neues property machen was in der GetMethode eben Canvas zurück liefert.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#3

Re: TGraphicControl.Canvas global machen

  Alt 13. Feb 2007, 18:29
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
  Mit Zitat antworten Zitat
Benutzerbild von halinchen
halinchen

Registriert seit: 13. Jun 2006
508 Beiträge
 
Delphi 2007 Professional
 
#4

Re: TGraphicControl.Canvas global machen

  Alt 13. Feb 2007, 18:43
Zitat von SirThornberry:
einfach so:
Delphi-Quellcode:
public
  property Canvas;
Das klappt leider nicht.

Das mit der GetMethode müsste funktionieren.
Ich mach mich gelich an die Arbeit...

Danke

@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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz