Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Globale Funktion Zugriff auf Timer in Class (https://www.delphipraxis.net/124760-globale-funktion-zugriff-auf-timer-class.html)

schwa226 24. Nov 2008 20:32


Globale Funktion Zugriff auf Timer in Class
 
Hi,

hab hier nun eine kleine (warscheinlich) einfach Frage eines Beginners:

Ich habe einen Timer:
Delphi-Quellcode:
procedure TfrmMain.DelayTimer(Sender: TObject);
begin

Delay.Enabled := False;

end;
dieser is hier definiert:

Delphi-Quellcode:
  TfrmMain = class(TForm)
    DelayShortcut2: TTimer;

  published
        procedure DelayShortcut2Timer(Sender: TObject);
  end
nun habe ich eine globale Funktion:

Delphi-Quellcode:
function DoMyThing(var i:Integer):Boolean;
begin


end;
In dieser Funktion will ich nun den Enable + Interval setzen. Aber natürlich kennt er DelayShortcut2 in der Funktion nicht.

1. Ansatz war die DoMyThing Funktion auch in die TfrmMain Class zu bringen.

Dann habe ich aber das Problem, dass ich noch eine andere Class habe die auch die DoMyThing Funktion aufrufen soll.

Dies geht dann aber auch nicht mehr.

Komm nicht weiter...

mkinzler 24. Nov 2008 20:33

Re: Globale Funktion Zugriff auf Timer in Class
 
Erweitere die freie Funktion durch einen Parameter für die Form.

Aber geanu verstehe ich dein Problem nicht.

oki 24. Nov 2008 21:18

Re: Globale Funktion Zugriff auf Timer in Class
 
entweder du machst deine Funktion zu einer Funktion deiner Klasse, oder du greifst in der Funktion über dem Klassenvariable auf den Timer direkt zu
Delphi-Quellcode:
  TfrmMain.DelayShortcut2.Enabled := False;
  ....
oder du übergibst als weiteren Parameter der Funktion den Timer.
Delphi-Quellcode:
function DoMyThing(var i:Integer; ATimer : TTimer):Boolean;
begin
  ATimer.Enabled := True;
  ...
end;
Ich würde grundsätzlich prüfen, ob die Funktion unbedingt global sein muss. Wenn ja, würde ich die 3. Variante bevorzugen. Wenn nein, die erste. Zweite ist nicht sehr elegant und imho eher schlechter Code.

Gruß oki

Apollonius 24. Nov 2008 21:22

Re: Globale Funktion Zugriff auf Timer in Class
 
In deiner zweiten Lösung müsstest du auf die Instanz zugreifen:
Delphi-Quellcode:
frmMain.DelayShortcur2.Enabled := False;

oki 24. Nov 2008 21:25

Re: Globale Funktion Zugriff auf Timer in Class
 
Ups, sorry, Copy&Waste :oops:

so wars auch gemeint.
Delphi-Quellcode:
frmMain.DelayShortcur2.Enabled := False;
Dank für die Berichtigung.

Gruß oki

schwa226 24. Nov 2008 22:23

Re: Globale Funktion Zugriff auf Timer in Class
 
Danke für die super schnelle Hilfe!!

Manchmal bleib ich einfach bei den einfachsten Dingen hängen... :spin2:


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