Einzelnen Beitrag anzeigen

Diamont

Registriert seit: 22. Mai 2008
30 Beiträge
 
#1

Eigene Klasse, welche den Canvas verwenden soll.

  Alt 12. Feb 2009, 20:31
Hallo,

ich möchte mir das OOP aneignen und ahbe mir dafür überlegt eine Klasse zu erstellen die Geometrische Figuren auf die Form zeichnet. Nun ist mein Problem das meine Klasse nicht weiss wo sie hinmalen soll...
Meine Unit 1 sieht so aus:





Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,geomForm,Rechteck,Kreis, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    la_flaeche: TLabel;
    ed_hoehe: TEdit;
    ed_breite: TEdit;
    bt_flaeche: TButton;
    Image1: TImage;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure bt_flaecheClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private

    { Private-Deklarationen }
  public
  rechteck: TRechteck;
    { Public-Deklarationen }
  end;
var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.FormCreate(Sender: TObject);
var geomForm : TgeomForm;
begin
  rechteck := TRechteck.create(12, 12);
end;

Meine Klasse (in einer anderen Unit) sieht momentan so aus:

unit geomForm;
interface
uses Graphics;
 type
  TgeomForm = class(TCanvas)
  private
   Fx:Integer;
   Fy:Integer;
  public
   procedure verschieben(dx,dy :Integer);
   function flaeche:Integer; virtual; abstract;
   procedure zeichne(x,y:Integer) ; virtual; abstract;
  end;
implementation

procedure TgeomForm.verschieben(dx,dy: Integer);
begin
 self.Fx := self.Fx + dx;
 self.Fy := self.Fy + dy;
end;
end.


Von dieser Klasse leitet sich wiederrum die Klasse TRechteck ab:

unit rechteck;

interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,geomForm,Kreis, StdCtrls, ExtCtrls;
type
  TRechteck = class(TgeomForm)
  private
  Fhoehe:Integer;
  Fbreite:Integer;
  public
  constructor create(hoehe, breite: Integer);
  function flaeche : Integer; override;
  procedure zeichne(x,y:integer); override;
  end;

implementation

constructor TRechteck.create(hoehe, breite: Integer);
begin
  inherited create;

  FHoehe := hoehe;
  FBreite := breite;
end;

function TRechteck.flaeche: Integer;
begin
  result := Fhoehe*Fbreite;
end;

procedure TRechteck.zeichne(x,y:Integer);
var handle:hdc;
begin
 moveto(x,y);
 lineto(x+50,y+50);
end;
end.
Nun ist die Methode Zeichne der Knackpunkt, denn wie soll ich ihr Mitteilen wodrauf sie zeichnen soll?!

Vielen dank schonmal für die Hilfe.

[edit=SirThornberry]Delphi-Tags gesetzt - nächstes mal bitte selbst machen. Mfg, SirThornberry[/edit]
Windows Vista Home Premium (64 Bit)
Intel Core 2 Duo E8400 @ 3,0 GHZ
Nvidea Geforce 8800 GTS 512
4 GB RAM
  Mit Zitat antworten Zitat