AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Dialog während Aufgabe anzeigen

Ein Thema von Marco Steinebach · begonnen am 16. Jul 2008 · letzter Beitrag vom 16. Jul 2008
Antwort Antwort
Marco Steinebach

Registriert seit: 4. Aug 2006
491 Beiträge
 
Delphi 5 Enterprise
 
#1

Dialog während Aufgabe anzeigen

  Alt 16. Jul 2008, 08:40
Hallo Delphianer,
schlagt mich nicht, ich hätte gern gesucht, mir ist nur nicht klar, nach was!
Folgendes, eigentlich Standard-Problem:
Ich Starte eine Aufgabe, in meinem Fall eine ganze Menge Dateien Scannen. Während des Scanns soll ein Dialogfeld angezeigt werden, meinetwegen mit Fortschrittsbalken, und, wenn der Scan fertig ist, schließt sich ds Dialogfeld wieder automatisch.
Ich suche einen Lösungsansatz, der auch der OOP entspricht.
Wie geht das: Timer, Ereignissteuerung, oder viel einfacher?
Eine Multi-Thread-Lösung macht hier keinen sinn, bevor die Dateien nämlich nicht gescannt sind, kann man sowieso nicht weiterarbeiten.
Und wer macht die Kommunikation zwischen Programm und dem Dilogfeld?
Also fragt das Modale Form mittels Timer ab, wieviele Dateien schon gescannt sind, oder sagt der Scan dem Formular bescheid ...
Hiiilfe!
Bitte um Hilfe!
Marco
Marco Steinebach
  Mit Zitat antworten Zitat
HeinzJ

Registriert seit: 17. Aug 2007
Ort: Bremen
84 Beiträge
 
Delphi 2007 Architect
 
#2

Re: Dialog während Aufgabe anzeigen

  Alt 16. Jul 2008, 08:48
Anzeigeformular mit Fortschrittsbalken läuft in etwa so ab:
1. Bedarf ermiiteln (Anzahl Scans ...)
2. Anzeigeformular erzeugen, aufrufen ...
3. Vorgang (Scan) beginnen
4. Anzeigeformular.Fortschrittsbalken aktualisieren je nach Fortschritt
5. Anzeigeformular schliessen bei Vorgang Ende
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Dialog während Aufgabe anzeigen

  Alt 16. Jul 2008, 08:49
Zitat von Marco Steinebach:
Eine Multi-Thread-Lösung macht hier keinen sinn, bevor die Dateien nämlich nicht gescannt sind, kann man sowieso nicht weiterarbeiten.
Wirst du aber brauchen, denn du willst ja zwei Dinge parallel machen: Scannen und gleichzeitig einen Dialog mit einer Fortschrittsanzeige anzeigen lassen. Desweiteren wäre es auch ohne die Fortschrittsanzeige keine schlechte Idee das Scannen in einen Thread auszulagern, damit das Fenster noch reagiert.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von calculon
calculon

Registriert seit: 16. Sep 2006
256 Beiträge
 
Delphi 7 Personal
 
#4

Re: Dialog während Aufgabe anzeigen

  Alt 16. Jul 2008, 08:55
Du könntest eine Form modal anzeigen lassen. Da die Scans i.d.R. rekursiv ablaufen weißt du ProgressBar.Max erstmal nicht. Um diesen Wert zu bekommen könntest du zunächst einen Initialisierungsdurchlauf machen in dem du nur die Ordner zählst. Währenddessen zeigst du auf einem Label "Initialisiere..." an. Wenn der Durchlauf fertig ist setzt du ProgressBar.Max auf die Anzahl der gefundenen Ordner und startest im Anschluss den richtigen Scan und inkrementierst hier nach den durchsuchten Ordnern. Da kann bestimmt noch viel optimieren. Einen Abbrechen-Button könntest du über eine globale bool'sche Variable lösen: if bAbbruch then ... Das musst du dann halt in deiner Scan-Routine mit einbauen.

@rote Kasten:

HTH Gruß
--
  Mit Zitat antworten Zitat
Marco Steinebach

Registriert seit: 4. Aug 2006
491 Beiträge
 
Delphi 5 Enterprise
 
#5

Re: Dialog während Aufgabe anzeigen

  Alt 16. Jul 2008, 16:16
Hallo Leuts,
Erstmal vielen Dank für die raschen und sehr hilfreichen Antworten - also einfacher, als ich gedacht hatte. Ich wollte nur nicht wieder in meine Nicht-OOP-Weise verfallen.
Aber eine grundsätzliche Frage habe ich doch noch:
Wo liegt der Sinn, bei meinem Beispiel der Multi-Threading-Fähigkeit, weil:
Dialogfeld anzeigen,
Scannen und während des scans den Balken aktualisieren,
Ende scan und Ende Formular.
Klar sind es, streng genommen, zwei dinge. Aber, bis nicht alles gescannt ist, kann der User mit dem Programm ohnehin nix tun.
Es geht mir hier nicht um Sinn oder Unsinn, ich will's einfach verstehen.
Vielen Dank und viele Grüße
Marco
Marco Steinebach
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 15:52 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