Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Prism Wohin mit "Timer1.Enabled := false"? (https://www.delphipraxis.net/75220-wohin-mit-timer1-enabled-%3D-false.html)

gfjs 16. Aug 2006 04:06


Wohin mit "Timer1.Enabled := false"?
 
Guten Morgen, Allerseits.

Delphi-Quellcode:
procedure TWinForm.Timer1_Tick(sender: System.Object; e: System.EventArgs);
begin
  MyForm := TwinForm1.Create;
  MyForm.ShowDialog;
  MyForm.BringToFront;
  Timer1.Enabled := false;
end;
führt dazu, dass alle 5 Sekunden ein neues Formular erzeugt wird. Die einzige Erklärung, die mir einfällt: "Timer1.Enabled := false" muss woanders hin. - Nur wo?

Ich wünsche Euch allen noch einen schönen Tag.

mfg gfjs

PS. "Timer1.Enabled := true" steht in TWinForm.Create.

faux 16. Aug 2006 04:45

Re: Wohin mit "Timer1.Enabled := false"?
 
Hallo!

Ja, das ist klar, dass der Code bei jedem Aufruf eine neue Form generiert. Was genau hast du denn vor, bzw. was soll der Code denn machen?!
Ich verstehe das Problem nicht so wirklich.

Grüße
Faux

gfjs 16. Aug 2006 04:54

Re: Wohin mit "Timer1.Enabled := false"?
 
@ Manuel

Guten Morgen und vielen Dank für Deine schnelle Anwort.

Das Startformular (TWinForm)soll 5 Sekunden lang mit einem Panel mit Begrüßungstext zu sehen sein. Dann soll das zweite Formular modal angezeigt werden. Indem ich in TWinForm.Timer1_Tick den Timer1 disable, dachte ich eigentlich, dass nur ein neues Formular erzeugt wird - scheint aber nicht so zu sein.

Mir ist zwar klar, dass TWinForm.Timer1_Tick bei jedem Aufruf ein neues Formular erzeugt. Ich wollte das ja auch nur einmal aufrufen und dachte, das würde ich mit "Timer1.Enabled := false" an dieser Stelle erreichen.

Wie muss ich das machen?

mfg gfjs

Onkelrossie 16. Aug 2006 04:55

Re: Wohin mit "Timer1.Enabled := false"?
 
Zitat:

Zitat von gfjs
PS. "Timer1.Enabled := true" steht in TWinForm.Create.

Morgen, gfjs,
nimm doch einfach das Timer1.Enabled raus und stell den Timer im ObjectInspector auf enabled und schon gehts.


HG
Onkelrossie

faux 16. Aug 2006 05:04

Re: Wohin mit "Timer1.Enabled := false"?
 
Zitat:

Zitat von gfjs
Das Startformular (TWinForm)soll 5 Sekunden lang mit einem Panel mit Begrüßungstext zu sehen sein. Dann soll das zweite Formular modal angezeigt werden.

Naja, dann würde ich dir fast von einem Timer abraten, und dir empfehlen eine Pause im Programmablauf einzubauen (ev. mit Thread.Sleep() ).

Grüße
Faux

gfjs 16. Aug 2006 05:17

Re: Wohin mit "Timer1.Enabled := false"?
 
@ Onkelrossie.

Geht leider nicht! Es werden weiterhin ständig neue Formulare erzeugt.

@ Manuel.

"Thread.Sleep" bringt die Fehlermeldung "Nicht deklarierter Bezeichner Thread bzw. Sleep". Muss ich evtl. noch einen Namespace ins Uses aufnehmen und ggf. welchen?

mfg gfjs

mbamler 16. Aug 2006 06:13

Re: Wohin mit "Timer1.Enabled := false"?
 
Zitat:

Zitat von gfjs
Guten Morgen, Allerseits.

Delphi-Quellcode:
procedure TWinForm.Timer1_Tick(sender: System.Object; e: System.EventArgs);
begin
  MyForm := TwinForm1.Create;
  MyForm.ShowDialog;
  MyForm.BringToFront;
  Timer1.Enabled := false;
end;
führt dazu, dass alle 5 Sekunden ein neues Formular erzeugt wird. Die einzige Erklärung, die mir einfällt: "Timer1.Enabled := false" muss woanders hin. - Nur wo?

Ich wünsche Euch allen noch einen schönen Tag.

mfg gfjs

PS. "Timer1.Enabled := true" steht in TWinForm.Create.

...Ohne das jetzt im Detail geprüft zu haben, fällt mir auf die Schnelle ein:

Delphi-Quellcode:
procedure TWinForm.Timer1_Tick(sender: System.Object; e: System.EventArgs);
begin
  MyForm := TwinForm1.Create;
  MyForm.ShowDialog;
  MyForm.BringToFront;
  MyForm.Enabled := false; //auch den Timer der neu erzeugten Form deaktivieren ...
  Timer1.Enabled := false;
end;
Gruß
Matthias

mbamler 16. Aug 2006 06:14

Re: Wohin mit "Timer1.Enabled := false"?
 
ich meine natürlich :

Delphi-Quellcode:
procedure TWinForm.Timer1_Tick(sender: System.Object; e: System.EventArgs);
begin
  MyForm := TwinForm1.Create;
  MyForm.ShowDialog;
  MyForm.BringToFront;
  MyForm.Timer1.Enabled := false; //auch den Timer der neu erzeugten Form deaktivieren ...
  Timer1.Enabled := false;
end;
Gruß
Matthias

gfjs 16. Aug 2006 06:23

Re: Wohin mit "Timer1.Enabled := false"?
 
@ Matthias

In MyForm ist kein Timer enthalten, da MyForm nicht von TWinForm abgeleitet ist. Ich habe mit Datei/Weitere/Neue Dateien ein zusätzliches Formular (TWinForm1) eingefügt, von dem in TWinForm.Timer1_Tick eine Instanz erzeugt wird.

mfg gfjs

dfried 16. Aug 2006 06:37

Re: Wohin mit "Timer1.Enabled := false"?
 
Versuch es mal so:

Delphi-Quellcode:
procedure TWinForm.Timer1_Tick(sender: System.Object; e: System.EventArgs);
begin
  Timer1.Enabled := false;
  MyForm := TwinForm1.Create;
  MyForm.ShowDialog;
  MyForm.BringToFront;
end;
Das ShowDialog zeigt das Fenster doch Modal an, wenn ich richtig weis. Somit kommt er nie zum Timer1.Enabled, oder?


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:28 Uhr.
Seite 1 von 2  1 2      

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