AGB  ·  Datenschutz  ·  Impressum  







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

Eigene Canvas Methode

Ein Thema von Mikender · begonnen am 12. Apr 2008 · letzter Beitrag vom 12. Apr 2008
Antwort Antwort
Seite 1 von 2  1 2      
Mikender
(Gast)

n/a Beiträge
 
#1

Eigene Canvas Methode

  Alt 12. Apr 2008, 18:03
Hallo

Ich habe mich schon (ziemlich) lange darüber aufgeregt dass man in Canvas keinen Kries zeichnen kann sondern nur eine Ellipse (mit einem Kreis könnte man einfach einben Punkt und den Radius angeben)

Nun habe ich mir gedacht ich schreibe meinen Kreis selber in Canvas.

Ich habe also ctrl+click auf Canvas Dann war ich in Forms dort das gleiche auf TCanvas dann war ich in Canvas.

Alles ganz normal... Dort hab ich dann in Public Die Procedure Circle hinzu geschrieben:

Delphi-Quellcode:
    procedure BrushCopy(const Dest: TRect; Bitmap: TBitmap;
      const Source: TRect; Color: TColor);
    procedure Circle(X,Y :Integer;Radius :Integer);
    procedure Chord(X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer);
So und nun noch meine Procedure hingeschrieben
Delphi-Quellcode:
procedure TCanvas.Circle(X, Y, Radius: Integer);
begin
  Ellipse(X-Radius, Y-Radius, X+Radius, Y+Radius);
end;

...

Eigentlich sollte es ja jetzt gehen aber es passiert nicht er erkennt kein Circle.

Kann man das überhaupt machen ???


Mikender
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Eigene Canvas Methode

  Alt 12. Apr 2008, 18:12
Du musst bei Änderungen in der VCL diese nochmals neu kompilieren, am besten komplett. Dann sollte es klappen.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Eigene Canvas Methode

  Alt 12. Apr 2008, 18:14
Hast du die .pas denn neu kompiliert?
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: Eigene Canvas Methode

  Alt 12. Apr 2008, 18:14
Zitat von Mikender:
Eigentlich sollte es ja jetzt gehen
Du hast also in den VCL Quellen "herumgepfuscht". Das interessiert den Compiler aber nicht, da er nicht die .pas Datei sondern die von CodeGear ausgelieferten .dcu Dateien und die VCL.dcp zu Rate zieht.

Zitat:
Kann man das überhaupt machen ???
Können schon, nur sollte man dann damit rechnen, dass alle Komponenten von Dritten und auch andere Units der VCL nicht mehr ohne weiteres funktionieren, da sie "Unit blabla wurde mit unterschiedlicher Version von Graphics kompiliert" melden und die Kompilierung damit verhindern.
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#5

Re: Eigene Canvas Methode

  Alt 12. Apr 2008, 18:15
Du solltest Dir lieber Deinen eigenen Canvas erzeugen, in dem Du von TCanvas ableitest, und nicht lustig in der VCL rumeditieren. Auf Dauer wirst Du damit nicht glücklich.
Untger anderem dafür ist das Konzept der Objektorientierung gedacht.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Eigene Canvas Methode

  Alt 12. Apr 2008, 18:17
Das wäre mal ein klassischer Einsatzfall für Class Helper. Vereerbung ist ungünstig, da man dann von TCanvas abgeleitete Klassen erst casten müsste, was unschön wäre. Oder man könnte eine normale Prozedur nehmen, müsste dann aber Self explizit und nicht mit der Punkt-Syntax übergeben. Welche Delphi-Version hast du denn? Class Helper gibt es ab Delphi 2006 (soweit ich weiß) Korrektur: in Delphi 2005 geht es auch schon, aber meines Wissens nicht früher.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Mikender
(Gast)

n/a Beiträge
 
#7

Re: Eigene Canvas Methode

  Alt 12. Apr 2008, 18:19
Ok ich lasses lieber
  Mit Zitat antworten Zitat
Mikender
(Gast)

n/a Beiträge
 
#8

Re: Eigene Canvas Methode

  Alt 12. Apr 2008, 18:20
ich habe Turbo Delphi Explorer
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#9

Re: Eigene Canvas Methode

  Alt 12. Apr 2008, 18:21
Warum? Kannst doch auch ganz einfach eine Prozedure erstellen:

Delphi-Quellcode:
procedure Circle(Canvas: TCanvas; X, Y, Radius: Integer);
begin
  Canvas.Ellipse(X-Radius, Y-Radius, X+Radius, Y+Radius);
end;
Offenburg? Tjaha, da muss ich jeden Tag hin zur Schule

[edit] Mit TDE kannst Du die Class Helper benutzen:

Delphi-Quellcode:
type
  TCanvasHelper = class helper for TCanvas
  public
    procedure Circle(X, Y, Radius: Integer);
  end;

implementation

procedure TCanvasHelper.Circle(X, Y, Radius: Integer);
begin
  Ellipse(X-Radius, Y-Radius, X+Radius, Y+Radius);
end;
Aufruf ist dann:
Canvas.Circle(10, 10, 10); // z.B.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Eigene Canvas Methode

  Alt 12. Apr 2008, 18:25
In Turbo Explorer gibt es Class Helper, also kannst du so vorgehen:
Delphi-Quellcode:
type
TCanvasCircleHelper = class helper for TCanvas
  procedure Circle(X, Y, Radius: Integer);
end;

procedure TCanvasCircleHelper.Circle(X, Y, Radius: Integer);
begin
  //Implementierung
end;

//Aufruf:
  Canvas.Circle(5, 5, 3);
Der Vorteil gegenüber der Variante der Muhkuh ist der "objektorientiertere" Aufruf.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:57 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