Instanzen eigener Klasse auf dem Formular anzeigen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Horatius
Beiträge: 5
Registriert: So 12. Apr 2015, 20:52

Instanzen eigener Klasse auf dem Formular anzeigen

Beitrag von Horatius »

Wunderschönen Tag,

vorab: steige gerade in OOP ein habe zuvor nur prozedural geschrieben.

Ich bräuchte für ein Spiel Quadrate, welche sich bewegen und auf welche man klicken kann(auch mit dem Mausrad).
Mein Plan war, dass ich eine eigene Klasse erstelle, TControl erbend.

Ich wusste nicht so ganz was der Owner sein soll, daher habe ich Form1 eingetragen, da mir das einigermaßen sinnvoll erschien.
Was besagt denn die Beziehung Owner?

Hab es dann auch geschafft so wie ich mir das vorstellte, jedoch hab ich es nicht hingekriegt die Instanzen auf dem Formular anzuzeigen.
Muss man da etwas besonderes noch einstellen bzw. wo könnte mein Fehler liegen?


Hier nochmal der Code falls gewünscht (vielleicht ist es leichter für euch direkt was neues zu schreiben):

Code: Alles auswählen

type
  TGegner = class(TControl)
  public
    Constructor Erstellen(Breite, Laenge: Integer; DerBesitzer: TComponent);
    Procedure Spawnen(xKoor, yKoor: Integer);
  end;
 
implementation
 
constructor TGegner.Erstellen(Breite, Laenge: Integer; DerBesitzer: TComponent);
begin
    inherited Create(DerBesitzer);
    self.width := Laenge;
    self.height := Breite;
end;
 
procedure TGegner.Spawnen(xKoor, yKoor: Integer);
begin
    self.Left := xKoor;
    self.Top := yKoor;
end; 
und dann in einer seperaten Unit das Erstellen:

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
begin
    Gegner1 := TGegner.Erstellen(50,50,Form1);
    Gegner1.Parent:=Form1;
    Gegner1.Spawnen(50,50);
 
end;   
Win7 64-Bit | Lazarus IDE v.1.4.4 | Wünderschönen Tag!

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: Instanzen eigener Klasse auf dem Formular anzeigen

Beitrag von theo »

Leite von TCustomControl oder TGraphicControl ab und setze die Eigenschaft "visible:=true" nach dem Createn.

Horatius
Beiträge: 5
Registriert: So 12. Apr 2015, 20:52

Re: Instanzen eigener Klasse auf dem Formular anzeigen

Beitrag von Horatius »

theo hat geschrieben:Leite von TCustomControl oder TGraphicControl ab und setze die Eigenschaft "visible:=true" nach dem Createn.

Yeah, es hat geklappt. Vielen Dank :mrgreen:
Win7 64-Bit | Lazarus IDE v.1.4.4 | Wünderschönen Tag!

Requion
Beiträge: 106
Registriert: Mi 3. Feb 2016, 09:39
OS, Lazarus, FPC: Linux(Arch Linux(+ARM)/Minibian) (L 1.6.0 FPC 3.0.0)
CPU-Target: 32/64Bit,ARM(RPi)
Wohnort: nahe Grimma

Re: Instanzen eigener Klasse auf dem Formular anzeigen

Beitrag von Requion »

Horatius hat geschrieben:Ich wusste nicht so ganz was der Owner sein soll, daher habe ich Form1 eingetragen, da mir das einigermaßen sinnvoll erschien.
Was besagt denn die Beziehung Owner?
Der Owner gibt meineswissens nach an wer das Objekt hinterher wieder wegräumt (Free).

Bei Owner = Form1 wird das Objekt zerstört und der Speicher freigegeben wenn Form1 zerstört wird.
Bei Owner = nil muss sich der Programmierer selber um das aufräumen kümmern.
Mfg Requion

Das beste an Standards ist, dass es so viele davon gibt.

Antworten