Zugriff auf laufendes Programm (Probleme mit der GUI)
-
Hy,
ich habe ein Problem. Und zwar ... ich habe eine Suche geschrieben, die etwa 5min lang brauch bis sie fertig ist.
zu dieser Zeit kann ich aber das Fenster nicht verschieben, oder interaktionen in dem Programm ausführen (was ganz geschickt wär um die suche frühzeitig zu beenden).
Wie kann ich das denn machen ?
ps: bestimmt ne Stunde die FAQ durchsucht, aber nichts gefunden.
Ist das ne Einstellungssache im Borland ? Oder ein Programmiertechnisches Problem ?
Mach da schon ewig rum ... hoffe mir kann einer helfen *g*.
-
Du solltest vielleicht in regelmäßigen Abständen deine Suche pausieren und die anstehenden Nachrichten abfragen (andernfalls ist das Programm für außenstehende "tot").
-
und das geht mit Application->ProcessMessages();
-
oder die Suche in einen Thread auslagern (siehe Hilfe zu TThread).
-
Sunday schrieb:
und das geht mit Application->ProcessMessages();
OK, so funktioniert das. (Habe mir des mit TThread mal angeschaut ... pew ... aber mal gar nicht durchgeblickt ... muss ich mal noch genauer anschaun)
Und nun das nächste Problem.
Wenn ich mein Programm jetzt schließe, während die Suche nich läuft, hagelt es mir Fehlermeldungen.Gibt es eine Funktion, mit der ich sagen kann, breche mir alle aktivitäten ab ?
so zb:wenn button 1 gedrückt worde, breche alle aktivitäteten in Form1 ab.Oder muss ich ich meine Suchschleife dann ein ein zuätzliches Abbruchargument einbaun, so zb:
laufe solange durch, bis suche zu Ende oder Button1 gedrück.
-
Ich würde eher die Suchfunktion selber entscheiden lassen, wann es sicher ist abzubrechen - alles andere führt im Ernstfall zu Instabilitäten (z.B. wenn du die Suche mitten in einem Dateizugriff abschießt).