AGB  ·  Datenschutz  ·  Impressum  







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

OnTimer wird nicht ausgelöst

Ein Thema von Chemiker · begonnen am 27. Apr 2009 · letzter Beitrag vom 29. Apr 2009
 
nahpets
(Gast)

n/a Beiträge
 
#16

Re: OnTimer wird nicht ausgelöst

  Alt 28. Apr 2009, 10:21
Hallo,

Delphi-Quellcode:
procedure TAbtfrageClass.MSErmitteln;
var
  I: integer;
begin
  i := 0;
  with FpFIBDataSetAbfrage do
  begin
    Close;
    SelectSQL.Text:= 'SELECT DISTINCT mw_msid FROM mw_tabelle';
Application.ProcessMessages;
    GenerateSQLs; // Wie lange braucht der? Wenn lange, dann dahinter ein
Application.ProcessMessages;
    Open; // Solange der ackert, wird's vermutlich nichts mit dem Aktuallisieren der Gauge.
Application.ProcessMessages;
    while not EOF do
    begin
        // Die MSId-Bezeichnung aus der Datenbank wird in einer StringList
        // gespeichert. Diese Bezeichung ist auch gleichzeitig die Spalten-
        // bezeichnung für die PIVOT-Tabelle.
      FMSListe.add(FieldByName('mw_msid').AsString);
      next;
      Inc(i);
      // Zeit- und datenmengenabhängig größeren oder kleineren Wert nehmen.
      If i Mod 100 = 0 then begin
        Application.ProcessMessages;
      end;
    end;
  end;
end;
Wie stehen die Start- und Endewerte für frmWarnhinweis.frmWarnung.Gauge1?
Woher weiß die Routine, wann sie den Endewert erreicht hat um ggfls. wieder von vorne anzufangen. Sind Start- und Endewert eventuell so gewählt, dass ein Progress + 10 eine so kleine Veränderung der Gauge liefert, dass der Fortschritt nur einfach nicht zu sehen ist?

Alternative: Lass den Timer weg und rufe die MethodeTimer1Timer(Sender: TObject); in MSErmitteln auf:
Delphi-Quellcode:
procedure TAbtfrageClass.MSErmitteln;
var
  I: integer;
begin
  i := 0;
  with FpFIBDataSetAbfrage do
  begin
    Close;
    SelectSQL.Text:= 'SELECT DISTINCT mw_msid FROM mw_tabelle';
Application.ProcessMessages;
    GenerateSQLs; // Wie lange braucht der? Wenn lange, dann dahinter ein
Application.ProcessMessages;
    Open;
Application.ProcessMessages;
    while not EOF do
    begin
        // Die MSId-Bezeichnung aus der Datenbank wird in einer StringList
        // gespeichert. Diese Bezeichung ist auch gleichzeitig die Spalten-
        // bezeichnung für die PIVOT-Tabelle.
      FMSListe.add(FieldByName('mw_msid').AsString);
      next;
      Inc(i);
      // Zeit- und datenmengenabhängig größeren oder kleineren Wert nehmen.
      If i Mod 100 = 0 then begin
        Timer1Timer(Nil); // Gaugeposition verändern.
        Application.ProcessMessages;
      end;
    end;
  end;
end;
  Mit Zitat antworten Zitat
 


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 05:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz