| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
 | Order Processing Summit 2025, eine Veranstaltung am 23.06.2025
|
Autor
|
Thema: API: Vorschrittsanzeige - Progressbar (923 mal gelesen)
|
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation

 Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 13. Aug. 2008 11:45 <-- editieren / zitieren --> Unities abgeben:         
|
mkkk Mitglied
 
 Beiträge: 105 Registriert: 04.03.2005
|
erstellt am: 13. Aug. 2008 11:51 <-- editieren / zitieren --> Unities abgeben:          Nur für G. Dawg
|
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation

 Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 13. Aug. 2008 13:15 <-- editieren / zitieren --> Unities abgeben:         
|
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation

 Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 13. Aug. 2008 13:34 <-- editieren / zitieren --> Unities abgeben:         
Hm...!? Es funktioniert, aber doch nicht ganz! Wenn ich nun so eine Schleife habe, wo die ProgressBar dargestellt wird und den aktuellen Wert bekommt, wo setzte ich das UserForm1.ProgressBar1 = DoEvents() hin? Das Formular wird aktuallisiert, aber der dargestellte Wert stimmt nicht mehr. Ich weiss, dass ich da was Falsch mache, aber was? Code:
UserForm1.ProgressBar1.Max = 5000 UserForm1.ProgressBar1.Value = 0 UserForm1.Show 0 Zaehler = 0For i = 1 To 5000 UserForm1.ProgressBar1.Value = Zaehler Zaehler = Zaehler + 1 Next i
Wo kommt nun mein DoEvents() hin? ------------------ http://www.worldcommunitygrid.org Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VBSpawn Mitglied Programmierer
  
 Beiträge: 514 Registriert: 23.08.2005 Sorgfältige Planung ersetzt niemals pures Glück.
|
erstellt am: 13. Aug. 2008 13:38 <-- editieren / zitieren --> Unities abgeben:          Nur für G. Dawg
Hi, ich glaub ein Refresh kann auch nichts schaden ... Zitat: Original erstellt von G. Dawg:
Wo kommt nun mein DoEvents() hin?
Code:
For i = 1 To 5000 UserForm1.ProgressBar1.Value = Zaehler Zaehler = Zaehler + 1 UserForm1.ProgressBar1.Refresh DoEvents Next i
------------------ Stell dir vor, es geht, und keiner kriegts hin. Zitat: Interpunktion und Orthographie des Postings sind frei erfunden. Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation

 Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 13. Aug. 2008 13:43 <-- editieren / zitieren --> Unities abgeben:         
Ah! Vielen Dank, VBSpawn! Werde das refresh mal ausprobieren. Habe gerade, per Zufall, herausgefunden, dass das so auch geht: Code: UserForm1.ProgressBar1 = DoEvents() For i = 1 To 5000 UserForm1.ProgressBar1.Value = Zaehler Zaehler = Zaehler + 1 Next i
Ich werde das mal mit der Stoppuhr durchlaufen lassen ... ob es da einen Unterschied gibt?! Vielen Dank nochmals für Eure Hilfe!
------------------ http://www.worldcommunitygrid.org Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VBSpawn Mitglied Programmierer
  
 Beiträge: 514 Registriert: 23.08.2005 Sorgfältige Planung ersetzt niemals pures Glück.
|
erstellt am: 13. Aug. 2008 13:49 <-- editieren / zitieren --> Unities abgeben:          Nur für G. Dawg
Zitat: Original erstellt von G. Dawg: UserForm1.ProgressBar1 = DoEvents()
ähm mach das lieber nicht so ;) . Das DoEvents ist eine einfache Funktion die 'Immer' 0 zurückliefert (hab noch nie eine -1 gesehen) Jedenfalls reicht ein einfacher Aufruf in einer Zeile mit dem DoEvents, da das dem Programm etwas Zeit gibt seine 'Warteschlage' abzuarbeiten. Deswegen sollte es eigentlich innerhalb der Schleife ausgeführt werden, und nicht davor. Gruß Micha
------------------ Stell dir vor, es geht, und keiner kriegts hin. Zitat: Interpunktion und Orthographie des Postings sind frei erfunden. Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation

 Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 13. Aug. 2008 13:52 <-- editieren / zitieren --> Unities abgeben:         
|
VBSpawn Mitglied Programmierer
  
 Beiträge: 514 Registriert: 23.08.2005 Sorgfältige Planung ersetzt niemals pures Glück.
|
erstellt am: 13. Aug. 2008 14:00 <-- editieren / zitieren --> Unities abgeben:          Nur für G. Dawg
Zitat: Original erstellt von G. Dawg: Ok, werde das gleich ändern! In der Hilfe steht auch etwas davon, dass es unerwünschte Resultate liefern kann! *woops*! Thanks!
Jo, stimmt auch. DoEvents ist wirklich mit Vorsicht zu verwenden, jedenfalls wenn man sehr Eventbasiert Arbeitet (MouseOver, MouseLeave, DocumentChange usw..... ) und es ist diesbezüglich in VB6 besser den SendMessage Befehl direkt an das Control zu Senden (hat den Vorteil das sich nicht alles 'NeuZeichnet' sondern nur die PBar) im VBA geht es nur etwas mühsam die Control Handles zu finden deswegen -> entweder das DoEvents verwenden oder eben die entsprechende Refresh, Paint oder Redraw Methode. Gruß Micha ------------------ Stell dir vor, es geht, und keiner kriegts hin. Zitat: Interpunktion und Orthographie des Postings sind frei erfunden. Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |