AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Timer in Klassen mehrmals verwenden.

Ein Thema von fabgo · begonnen am 1. Okt 2006 · letzter Beitrag vom 2. Okt 2006
Antwort Antwort
Seite 2 von 2     12
fabgo
(Gast)

n/a Beiträge
 
#11

Re: Timer in Klassen mehrmals verwenden.

  Alt 2. Okt 2006, 11:17
danke, jetzt funktioniert ist.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.859 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: Timer in Klassen mehrmals verwenden.

  Alt 2. Okt 2006, 12:08
Nach Entfernung von Globalreferenzen:
Delphi-Quellcode:
type
  TWindradTimer = class (TTimer)
  private
    FCanvas: TCanvas;
  public
    constructor Create (AOwner:TComponent);override;
    constructor Create (AOwner:TComponent; Canvas: TCanvas);
    procedure OnTimerEvent(Sender:TObject);
  published
    property Canvas: TCanvas read FCanvas write FCanvas;
 end;
...
constructor TWindradTimer.Create (AOwner:TComponent; Canvas: TCanvas; ) // timer wird erstellt
begin
  inherited Create (AOwner);
  Enabled:=True;
  OnTimer:=OnTimerEvent;
  self.Canvas ;= Canvas;
end;

procedure TWindradTimer.OnTimerEvent(Sender:TObject);
begin
  x2:=x2+1;
  with self.Canvas do begin
    MoveTo(5,5);
    LineTo(x2,5);
  end;
end;

...

procedure TForm1.Button1Click(Sender: TObject);
begin
  Timer1:=TWindradTimer.Create(Form1, Self.Canvas);
end;
Markus Kinzler
  Mit Zitat antworten Zitat
fabgo
(Gast)

n/a Beiträge
 
#13

Re: Timer in Klassen mehrmals verwenden.

  Alt 2. Okt 2006, 12:13
danke nochmal
  Mit Zitat antworten Zitat
fabgo
(Gast)

n/a Beiträge
 
#14

Re: Timer in Klassen mehrmals verwenden.

  Alt 2. Okt 2006, 14:44
Ziel meines Programms ist natürlich das gleichzeite laufen der striche, also die gleichzeitige verwendung der timer...

wenn ich also für meine Koordinaten jeweils die in "edit1" und "edit2" eingetippten werte verwende, sollten diese striche dann aber auch alle gleichzeitig weiterlaufen und nicht aufhören...dafür ja schließlich die verwendung von klassen.

aber wie mach ich das jetzt?

wenn ich das folgendermaßen mache, setzt der immer einen neuen startwert, läuft aber dann immer nur von den neuen koordinaten weiter. und nicht die alten und die neuen striche gemeinsam!

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Timer1:=TWindradTimer.Create(Form1, Self.Canvas);
  x1:=StrToInt(form1.edit1.text);
  y1:=StrToInt(form1.edit2.text);
  x2:=x1;
end;
gruß fabgo
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.859 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: Timer in Klassen mehrmals verwenden.

  Alt 2. Okt 2006, 16:21
das hab ich vorhin übersehen, du verwendest ja in der Zeichenroutine auch noch globale Variablen.
Implementiere diese auch noch als properties und erweitere den Konstruktor dementsprechend.
Markus Kinzler
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.859 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: Timer in Klassen mehrmals verwenden.

  Alt 2. Okt 2006, 17:03
Delphi-Quellcode:
type
  TWindradTimer = class (TTimer)
  private
    FCanvas: TCanvas;
    Fx1: Integer;
  public
    constructor Create (AOwner:TComponent);override;
    constructor Create (AOwner:TComponent; Canvas: TCanvas; startx: Integer);
    procedure setX1( value: Integer);
    procedure OnTimerEvent(Sender:TObject);
  published
    property Canvas: TCanvas read FCanvas write FCanvas;
    property x1: Integer read Fx1 write setX1;
end;
...
constructor TWindradTimer.Create (AOwner:TComponent; Canvas: TCanvas; startx: Integer ) // timer wird erstellt
begin
  inherited Create (AOwner);
  Enabled:=True;
  OnTimer:=OnTimerEvent;
  self.Canvas := Canvas;
  self.x1 := startx;
end;

procedure TWindradTimer.OnTimerEvent(Sender:TObject);
begin
  x1:=x1+1;
  with self.Canvas do begin
    MoveTo(5,5);
    LineTo(x1,5);
  end;
end;

...

procedure TForm1.Button1Click(Sender: TObject);
begin
   x1:=StrToInt(form1.edit1.text);
   y1:=StrToInt(form1.edit2.text);
  Timer1:=TWindradTimer.Create(Form1, Self.Canvas, x1);
end;
Markus Kinzler
  Mit Zitat antworten Zitat
fabgo
(Gast)

n/a Beiträge
 
#17

Re: Timer in Klassen mehrmals verwenden.

  Alt 2. Okt 2006, 17:31
wo verwendest du die procedure setX1( value: Integer); ???

und was soll sie bewirken?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.859 Beiträge
 
Delphi 11 Alexandria
 
#18

Re: Timer in Klassen mehrmals verwenden.

  Alt 2. Okt 2006, 17:34
Diese hab ich wohl vergessen. In dieser kann man Prüfungen durchführen bevor man Werte in private Klassenmember übernimmt
Delphi-Quellcode:
procedure TWindradTimer.setX1( Value: Integer);
begin
    if value > 0 then // Hier noch mehr Überprüfungen möglich.
    Fx1 := Value;
end;
Markus Kinzler
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 19:39 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