AGB  ·  Datenschutz  ·  Impressum  







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

Geometrische Objekte in Array hizufügen

Ein Thema von hotkey · begonnen am 26. Jan 2012 · letzter Beitrag vom 26. Jan 2012
Antwort Antwort
hotkey

Registriert seit: 20. Aug 2011
Ort: Berlin
113 Beiträge
 
Delphi 6 Personal
 
#1

Geometrische Objekte in Array hizufügen

  Alt 26. Jan 2012, 11:01
Hallo , im Rahmen unseres Unterrichtes müssen wir ein Programm programmieren , das auf Buttonklicks jeweils geometrische Formen zeichnet z.B Rechteck , Dreieck etc.

Das habe ich zwar jetzt geschafft , aber wir müssen das jetzt sozusagen verwalten mit Arrays.

Und ich weiß nciht , wie ich das jetzt in einen Array packen soll , damit ich die Formen verwalten kann.

Ich habe zwar einen Array deklariert etc , aber wie packe ich das alles in das Array rein ?

Bei Christan Stelzmann , der diesen Crashkurs macht , hat das hier geschrieben :

Zitat:
interface

type
TgeomFormArray = Array of TgeomForm;

implementation

function gesamtflaeche (formen : TgeomFormArray) : Integer;
var i : Integer;
begin
result := 0;

for i:=0 to High(formen) do
result := result + formen[i].flaeche;
end;
Das ist mein Code :

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    PaintBox1: TPaintBox;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Button2: TButton;
    Edit3: TEdit;
    Edit4: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;





  Tgeo_objects = class
  end;


  Tpunkt = class(Tgeo_objects)
    x :integer;
    y:integer;
  
    procedure setx(r:integer);
    procedure sety(z:integer);

   end;


   TLinie = class(Tpunkt)
    p1,p2:Tpunkt;
    end;


    TViereck = class(TLinie)
    protected
    procedure zeichne;
    end;

    TDreieck = class(Tviereck)
    procedure Dreieckzeichnen;
    end;


    Tgeo_objectsArray = Array of Tgeo_objects;


var
  Form1: TForm1;
  MyViereck : TViereck;
  Punkt:Tpunkt;
  r:integer;
  z:integer;
  GeoArray :Tgeo_objectsarray;
  i :integer;
  Mydreieck:Tdreieck;



implementation


procedure TViereck.zeichne;
begin
form1.PaintBox1.Canvas.MoveTo(myviereck.x,myviereck.y);
form1.paintbox1.canvas.LineTo(myviereck.x+100,myviereck.y);

form1.paintbox1.canvas.lineto(myviereck.x+100,myviereck.y+100);

form1.paintbox1.canvas.lineto(myviereck.x,myviereck.y+100);

form1.paintbox1.Canvas.MoveTo(myviereck.x,myviereck.y);
form1.PaintBox1.canvas.LineTo(myviereck.x,myviereck.y+100);
end;

procedure TPunkt.Setx(r:integer);
begin
x:=r;
end;

procedure TPunkt.sety(z:integer);
begin
y:=z;
end;


procedure TDreieck.Dreieckzeichnen;
begin
form1.PaintBox1.Canvas.MoveTo(mydreieck.x,mydreieck.y);
form1.PaintBox1.Canvas.LineTo(mydreieck.x+100,mydreieck.y);

form1.PaintBox1.Canvas.MoveTo(mydreieck.x,mydreieck.y);
form1.paintbox1.canvas.LineTo(mydreieck.x,mydreieck.y+100);

form1.paintbox1.Canvas.MoveTo(mydreieck.x,mydreieck.y+100);
form1.PaintBox1.Canvas.LineTo(mydreieck.x+100,mydreieck.y);


end;


{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
MyViereck := TViereck.Create;

r:= strtoint(edit1.text);
z:= strtoint(edit2.text);

myviereck.setx(r);
myviereck.sety(z);

MyViereck.zeichne;
MyViereck.Free;
end;




procedure TForm1.Button2Click(Sender: TObject);
begin
r := strtoint(edit3.text);
z := strtoint(edit4.text);

Mydreieck := Tdreieck.Create;

mydreieck.setx(r);
mydreieck.sety(z);

mydreieck.Dreieckzeichnen;
mydreieck.Free
end;

end.
Felix
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#2

AW: Geometrische Objekte in Array hizufügen

  Alt 26. Jan 2012, 11:05
Du erzeugst das entsprechende Objekt und fügst es dann Deinem Array hinzu, nachdem Du dessen Größe entsprechend dimensioniert hast (SetLength).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hotkey

Registriert seit: 20. Aug 2011
Ort: Berlin
113 Beiträge
 
Delphi 6 Personal
 
#3

AW: Geometrische Objekte in Array hizufügen

  Alt 26. Jan 2012, 11:10
Das verstehe ich ja , aber ich habe Probleme bei der Umsetzung.

Ein Objekt habe ich doch schon erzeugt , oder nicht ?
Felix
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#4

AW: Geometrische Objekte in Array hizufügen

  Alt 26. Jan 2012, 11:16
Aber Du hast es noch nicht ins Array verfrachtet. An Deiner Stelle würde ich mir dafür einfach eine Methode schreiben.
Delphi-Quellcode:
procedure TForm1.AddToArray(GeoObject: Tgeo_objects);
begin
  SetLength(Tgeo_objectsArray, Length(Tgeo_objectsArray) + 1);
  Tgeo_objectsArray[High(Tgeo_objectsArray)] := GeoObject;
end;
Übrigens sieht Deine Klassenhierarchie nicht sonderlich aus, ein bisschen Vererbung könnte nicht schaden
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hotkey

Registriert seit: 20. Aug 2011
Ort: Berlin
113 Beiträge
 
Delphi 6 Personal
 
#5

AW: Geometrische Objekte in Array hizufügen

  Alt 26. Jan 2012, 11:19
Danke für die Hilfe.

Was meinst du mit mehre Vererbung könntest du das bitte etwas konkretisieren?

4 Klassen reichen doch , oder nicht ?
Felix
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#6

AW: Geometrische Objekte in Array hizufügen

  Alt 26. Jan 2012, 11:22
Nunja, allen Klassen ist wohl mindestens gemein, dass sie sich zeichnen sollen, oder? Dann würde ich in der Basisklasse schon einmal die Methode "zeichne" deklarieren, wahrscheinlich abstrakt, da sich jedes Objekt ja etwas anders zeichnet. Damit steht Dir in den abgeleiteten Klassen automatisch diese Methode zur Verfügung, muss aber ggf. noch überschrieben werden.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 07:33 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