Announcement

Collapse
No announcement yet.

"Sanduhr" oder "Bitte warten", aber wie realisieren?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • "Sanduhr" oder "Bitte warten", aber wie realisieren?

    Ich habe in einer Anwendung einen Chart mit 16 Kurven.
    Diese werden nach Auswahl eines Datums mit Daten aus einer Datenbank "errechnet".
    Dies dauert schon mal bis zu 15 Sekunden.
    (geht nicht anders)

    Ich möchte nun erreichen, dass der Anwender nicht dauernd rumklickt.
    Dazu habe ich versucht, ein modales Fenster einzublenden, bis der Vorgang abgeschlossen ist.
    Leider wird der Vorgang nicht ausgeführt, solange das modale Fenster da ist.

    Vielleicht zäume ich das Pferd wieder von der falschen Seite auf?

    Ich hoffe auf gute Ratschläge
    Danke.

  • #2
    Würde es auch reichen den Wartecurser (Screen.Cursor) zu setzen?

    Ansonsten wird es schwer da du keinerlei GUI-Aktivitäten in einen Thread verlagern kannst.
    Was genau dauert so lang? Datenberechnung oder Aufbereitung der Darstellung?

    Comment


    • #3
      Es werden viele Daten (Gleitkommazahlen und Binärwerte) in einer Datenbank mit Zeitstempel abgelegt (Takt: 1-15min).
      Zum Zeitpunkt des Speicherns weiß noch keiner ob und wie die Daten gebraucht werden.
      Unser Kunden kann dann selbst Grafiken zusamenstellen.
      Also erst Datenbank (..GB) durchsuchen und dann noch Grafik erstellen.

      Comment


      • #4
        Die DB-Abfrage könnte man in einen Thread verlagern. Hierzu wird es aber bei den meisten DB-Komponenten nötig sein das auch die DB-Connection im Thread erzeugt wurde.
        Dann Abfrage durchführen und währenddessen im Hauptthead-Wartedialog anzeigen. Wenn Daten da sind diese dann im Hauptthread visualisieren.

        Comment


        • #5
          Muß ich mir nochmal ansehen.
          Danke.

          Comment


          • #6
            hallo,
            vielleicht meinst du das

            Screen.Cursors[crSQLWait] := Screen.Cursors[crHourGlass];

            ... hier deine Aktion

            Screen.Cursors[crSQLWait] := Screen.Cursors[crDefault];
            Gruß Oswald

            Comment

            Working...
            X