Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Timereigenschaften in selbsterstellter procedure ändern (https://www.delphipraxis.net/23152-timereigenschaften-selbsterstellter-procedure-aendern.html)

ISAS 29. Mai 2004 17:52


Timereigenschaften in selbsterstellter procedure ändern
 
Ich glaube, dass leichteste wäre, das ganze einfach mit Quellcode zu erklären und deshalb werd ich das jetzt auch so machen :coder: :

Delphi-Quellcode:
TKuken = class(TImageSprite)
  Public
    Constructor Create(aparent:Tsprite);override;
    Procedure right;
  end;
Es geht um Procedure right, welche später so aussieht: :nerd:

Delphi-Quellcode:
procedure TKuken.right;
begin
Timer1.enabled:=true;
end;
Wenn ich das nun starten will, dann kommt die Fehlermeldung und die Zeile wird rot makiert :cry: :
[Fehler] Unit1.pas(170): Undefinierter Bezeichner: 'Timer1'

Habe auch schon probiert, einfach Procedure right(Sender: TObject) bei TKuken zu schreiben, hat aber trotzdem nicht geklappt.

Wie kann ich also den Timer in eine selbsgeschriebene procedur einbinden?? :?:

PS: Habe es auch schon das versucht:

Delphi-Quellcode:
procedure TKuken.right;
var Timer1:TTimer;
begin
Timer1.enabled:=true;
end;
Aber dann kommt folgende Nachricht:
[Warnung] Unit1.pas(172): Variable 'Timer1' wurde wahrscheinlich nicht Initialisiert

SirThornberry 29. Mai 2004 18:00

Re: Timereigenschaften in selbsterstellter procedure ändern
 
du hast ja timer1 auch nicht definiert
Delphi-Quellcode:
  TKuken = class(TImageSprite)
  private
    Timer1: TTimer;
  Public
    Constructor Create(aparent:Tsprite);override;
    Procedure right;
  end;
und im constructor dann noch
Delphi-Quellcode:
Timer1 := TTimer.Create;
[...]
und im Destructor dann
Delphi-Quellcode:
Timer1.Free;

Nikolas 29. Mai 2004 18:01

Re: Timereigenschaften in selbsterstellter procedure ändern
 
Probier's mal mit Form1.timer1.enabled aus.
Aber: Sowas ist nicht gerade schön. Um nicht zu sagen ziemlich hässlich. Falls du jemals wieder diese Procedure benutzen willst (oder jemandem geben willst) wirst du sie (fast) nie benutzen können, da du dann immer eine Komponente mit diesem Namen auf einem Formular mit diesem Namen bräuchtest. Also übergib der Procedure lieber einen Timer, dessen Namen du dann immer wenn du diese Procedure nutzt, ändern kannst, also sowas:
Delphi-Quellcode:
TKuken = class(TImageSprite)
  Public
    Constructor Create(aparent:Tsprite);override;
    Procedure right(timer: Ttimer);
  end;
// ungeteste, sollte aber funzen

ISAS 29. Mai 2004 19:01

Re: Timereigenschaften in selbsterstellter procedure ändern
 
Danke, die Antworten sind ja ziemlich schnell gekommen.
Hab zurest herumprobiert beim ertsen Vorschlag herumprobiert, aber irgendwie hats nie so richtig geklappt. Zum Starten ist es meistens, wenn ich was verändert habe, gegangen, aber irgendeine Fehlermeldung kam immer.

Dann hab ich einfach die 2 Lösung mit Form1.Timer1.... versucht und es ging. An das habe ich gar nicht gedacht, aber wie heisst es so schon. Die einfachste Lösung ist immer die Beste!!

Nikolas 29. Mai 2004 19:37

Re: Timereigenschaften in selbsterstellter procedure ändern
 
Das mit Form1.Timer1. ist sicher nicht die Beste Lösung aus den o.g. Gründen. Übergib lieber den gewünschten Timer als Parameter und bearbeite ihn dann.
Delphi-Quellcode:
TKuken = class(TImageSprite)
  Public
    Constructor Create(aparent:Tsprite); override;
    Procedure right(timer: Ttimer);
  end;
.
.
procedure TKuken.rigth(timer: Ttimer);
begin
timer.enabled:=true;
end;
.
.
//aufrufen:
VarTKuken.right(Form1.Timer1);


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:50 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