![]() |
Fortschrittsanzeige aus DLL?
Hallo,
ist es überhaupt möglich, aus einer in einer DLL enthaltenen Funktion heraus ein kleines Fenster zur Fortschrittsanzeige anzuzeigen, welches dann im Vordergrund des aufrufenden Programms erscheint? Ciao Stefan |
AW: Fortschrittsanzeige aus DLL?
VCL?
Besser nicht, falls du nicht mit Laufzeitpackages arbeitest. (DLL und EXE gegen die RTL/VCL-BPLs gelinkt) Leg die Fortschrittsanzeige in ein Interface oder eine/mehrere Callback-Funktion (in deiner EXE definiert), übergibt das an die DLL und die DLL kann dann über den Callback/Interface die Anzeige steuern. |
AW: Fortschrittsanzeige aus DLL?
Ja, im Grunde genauso wie hier, nur dass die aufgerufene Funktion, die das Interface bekommt, in der DLL liegt:
![]() Dann kann das Fenster selbst aus der Anwendung stammen und wird nur von der DLL aus gesteuert. Das vereinfacht das ganze. |
AW: Fortschrittsanzeige aus DLL?
Schade!
Ich kann die Schnittstelle zum aufrufenden Programm nicht erweitern, muss also irgendwie direkt aus der DLL was anzeigen können! Gibt es noch andere Ansätze? Ciao Stefan |
AW: Fortschrittsanzeige aus DLL?
Was haste denn bisher und was fehlt denn?
|
AW: Fortschrittsanzeige aus DLL?
Ich kann bisher:
- ein Mini-Formular anzeigen - es während der DLL-Funktion stehen lassen - es nach Ende der Funktion wegblenden Was nicht geht: - diese Formular nicht in der Taskleiste erscheinen lassen - ein auf das Formular gelegtes TProgressbar zeigt nichts an Ciao Stefan |
AW: Fortschrittsanzeige aus DLL?
Zitat:
![]() |
AW: Fortschrittsanzeige aus DLL?
Zitat:
|
AW: Fortschrittsanzeige aus DLL?
Zitat:
...:cat:... |
AW: Fortschrittsanzeige aus DLL?
So, die Progressbar-Anzeigegeschichte ist gegessen, ein Progress.Repaint hat Abhilfe geschaffen...
Was jetzt noch die Anzeige in der Taskbar betrifft, da bin ich irgendwie mit dem verlinkten Beispiel nicht so richtig klargekommen: Das beispiel enthält ein Formular in der DLL, ich erzeuge meines dynamisch im Code. Versuche ich eines direkt ins Projekt einzufügen bekomme ich jede Menge Warnungen und Hinweise um die Ohren gehauen mit denen ich kaum was anfangen kann! Ciao Stefan Nachtrag: Mir ist noch aufgefallen, dass trotz Repaint die Progressbar irgendwie "hinterherhängt", im Debugger sehe ich kurz vor Ende des Ablaufs dass Max und Position übereinstimmen, optisch ist die Progressbar aber erst bei ca. 80%! Wie stellt man denn das ab? |
AW: Fortschrittsanzeige aus DLL?
Zitat:
...:cat:... |
AW: Fortschrittsanzeige aus DLL?
Habe einen "Würgaround" gefunden, erst StepBy(2) und danach StepBy(-1)...
wenns schrittweise gehen soll, sonst Position auf 1 zu hoch und dann zurücksetzen... Ciao Stefan |
AW: Fortschrittsanzeige aus DLL?
Ich setze statt der Position einfach den Maximalwert schrittweise herab. Lässt sich leicht ausrechnen und dabei passiert das animierte Nachziehen nicht.
|
AW: Fortschrittsanzeige aus DLL?
Zitat:
Wenn ich mir das aber mal für z.B. max = 5 durchdenke, kommt folgendes raus: 1 : 1/5 Balken 2 : 1/4 Balken 3 : 1/3 Balken 4 : 1/2 Balken 5 : ganzer Balken was bedeutet der Fortschritt verläuft bei gleicher Zeit für je einen Schritt nicht linear! Das schnelle Vorspringen um +2 bei mir ist ja praktisch nicht sichtbar weil Windows das durch die Animation verzögert, so dass man in der Praxis wirklich nur das schrittweise verlängern des Balkens erkennt... Ciao Stefan |
AW: Fortschrittsanzeige aus DLL?
Ich berechne den Maximalwert und zähle den nicht einfach herunter. Beispiel:
1% --> Pos = 100, Max = 10000 / 1 = 10000 2% --> Pos = 100, Max = 10000 / 2 = 5000 50% --> Pos = 100, Max = 10000 / 50 = 200 100% --> Pos = 100, Max = 10000 / 100 = 100 |
AW: Fortschrittsanzeige aus DLL?
Hallo,
da werfe ich doch mal schnell Application.ProcessMessages in die Runde. |
AW: Fortschrittsanzeige aus DLL?
Zitat:
|
AW: Fortschrittsanzeige aus DLL?
Das war auch meine zweite Idee nach der ersten "Repaint" und "Refresh", bringt aber nichts!
Ciao Stefan |
AW: Fortschrittsanzeige aus DLL?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:45 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