AGB  ·  Datenschutz  ·  Impressum  







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

Timer in Klassen mehrmals verwenden.

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

n/a Beiträge
 
#1

Timer in Klassen mehrmals verwenden.

  Alt 1. Okt 2006, 22:45
Hallo ihr,

komme hier grad nicht weiter und brauch eure hilfe.

Zu meinem Programm: Ich möchte durch eingabe zweier Koordinaten eine Position für einen Strich festlegen, welcher nach Mouseklick auf "Zeichnen", dann bei Mouseklick auf "vergrößern" sich immer mehr vergrößert...
Bei Buttonklick "Zeichnen" soll jedesmal ein neuer strich mit einem neuen timer erstellt werden.


Mein Problem liegt in der verwendung von timern bei klassen.

wo kann der fehler liegen? Bitte helfen

Delphi-Quellcode:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Image1: TImage;
    btvergroessern: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

type
  TWindradTimer = class (TTimer)
  public
    constructor Create (AOwner:TComponent);override;
    procedure Bild(x1,y1:integer);
end;


var
  Form1: TForm1;
  x1,y1,x2:integer;
  Timer1:TWindradTimer;
implementation

{$R *.DFM}

constructor TWindradTimer.Create (AOwner:TComponent);
begin
  inherited Create (AOwner);
  x2:=x2+1;
end;

procedure TWindradTimer.Bild(x1,y1:integer);
begin

  with Form1.Image1.Canvas do begin
  MoveTo(x1,y1);
  LineTo(x2,y1);
  end;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Timer1:=TWindradTimer.Create(Form1);
  Timer1.Bild(StrToInt(Edit1.text),StrToInt(Edit2.text));

end;

procedure TForm1.FormActivate(Sender: TObject);
begin
 x2:=1;
end;

end.
Angehängte Dateien
Dateityp: zip timertest2_210.zip (171,2 KB, 4x aufgerufen)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Timer in Klassen mehrmals verwenden.

  Alt 1. Okt 2006, 22:53
Es ist sehr gefährlich in Klassen auf gloable Variablen der Unit zuzugreifen ( x2, Form1).
Deshalb würde ich x2 dem Konstruktor übergeben und Form1 durch Parent ersetzen ( und den dann setzen).
Zu was brauchst du den Timer? Was soll er machen?
Markus Kinzler
  Mit Zitat antworten Zitat
fabgo
(Gast)

n/a Beiträge
 
#3

Re: Timer in Klassen mehrmals verwenden.

  Alt 1. Okt 2006, 22:56
der timer soll den strich vergrößern...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Timer in Klassen mehrmals verwenden.

  Alt 1. Okt 2006, 23:09
In deinem code macht er aber garnichts.
Markus Kinzler
  Mit Zitat antworten Zitat
2. Okt 2006, 07:50
Dieses Thema wurde von "Phoenix" von "Object-Pascal / Delphi-Language" nach "VCL / WinForms / Controls" verschoben.
Ich will ja eigentlich nicht kleinlich sein, aber der TTimer ist schon ne VCL-Komponente.
fabgo
(Gast)

n/a Beiträge
 
#6

Re: Timer in Klassen mehrmals verwenden.

  Alt 2. Okt 2006, 08:11
ja, und meine frage ist ja genau "warum nicht?" könnt ihr mir sagen, wie ich das dann machen muss?
ich komm hier nicht weiter...wär echt super...
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.607 Beiträge
 
#7

Re: Timer in Klassen mehrmals verwenden.

  Alt 2. Okt 2006, 08:15
Deinem Timer wurde gar keine Funktion zugewiesen die genau dann ausgeführt werden soll wenn er tickt.

Ein Beispiel wie das geht ist grad zufällig in diesem Thread zu sehen - wenn auch mit Schreibfehler

Edit Nachtrag: Such auch mal nach Hier im Forum suchenEvent zuweisen hier in der DP bzw. nach Hier im Forum suchenTTimer. Da findest Du eigentlich genug Codebeispiele die Dir weiterhelfen dürften.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
fabgo
(Gast)

n/a Beiträge
 
#8

Re: Timer in Klassen mehrmals verwenden.

  Alt 2. Okt 2006, 08:56
ok, vielen dank erstmal.
  Mit Zitat antworten Zitat
fabgo
(Gast)

n/a Beiträge
 
#9

Re: Timer in Klassen mehrmals verwenden.

  Alt 2. Okt 2006, 10:03
ja, jetzt habe ich es genau so gemacht, wie in dem genannten thread...

wenn ich aber jetzt auf meinen Button klicke, kommt ein Zugriffsfehler.


meine definierte Klasse:
Delphi-Quellcode:
type
  TWindradTimer = class (TTimer)
  public
    constructor Create (AOwner:TComponent);override;
    procedure OnTimerEvent(Sender:TObject);
end;
Delphi-Quellcode:
constructor TWindradTimer.Create (AOwner:TComponent); // timer wird erstellt
begin
  Timer1.Enabled:=True;
  Timer1.OnTimer:=OnTimerEvent;
  inherited Create (AOwner);

end;

procedure TWindradTimer.OnTimerEvent(Sender:TObject);
begin
  x2:=x2+1;
  with Form1.Image1.Canvas do begin
    MoveTo(5,5);
    LineTo(x2,5);
  end;
end;
Delphi-Quellcode:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Timer1:=TWindradTimer.Create(Form1);
end;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Timer in Klassen mehrmals verwenden.

  Alt 2. Okt 2006, 10:09
Delphi-Quellcode:
constructor TWindradTimer.Create (AOwner:TComponent); // timer wird erstellt
begin
  inherited Create (AOwner);
  Enabled:=True;
  OnTimer:=OnTimerEvent;
end;
Und jetzt würde ich, wie ich oben schon mal schrieb, den Verweise auf die globalen Variablen entfernen.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:41 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