AGB  ·  Datenschutz  ·  Impressum  







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

Objekt von TShape ableiten

Ein Thema von Antigo · begonnen am 31. Mär 2005 · letzter Beitrag vom 31. Mär 2005
Antwort Antwort
Antigo

Registriert seit: 14. Mär 2005
274 Beiträge
 
#1

Objekt von TShape ableiten

  Alt 31. Mär 2005, 12:41
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:
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;
und dann
Tmyklasse.erzeugen(1,0,10,10,10,5,5,self) und irgendetwas macht das programm dann auch, nur kein shape erstellen und anzeigen.


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
Michael
"How should I know if it works? That's what beta testers are for. I only coded it."
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

Re: Objekt von TShape ableiten

  Alt 31. Mär 2005, 13:39
Zitat:
Da mit canvas trotz doublebuffering zu heftiges flackern auftritt wollte ich das jetzt mit Shapes lösen.
Das ist definitiv der falsche Weg . Hast du Bitmaps benutzt? Ich denke nicht ².
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    [...]
  private
    MyKlasse: TMyKlasse;


[...]
   
begin
  MyKlasse := Tmyklasse.erzeugen(1,0,10,10,10,5,5,self);
Die Instanz sollte keine lokale Variable sein, sonst kannst du ja nicht mehr darauf zugreifen.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antigo

Registriert seit: 14. Mär 2005
274 Beiträge
 
#3

Re: Objekt von TShape ableiten

  Alt 31. Mär 2005, 13:45
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.
Michael
"How should I know if it works? That's what beta testers are for. I only coded it."
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#4

Re: Objekt von TShape ableiten

  Alt 31. Mär 2005, 14:01
Mehr Performance, kein Flimmern usw.
Paintbox und Image sind eigentlich nur zum Anzeigen eines Bildes da.
Zur der Instanz: Zeig mal etwas mehr Code.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antigo

Registriert seit: 14. Mär 2005
274 Beiträge
 
#5

Re: Objekt von TShape ableiten

  Alt 31. Mär 2005, 14:09
ok, global definiere ich:
var liste: TObjectlist; dann mache ich
Delphi-Quellcode:
  liste.add(Tmyklasse.create(self));
  Tmyklasse(liste[liste.count-1]).SetBounds(10,10,10,10);
Vorher mit Canvas hat das so geklappt. Und einen Fehler erhalte ich auch nicht.
Michael
"How should I know if it works? That's what beta testers are for. I only coded it."
  Mit Zitat antworten Zitat
Benutzerbild von gordon freeman
gordon freeman

Registriert seit: 28. Jun 2003
Ort: Gelsenkirchen
337 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Objekt von TShape ableiten

  Alt 31. Mär 2005, 14:34
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
visible := true; //Alternativ MyObject.Show kann auch nicht schaden.
  Mit Zitat antworten Zitat
Antigo

Registriert seit: 14. Mär 2005
274 Beiträge
 
#7

Re: Objekt von TShape ableiten

  Alt 31. Mär 2005, 14:49
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...
Michael
"How should I know if it works? That's what beta testers are for. I only coded it."
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#8

Re: Objekt von TShape ableiten

  Alt 31. Mär 2005, 14:59
Zitat von gordon freeman:
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.
Der Owner wird ja schon als Parameter im Konstruktor angegeben. Allerdings fehlt die Zuweisung des Parents .
Delphi-Quellcode:
liste.add(Tmyklasse.create(self));
Tmyklasse(liste[liste.count-1]).SetBounds(10,10,10,10);
Tmyklasse(liste[liste.count-1]).Parent := Self;
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antigo

Registriert seit: 14. Mär 2005
274 Beiträge
 
#9

Re: Objekt von TShape ableiten

  Alt 31. Mär 2005, 16:10
super, funktioniert. dankeschön
Michael
"How should I know if it works? That's what beta testers are for. I only coded it."
  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 22:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz