Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi OOP Komponente auf dem Formular erzeugen. (https://www.delphipraxis.net/125074-oop-komponente-auf-dem-formular-erzeugen.html)

abx 30. Nov 2008 11:30


OOP Komponente auf dem Formular erzeugen.
 
Hi,

ich bin dabei eine Art kleines Pokerspiel zu programmieren.
Dazu habe ich in einer externen Unit die Klasse TKarte erzeugt, die sich von TImage ableitet und um Attribute wie Farbe und Wert sowie einige Methoden erweitert wurde. Die Idee ein Objekt, das die Eigenschaften einer Karte besitzt und gleichzeitig für den Benutzer anzeigt.
Um eine solche Karte zu erzeugen und sichtbahr zu machen, reicht z.B. schon
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  TESTKarte := TKarte.Create(self);
  TESTKarte.Parent := self;
  TESTKarte.Initiate; //Eigene Methode
  TESTKarte.SetMessurements(50,50,200,300); //Eigene Methode
end;
Im nächsten Schritt soll aber ein Klasse THand entstehen, die (zum Schluss) 5 solcher Karten verwaltet.
Also habe ich Karten als Attribut in THand einfach eingetragen.
Delphi-Quellcode:
THand = class
  private
    TESTKarte: TKarte;
  public
    procedure TEST;
  end;
Die Prozedur TEST soll die Karten auf dem Formular erzeugen. Mir ist irgendwie klar, dass es so nicht funktionieren kann. Woher soll meine Karte denn überhaupt noch wissen was Form1 ist. Außerdem hätte ich es gerne unabhängig.
Delphi-Quellcode:
procedure THand.TEST;
  begin
    TESTKarte := TKarte.Create(Form1);
    //TESTKarte.Parent := self;
    TESTKarte.Initiate;
    TESTKarte.SetMessurements(50,50,200,300);
  end;
end.
Wie kann ich das am besten lösen?

Vielen Dank schonmal, abx.

Cyf 30. Nov 2008 12:50

Re: OOP Komponente auf dem Formular erzeugen.
 
Du muss deiner Hand einen Konstruktor(Create) hinzufügen und diesem eine Referenz auf dein Form (oder zumindest auf das Canvas oder auf was du genau zeichnest) übergeben und diese in einem Feld speichern. Abgesehen davon ist es imho keine gute Idee Verarbeitung und Ausgabe zu verquicken.

abx 30. Nov 2008 14:32

Re: OOP Komponente auf dem Formular erzeugen.
 
Danke,
Der consturctor war der entscheidende Hinweis.
Mit der Trennung von Verarbeitung und Ausgabe ist auch ne Idee.

Luckie 30. Nov 2008 14:40

Re: OOP Komponente auf dem Formular erzeugen.
 
Klassischer Fall für Containerklassen: http://www.michael-puff.de/Artikel/C...rKlassen.shtml


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 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