AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

vom Objekt zur Komponente

Ein Thema von sebi87 · begonnen am 16. Apr 2008 · letzter Beitrag vom 17. Apr 2008
Antwort Antwort
Seite 3 von 4     123 4   
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#21

Re: vom Objekt zur Komponente

  Alt 17. Apr 2008, 15:37
Zitat:
Das Objekt ist in der gleichen Unit definiert
Unit oder Klasse?
Markus Kinzler
  Mit Zitat antworten Zitat
sebi87
(Gast)

n/a Beiträge
 
#22

Re: vom Objekt zur Komponente

  Alt 17. Apr 2008, 15:39
also der Type-Teil ist in der gleichen Unit und die Variable ist dann in der Klasse

muss es in die Klasse ;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#23

Re: vom Objekt zur Komponente

  Alt 17. Apr 2008, 15:41
Das würde sich sehr anbieten.
Markus Kinzler
  Mit Zitat antworten Zitat
sebi87
(Gast)

n/a Beiträge
 
#24

Re: vom Objekt zur Komponente

  Alt 17. Apr 2008, 15:43
dann müsste ich eine Klasse TObject in der Klasse TComponent definieren.

geht das?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#25

Re: vom Objekt zur Komponente

  Alt 17. Apr 2008, 15:45
Ich redete von der Variablen Dreieck und nicht der Klasse TVieleck
Markus Kinzler
  Mit Zitat antworten Zitat
sebi87
(Gast)

n/a Beiträge
 
#26

Re: vom Objekt zur Komponente

  Alt 17. Apr 2008, 15:46
OK, hab ich jetzt falsch verstanden.

Die Variable Vieleck ist in der Kalsse, das schon
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#27

Re: vom Objekt zur Komponente

  Alt 17. Apr 2008, 15:47
Zeig mal die komplette Unit.
Markus Kinzler
  Mit Zitat antworten Zitat
sebi87
(Gast)

n/a Beiträge
 
#28

Re: vom Objekt zur Komponente

  Alt 17. Apr 2008, 16:01
Hier mal ein Teil
Delphi-Quellcode:
unit C_Ball_V2;

{- [ITNERFACE]-Teil -----------------------------------------------------------}
interface

uses Windows, Classes, Graphics ;

function PointEllipse(Mittelpunkt : TPoint ; Winkel, ARadius : integer;
 BRadius : integer = 0) : TPoint ;
function PointBezier(A, B, C, D : TPoint; Teilung, Schritt : Integer) : TPoint ;

type
{- Typendefinierung -----------------------------------------------------------}
  TSite = (lsLeft, lsRight) ;
  TPaintStyle = (psLine, psColored) ;


{- TVieleck -------------------------------------------------------------------}
  TVieleck = class
  // [PRIVATE]-Teil
  private
    Mittelpunkt : TPoint ;
    FVieleck : array of TPoint ;
    Canvas : TCanvas ;

  // [PUBLIC]-Teil
  public
    constructor Create(AMittelpunkt : TPoint; ACanvas : TCanvas) ;
    procedure Paint(AColor : TColor) ;
  end ;

{- TBall ---------------------------------------------------------------------}
  TBall = class(TComponent)
  // [PRIVATE]-Teil
  private
    FMittelpunkt : TPoint ;
    FCanvas : TCanvas ;
    Dreieck : TVieleck;

    FPaintStyle : TPaintStyle ;
    FbgColor : TColor ;
    FLineColor : TColor ;

  // [PUBLIC]-Teil
  public
    constructor Create(AOwner : TComponent) ; overload; override; // Standard-Construktor
    constructor Create(AOwner : TComponent; AMittelpunkt : TPoint;
      ACanvas : TCanvas) ; overload;
    procedure Paint ;
    procedure Clear ;
    procedure Repaint ;

  // [POTECTED]-Teil
  protected

  // [PUBLISHED]-Teil
  published
    property Canvas : TCanvas read FCanvas write FCanvas ;
    property XMittelpunkt : Integer read FMittelpunkt.x write FMittelpunkt.x ;
    property YMittelpunkt : Integer read FMittelpunkt.y write FMittelpunkt.y ;

    property PaintStyle : TPaintstyle read FPaintStyle write ChangePaintStyle ;
    property bgColor : TColor read FbgColor ;
    property LineColor : TColor read FLineColor ;
  end ;

procedure Register;

{- [IMPLEMENTATION]-Teil ------------------------------------------------------}
implementation

procedure Register;
begin
  RegisterComponents('Ball', [TBall]);
end;


{- TVieleck -------------------------------------------------------------------}

// Generiert TVieleck auf ACanvas mit AMittelpunkt
constructor TVieleck.Create(AMittelpunkt : TPoint; ACanvas : TCanvas) ;
begin
  inherited Create;
  Canvas := ACanvas ;
  Mittelpunkt := AMittelpunkt ;
end ;

// Erstellt TVieleck aus den Daten
procedure TVieleck.Paint(AColor : TColor) ;
begin
  Canvas.Pen.Width := 2 ;
  Canvas.Pen.Color := AColor ;
  Canvas.Polyline(FDreieck) ;
end ;

{- TBall ----------------------------------------------------------------------}
// Standard-Constructor
constructor TBall.Create(AOwner : TComponent) ;
begin
  inherited Create(AOwner); // geerbter Konstruktor
  FCanvas := nil ; // Zur Sicherheit
  FMittelpunkt.x := -1 ; // Zur Sicherheit
  FMittelpunkt.y := -1 ; // Zur Sicherheit

  Dreieck := TVieleck.Create(FMittelpunkt, FCanvas) ;
end ;

constructor TBall.Create(AOwner : TComponent; AMittelpunkt : TPoint;
  ACanvas : TCanvas) ;
begin
  Create(AOwner) ;
  // Standartwerte für Propertys
  FbgColor := clWhite ;
  FLineColor := clBlack ;
  FLungColor := $008B82FF ;

  FCanvas := ACanvas ;
  FMittelpunkt := AMittelpunkt ;
end ;

// Zeichent
procedure TBall.Paint ;
begin
  Dreieck.Paint(FLineColor) ;
end ;

// Löschte
procedure TBall.Clear ;
begin
  Dreieck.Paint(FbgColor) ;
end ;

// Zeichnet neu
procedure TBall.Repaint ;
begin
  // Löschen
  Clear ;
  // Neuzeichnen
  Paint ;
end ;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#29

Re: vom Objekt zur Komponente

  Alt 17. Apr 2008, 16:12
Erst mal fällt auf, dass deine Bezeichnungen inkonsistent sind.
Suffix F für alle privaten Felder, Suffix A für Parameter, T für Typen
Aber da FDreieck von den Werten, anderer Felder abhängt, war der 2. Konstruktor doch richtig.
Markus Kinzler
  Mit Zitat antworten Zitat
sebi87
(Gast)

n/a Beiträge
 
#30

Re: vom Objekt zur Komponente

  Alt 17. Apr 2008, 16:19
ok abgesehen, dass meine Bezeichnungen inkonsistent sind weiß ich wo der Fehler liegt.

Zu dem Zeitpunkt wenn der Constructor ausgeführt wird ist das Canvas noch nil und auf ein nicht existierendes Canvas kann man nicht zeichnen.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 13:45 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