Musterdatei " Fortschrittsbalken "

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Musterdatei " Fortschrittsbalken "

Re: Musterdatei " Fortschrittsbalken "

von geimist » Sa, 19.09.2009 11:32

OK. - Danke. Muss man dann wohl so hinnehmen. Auf jeden Fall funktioniert es ja.

Re: Musterdatei " Fortschrittsbalken "

von komma4 » Fr, 18.09.2009 22:46

Basic arbeitet nur sequentiell = nacheinander.

Eine Aktualisierung des Fortschrittsbalkens erreichst Du nur, wenn Du einen neuen Wert setzt.

Re: Musterdatei " Fortschrittsbalken "

von geimist » Fr, 18.09.2009 21:45

Ja, also wie gesagt: Bis zu 100% läuft der Balken schon. Was ich nur meinte, dass der Balken, während das Mako läuft, sich auch bewegt. Demnach müsste während des Erstellens der Kopie auch eine Schleife laufen, welche den Balken bewegt - hier schlussfolgere ich, dass das so nicht geht (parallel).
Wenn dem so ist: Gibt es da noch eine andere Möglichkeit, oder geht das doch irgend wie. Es ist ja auch nicht wirklich wichtig - nur für die Perfektion.

Re: Musterdatei " Fortschrittsbalken "

von komma4 » Fr, 18.09.2009 21:18

geimist hat geschrieben:Du bist ja ein ganz feiner Kerl :D
Danke für Deinen Dank!
Ist, so eindrucksstark- selten, und tut gut.
geimist hat geschrieben:oder geht das nicht, da makeDayCopy ja noch läuft?
wie gehabt ... stelle 90 % -oder so- vor dem Aufruf ein, nach dem Call makeDayCopy 100% und beende den Dialog

Re: Musterdatei " Fortschrittsbalken "

von geimist » Fr, 18.09.2009 17:00

Du bist ja ein ganz feiner Kerl :D

Vielen Dank - es funktioniert ganz prima.

----------
Zur Verfeinerung:
Das Speichern der Sicherungskopie dauert ca. 10 Sekunden. Kann man in dieser Zeit den Balken wachsen lassen (von mir aus auch mit geschätzten Fortschritt) oder geht das nicht, da makeDayCopy ja noch läuft?

Re: Musterdatei " Fortschrittsbalken "

von komma4 » Fr, 18.09.2009 15:49

irgendwie so:

Code: Alles auswählen

' für "hundert-Prozent" Anzeige
With oBalken.Model
 .ProgressValueMin = 0 
 .ProgressValueMax = 100
End With 
' 
'  andere Anweisungen (anzeigen)
'
oBalken.Model.ProgressValue = 5
Call meine_unterroutine1

oBalken.Model.ProgressValue = 30
Call meine_unterroutine2

oBalken.Model.ProgressValue = 60
Call meine_unterroutine3
Wenn Du die Variable oBalken öffentlich (PUBLIC oder GLOBAL - je nach "Standort"*** der U.-Routinen) deklarierst, dann kann die Zuweisung der Werte auch innerhalb der Unterroutinen erfolgen.

Soweit klar?



*** Zur Sichtbarkeit der Variablen: s. F1 Onlinehilfe

Re: Musterdatei " Fortschrittsbalken "

von geimist » Fr, 18.09.2009 15:33

Ok.

Jetzt ist es ja so: Wenn ich den Dialog vor den 1.Makro starten lasse, dann wartet das Programm ja so lange, bis der Dialog fertig ist. Es müsste ja irgend wie parallel laufen. Ich vermute mal, dass ich die anderen Makros über den Code des Dialogs starten müsste. Wahrscheinlich in der Schleife. Ist das richtig? Wenn ja, dann könnte ich ja zumindest den Fortschrittsbalken in 3 Teile teilen (ich meine 3 Schritte) - für jedes Makro einen. Nachdem jeweils ein Makro durchgeführt wurde, geht der Balken einen Schritt weiter.

Kannst du mir einen Tipp geben, wie ich bei jedem Schleifendurchlauf ein anderes Makro aufrufen kann?

Re: Musterdatei " Fortschrittsbalken "

von komma4 » Fr, 18.09.2009 13:13

geimist hat geschrieben:- Warum lässt du die Bibliothek "Tools" laden - es funktioniert ja auch ohne?
Ich nutze die

Code: Alles auswählen

Function LoadDialog(Libname as String, DialogName as String, Optional oLibContainer) 
aus der TOOLS-Bibliothek, die ich dann natürlich vorher laden muss.

Wenn Du keinen Zähler hast, dann musst Du selbst einen Maximalwert festlegen und die Schritt-Aktualisierung schätzen.

Re: Musterdatei " Fortschrittsbalken "

von geimist » Fr, 18.09.2009 13:05

Vielen Dank schon mal.
Jetzt kommen die Fragen . . .

So funktioniert es jetzt beim mir (zumindest als Attrappe - denn es ist ja so noch nicht wirklich eine Visualisierung des Makrofortschritts)

Code: Alles auswählen

Sub de15899Bereinigt

' Tools
With GlobalScope.BasicLibraries
   If ( Not .isLibraryLoaded( "Tools" ) ) Then
     .LoadLibrary( "Tools" )
   End If
End With 

GlobalScope.DialogLibraries.LoadLibrary ("Globalmakro_Gebiete")
oBib = DialogLibraries.getByName("Globalmakro_Gebiete")
oDgl = oBib.getByName("DLG_START")
oDialog = CreateUnoDialog(oDgl)
	
' Fortschrittsbalken
oBalken = oDialog.getControl( "ProgressBarFull" )

	iWartezeit = 1000

