Delphi-PRAXiS
Seite 1 von 3  1 23      

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/)
-   -   Delphi OnTimer wird nicht ausgelöst (https://www.delphipraxis.net/133201-ontimer-wird-nicht-ausgeloest.html)

Chemiker 27. Apr 2009 20:21


OnTimer wird nicht ausgelöst
 
Hallo,

Delphi-Quellcode:
procedure TfrmExcelDateiExportieren.btPivotTabelleZeigenClick(Sender: TObject);
begin
  Timer1.Enabled:= TRUE;
  frmWarnhinweis.frmWarnung.Show;
  frmWarnhinweis.frmWarnung.Refresh;  
  FAbfrageClass.MSId:= '%';
  FAbfrageClass.MSErmitteln;
  Timer1.Enabled:= FALSE;
  frmWarnhinweis.frmWarnung.close;
end;
Mit dieser Procedure wird ein Form mit einer Gauge dargestellt. Gauge .Progress soll dann über einen Timer weitergestellt werden.

Delphi-Quellcode:
procedure TfrmExcelDateiExportieren.Timer1Timer(Sender: TObject);
begin
  frmWarnhinweis.frmWarnung.Gauge1.Progress:= frmWarnhinweis.frmWarnung.Gauge1.Progress+10;
  frmWarnhinweis.frmWarnung.Refresh;
end;
Leider wird das OnTimer-Ereignis aber nicht ausgelöst.

Wie kann man das ändern?

Bis bald Chemiker

Valle 27. Apr 2009 20:27

Re: OnTimer wird nicht ausgelöst
 
Blockiert irgendeine der Anweisungen in 'TfrmExcelDateiExportieren.btPivotTabelleZeigenCli ck' denn deine Anwendung? Wenn nicht, dann ist der Fehler ja gefunden, da du gleich anschließend den Timer ja wieder deaktivierst. Wenn doch, dann ist der Fehler eigentlich auch gefunden. *g* Solange der Hauptthread der Anwendung blockiert ist, wird auch der Timer nicht funktionieren. Das wäre dann ein Fall für Hier im Forum suchenThreading. ;-)

Mit freundlichen Grüßen,

Valle

Hobby-Programmierer 27. Apr 2009 20:35

Re: OnTimer wird nicht ausgelöst
 
Vielleicht hilft ja auch ein
Delphi-Quellcode:
application.ProcessMessages
an der richtigen Stelle der ersten Prozedur.

Chemiker 27. Apr 2009 20:40

Re: OnTimer wird nicht ausgelöst
 
Hallo,

@Valle:
mit FAbfrageClass.MSErmitteln wird eine Datenbankabfrage durchgeführt und weil das solange dauert, sollte ein Formular einen Warnhinweis ausgeben und Gauge weiter gezählt werden.

@Hobby-Programmierer:
mehre Stellen probiert, leider kein Effekt.


Bis bald Chemiker

Valle 27. Apr 2009 20:43

Re: OnTimer wird nicht ausgelöst
 
Dann brauchst du Threading. Die Datenbankabfrage wird deine Anwendung komplett blockieren, was auch den Aufruf eines Timers unmöglich macht. Du kannst nun entweder das Warte-Fenster in einen Thread auslagern (würde ich aber nicht machen), müsstest dann aber schauen, dass du keine Probleme mit der VLC bekommst, da sie nicht threadsicher ist. Ansonsten würde ich empfehlen, die Datenbankabfrage in einen Thread auszulagern. Dabei solltest du dich unbedingt noch informieren, ob deine Datenbank überhaupt threadsicher ist. Dabei kann ich dir aber leider nicht helfen; ich kann kein Delphi. 8)

Mit freundlichen Grüßen,

Valle

Hobby-Programmierer 27. Apr 2009 20:48

Re: OnTimer wird nicht ausgelöst
 
Ist das Timer-Event mit dem Timer verbunden? Ist der Interval zu gross gewählt, sprich : ist die Datenspeicherung schneller wie der Interval?

Valle 27. Apr 2009 20:59

Re: OnTimer wird nicht ausgelöst
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Hobby-Programmierer
Ist das Timer-Event mit dem Timer verbunden? Ist der Interval zu gross gewählt, sprich : ist die Datenspeicherung schneller wie der Interval?

... :gruebel: ...

Es funktioniert nicht! Der Timer wird nicht aufgerufen in der Zeit, da hilft jedes ProcessMessages
nichts. Kleines Beispiel im Anhang; zusammengeschustert aus dem, was ich noch kann.

Mit freundlichen Grüßen,

Valle

Chemiker 27. Apr 2009 21:14

Re: OnTimer wird nicht ausgelöst
 
Hallo,

Zitat:

Zitat von valle
Dabei kann ich dir aber leider nicht helfen; ich kann kein Delphi.

Wie?

@Hobby-Programmierer: der Timer ist richtig mit dem OnTimer-Event verbunden, mit verschiedenen Intervallen versucht, kein Ergebnis.

Bis bald Chemiker

Valle 27. Apr 2009 21:18

Re: OnTimer wird nicht ausgelöst
 
Zitat:

Zitat von Chemiker
Wie?


Ich habe mal vor einigen Jahren in einer AG in der Schule Delphi gelernt. Da ich aber recht schnell an unserem Lehrer vorbei war und mich auch eher für andere Sprachen interessierte, verlor ich Delphi schnell aus dem Auge und habe es jetzt schon ewig nicht mehr produktiv eingesetzt. Ich kann eben nur noch minimales Zeug in Delphi. ;-) Jetzt liegt mein Fokus auf Python und PHP, ab- und zu mal C++.

Mit freundlichen Grüßen,

Valle

bigben37 27. Apr 2009 21:26

Re: OnTimer wird nicht ausgelöst
 
delay ist dein Freund. Damit werden andere Prozesse weiterhin verarbeitet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:18 Uhr.
Seite 1 von 3  1 23      

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