Einzelnen Beitrag anzeigen

Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
205 Beiträge
 
Delphi 10.4 Sydney
 
#1

Ein Panel an eine Instanz einer Klasse TBall übergeben

  Alt 9. Mär 2022, 17:29
Delphi-Version: 10.4 Sydney
Hallo Delphi Freunde
ich habe eine Klasse TBall erstellt, die soll einen Ball auf einem übergebenen TPanel fliegen lassen.
Das Aufrufende Form mit dem Panel1 soll eine Instanz von TBall erstellen und das Panel an die Klasse TBall übergeben.
In TBall erzeuge ich einen Timer der den Ball fliegen lässt (Kreis prallt an den Rändern ab).

1. Ich habe versucht das Panel als Property zu übergeben (BallA:=TBall.Create; BallA.Panel:=Panel1; BallA.Start)
über BallA.Start soll sich der Ball in dem Panel bewegen.
Es ist aber nicht im Panel zu sehen.
Wie würdet ihr das übergeben des Panels machen, kann ich das "übergeben" eventuell auch mit dem Create machen? (BallA:=TBall.Create(Panel1)
Das hat, bei mir, in dieser Syntax so nicht funktioniert.

2. Geht das überhaupt, dass der Timer den ich in der Klasse Ball erzeuge unabhängig läuft und ich mit jeder erzeugten Instanz von TBall ein eigenes Intervall im Timer setzen kann?
Sollte doch funktionieren.
Ich habe jedoch gelesen, dass das Timer-Objekt nicht Threadsave ist, somit kann ich die Erzeugten Bälle dann wohl nicht in einen eigenen Thread auslagern, nehme ich an.
Oder gibt es dafür eine Lösung?

3. Im Constructor Create funktioniert keinen Haltepunkt. Erst wenn ich die Initialisierung meiner Variablen in eine procedure Init auslagere und diese aufrufe, dann bleibt das Prgramm beim Haltepunkt im Init stehen. Ist das so normal?
Angehängte Dateien
Dateityp: pas uMain.pas (847 Bytes, 0x aufgerufen)
Dateityp: pas uBall.pas (5,2 KB, 0x aufgerufen)

Geändert von Smiley (10. Mär 2022 um 13:26 Uhr) Grund: Unit hinzugefügt
  Mit Zitat antworten Zitat