![]() |
Objekt von TShape ableiten
Hi,
Ich bin gerade eine kleine Simulation am programmieren, wo ziemlich viele rechtecke bewegt werden müssen. Da mit canvas trotz doublebuffering zu heftiges flackern auftritt wollte ich das jetzt mit Shapes lösen. Da die rechtecke aber noch zusätzliche Eigenschaften wie Geschwindigkeit haben, wollte ich mich zum ersten mal an Vererbung ran wagen und eine Klasse von Tshape ableiten, nur leider funktioniert das nicht richtig. Nach einigen Recherchen bin ich darauf gestoßen das es wohl etwas mit inherited, also dem aufrufen der create prozedur des Vaters Tshape zu tun haben muss. Also habe ich das folgendermassen versucht:
Delphi-Quellcode:
und dann
type Tmyklasse = class(TShape)
... ... v: Integer; //Geschwindigkeit constructor erzeugen(top,left,hoehe,breite,geschw: Integer; aowner: TComponent); destructor entfernen; .... implementation constructor Tmyklasse.erzeugen; begin inherited create(aowner); Setbounds(left,top,breite,hoehe); color:=clgreen; v:=geschw; end;
Delphi-Quellcode:
und irgendetwas macht das programm dann auch, nur kein shape erstellen und anzeigen.
Tmyklasse.erzeugen(1,0,10,10,10,5,5,self)
Kann mir jemand sagen wo mein Fehler liegt, oder falls das zwecklos wäre, mir erklären wie ich das richtig mache? schonmal vielen dank im vorraus :) |
Re: Objekt von TShape ableiten
Zitat:
Delphi-Quellcode:
Die Instanz sollte keine lokale Variable sein, sonst kannst du ja nicht mehr darauf zugreifen.
type
TForm1 = class(TForm) [...] private MyKlasse: TMyKlasse; [...] begin MyKlasse := Tmyklasse.erzeugen(1,0,10,10,10,5,5,self); |
Re: Objekt von TShape ableiten
Nein ich hab einfach ein rectangle gezeichnet. Wo liegen denn die verbesserungen bei bitmaps, bzw. wie arbeite ich damit?
Und die Variable hab ich schon globar deklariert, besser gesagt habe ich eine TOBjectlist in der die Instanzen drinstehen, weil ich mehrere brauche. Da tut sich aber wie gesagt gar nicht. |
Re: Objekt von TShape ableiten
Mehr Performance, kein Flimmern usw.
Paintbox und Image sind eigentlich nur zum Anzeigen eines Bildes da. Zur der Instanz: Zeig mal etwas mehr Code. |
Re: Objekt von TShape ableiten
ok, global definiere ich:
Delphi-Quellcode:
dann mache ich
var liste: TObjectlist;
Delphi-Quellcode:
Vorher mit Canvas hat das so geklappt. Und einen Fehler erhalte ich auch nicht.
liste.add(Tmyklasse.create(self));
Tmyklasse(liste[liste.count-1]).SetBounds(10,10,10,10); |
Re: Objekt von TShape ableiten
Müsste man als Owner nicht TForm, oder so angeben. Sonst zeichnet sich dein Shape auf sich selbst und man kann es gar nicht sehen. Ein
Delphi-Quellcode:
kann auch nicht schaden.
visible := true; //Alternativ MyObject.Show
|
Re: Objekt von TShape ableiten
hilft beides nichts :(
aber ich glaube das ich das ganze dann wohl doch mit Canvas und Bitmaps mache. Hab auch ein Tutorial dazu gefunden, habs aber noch nicht so ganz verstamden... |
Re: Objekt von TShape ableiten
Zitat:
Delphi-Quellcode:
liste.add(Tmyklasse.create(self));
Tmyklasse(liste[liste.count-1]).SetBounds(10,10,10,10); Tmyklasse(liste[liste.count-1]).Parent := Self; |
Re: Objekt von TShape ableiten
super, funktioniert. dankeschön :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:30 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 by Thomas Breitkreuz