With oBalken.Model
 .ProgressValueMin = 0 
 .ProgressValueMax = iWartezeit
End With 
 
' Dialog anzeigen
oDialog.setVisible( TRUE ) 

' Schleife 
For i = 0 To iWartezeit Step 1

	oBalken.Model.ProgressValue = i
	Wait 1

Next i

wait 2000
oDialog.setVisible( FALSE ) 

End Sub
- Warum lässt du die Bibliothek "Tools" laden - es funktioniert ja auch ohne?

- Wie kann ich jetzt mit dem Fortschrittsbalken die Arbeitszeit der anderen Makros visualisieren (ich arbeite ja keine Zellen in Calc ab, sondern erstelle z.B. mit makeDayCopy eine Sicherungskopie und noch ein paar andere Sachen?

Re: Musterdatei " Fortschrittsbalken "

von komma4 » Fr, 18.09.2009 11:01

Stephan,

habe mal ein kleines Beispiel konzipiert und hier angehängt.
Edit: Einfach das der Datei angehängte Makro ausführen.
Die Wartezeit (bis Ende) wird aus Zelle F4 der Tabelle1 genommen, eingestellt sind hier 15 Sekunden.


Wenn ich Zeit finde, dann stelle ich das auch noch auf die Website ... und aktualisiere die Beschreibung zu makeDayCopy (Danke für den Hinweis!).



Kommst Du damit zurecht?
Dateianhänge
calc_DialogFortschrittsbalken.ods
Beispiel Calc mit Dialog, Fortschrittsbalken-Demo
(14.88 KiB) 226-mal heruntergeladen

Re: Musterdatei " Fortschrittsbalken "

von geimist » Do, 17.09.2009 23:36

Ach so.
Ich dachte, dass ich den Code auch für einen Fortschrittsbalken in einem Dialog verwenden kann. Ich habe schon einige Beiträge hier im Forum gelesen, aber dahintergeblick habe ich noch nicht wirklich.

Code: Alles auswählen

Du hast also einen Dialog gebastelt (in der IDE), mit einem Fortschrittsbalken-Objekt?
Ja, genau so. Der Dialog soll quasi lediglich den Fortschritt der Makros dokumentieren. Und weil ich oben den Beispielcode gefunden habe, wollte ich mich damit erst einmal heran tasten - nun, falscher Code. Und ich stehe da, wie ein Frosch in der Wüste :?

Gibt es einen kleinen Tipp für mich (ist überhaupt das erste mal, dass ich was mit Dialogen mache ...)


P.S. @ Komma4:
makeDayCopy ist noch auf deiner Seite so programmiert, dass es nicht aus Base heraus funktioniert. Aber ab OOo 3.1 kann man ja Makros direkt in Base verwenden - funktioniert prima / gerade als Datensicherung in Base.

Re: Musterdatei " Fortschrittsbalken "

von komma4 » Do, 17.09.2009 17:51

geimist hat geschrieben:Beim Laden meiner Datenbank wird diese zuerst minimiert.
Das Beispiel vom 2008-01-30 läuft hier unter 3.0.1 immer noch...

Der Code setzt die Statuszeile (bei einer geöffneten Base-, Writer- oder Calc-Datei), mit dem Text "Beispiel für mike6" - er ist nicht für einen Dialog gedacht!

Und: der Code funktioniert auch nicht bei einer minimierten Datei (die ist nicht sichtbar!)


Du hast also einen Dialog gebastelt (in der IDE), mit einem Fortschrittsbalken-Objekt?

Re: Musterdatei " Fortschrittsbalken "

von geimist » Do, 17.09.2009 17:17

Ist ja nicht gerade das jüngste Thema, aber habe da mal eine Frage:

Code: Alles auswählen

Progressbar.Start("Beispiel für mike6", 100 )
Für was steht "Beispiel für mike6" eigentlich? Mit was muss ich es ersetzten? ("Fehler: Eigenschaft oder Methode nicht gefunden.")

Aufgabe:
Beim Laden meiner Datenbank wird diese zuerst minimiert.
- Dann eine Sicherungskopie angelegt (makeDayCopy > Danke "komma4")
- Dann eine Statistik berechnet
- Dann das Startformular geladen / mit Übersicht der Statistik
- Gesamtzeit ca. 10-20 Sekunden

Diese Gesamtdauer möchte ich mit einem Wartedialog "dokumentieren"

Der Dialog funktioniert (Sichtbarkeit per: oDialog.visible() und nicht oDialog.execute() damit der Programmablauf nicht gestoppt wird)

Dafür benötige ich aber noch etwas Hilfe, daher meine obige 1.Frage (in diesem Beitrag)

Kann ich die Progressbar eigentlich nutzen, wenn ich die Makros nicht aus dem Dialog heraus aufrufe?

Re: Musterdatei " Fortschrittsbalken "

von komma4 » Mi, 30.01.2008 12:26

mike6 hat geschrieben:Ohne eine Musterdatei ,in der ich was ausprobieren kann,
komme ich leider nicht zurecht.
... und diese Beispiele finden sich doch, auf Deiner Festplatte, hier im Forum, sonstwo im Netz, in meinen Basic-Beispielen, ....



Was ist an den beiden oben geposteten Codestücken nicht verständlich?

Re: Musterdatei " Fortschrittsbalken "

von mike6 » Mi, 30.01.2008 11:17

Hallo Winfried,

erst mal vielen Dank für Deine Hilfe.
Ich hab's wirklich versucht hinzubekommen.

Ich kann:

Fliesen legen
Mauern
Kochen
...
...

..... aber leiderr nicht programmieren.
Ohne eine Musterdatei ,in der ich was ausprobieren kann,
komme ich leider nicht zurecht.


mfg
mike

Nach oben