![]() |
Re: vom Objekt zur Komponente
Delphi-Quellcode:
was willst du eigentlich mit diesem Konstrukt erreichen? bitte beachten, dass du dich auch darum kümmern musst, dass deine Paint-Methode aufgerufen wird, wenn der externe Canvas neu gezeichnet wird.
TBall = class(TComponent)
private FCanvas: TCanvas; FPoint: TPoint; public constructor Create(AOwner: TComponent); overload; override; // Standard-Constructor Eigentlich nicht unbedingt notwendig, aber ich würde ihn trotzdem anlegen constructor Create(AOwner: TComponent; Acanvas: TCanvas; APoint: TPoint ); overload; procedure Paint; published property Canvas: TCanvas read FCanvas write FCanvas; property Point: TPoint read FPoint write FPoint; end; ... constructor TBall.Create( AOwner: TComponent); begin inherited create (AOwner); //geerbter Konstruktor FCanvas := Nil; //Zur Sicherheit FPoint := Nil; //Zur Sicherheit; end; constructor TBall.Create(AOwner: TComponent; ACanvas: TCanvas; APoint: TPoint ); begin Create( AOwner); // Aufruf Standardkonstruktor FCanvas := ACanvas; FPoint := APoint; end; ... |
Re: vom Objekt zur Komponente
Was will ich damit erreichen?
Na ja ich will mir das Zeichen von "Bällen" also Kugeln durch eine Komponente vereinfachen da ich das in der "Anwendung" also meinem Arbeitskreis sehr oft benötige. Danke für die schnelle Antwort, ich werde das mal versuchen. Sebastian |
Re: vom Objekt zur Komponente
wenn du eine visuelle Componente willst solltest du TCustomControl oder TGraphicControl verwenden je nach dem was du genau vor hast. Dort gibt es bereits eine Canvas und die Implementierung für das Zeichnen, Fenster allocieren etc. ist auch vorhanden. Es macht ja keinen sinn eine nicht visuelle Komponente zu verwenden wenn sie etwas visuell darstellen soll.
|
Re: vom Objekt zur Komponente
funktionier jetzt alles soweit nur bei
Delphi-Quellcode:
erscheint immer ein Kompatibilitätsfehler
FPoint := Nil;
|
Re: vom Objekt zur Komponente
Oh TPoint ist ein Record keine Klasse:
Delphi-Quellcode:
FPoint.x := -1;
FPoint.y := -1; |
Re: vom Objekt zur Komponente
So geht jetzt alles ganz wunderbar.
Nur hab ich schon wieder ein Problem an dem ich jetzt nicht weiter komme. Ich will in dem Construktor beim "ertellen" der Komponente ein Objekt "erstellen" ich hab das jetzt einfach so versucht
Delphi-Quellcode:
wenn ich das Objekt benutzen will, stoße ich aber immer auf eine Zugriffsverletzung im Projekt, hat jemanden ne Idee wie das Funktioniert?
constructor TBall.Create(AOwner : TComponent; AMittelpunkt : TPoint; Canvas : TCanvas) ;
begin Create(AOwner) ; FCanvas := ACanvas ; FMittelpunkt := AMittelpunkt ; Dreieck:= TVieleck.Create ; end ; |
Re: vom Objekt zur Komponente
Wo hast du das Objekt Dreieck definiert? BTW. Das würde ich im Standard-Konstruktor instantiieren.
|
Re: vom Objekt zur Komponente
Ich steig da nicht durch: Canvas, ACanvas und FCanvas?
|
Re: vom Objekt zur Komponente
Ok, im Standart-Konstruktor schieben ist kein Problem.
Das Objekt ist in der gleichen Unit definiert |
Re: vom Objekt zur Komponente
@ DeddyH:
Stimmt das ist ein fehler drin muss so heißen:
Delphi-Quellcode:
constructor TBall.Create(AOwner : TComponent; AMittelpunkt : TPoint; ACanvas : TCanvas) ;
begin Create(AOwner) ; FCanvas := ACanvas ; FMittelpunkt := AMittelpunkt ; Dreieck:= TVieleck.Create ; end ; und ACanvas wird an FCanvas die Global deiniert ist übergeben |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:10 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