Verstrichene Zeit
Moderator: Moderatoren
Verstrichene Zeit
Hallo!
Wie man in einem Label den Verlauf in Prozent anzeigen kann, wissen wir ja jetzt. Aber geht das auch als Zeitanzeige?
Zum Beispiel: Verstrichen Zeit: 0 Minuten und 56 Sekunden. Die Suche in Google brachte keine Ergebnisse (benutze ich die falschen Suchbegriffe?). Danke!
Wie man in einem Label den Verlauf in Prozent anzeigen kann, wissen wir ja jetzt. Aber geht das auch als Zeitanzeige?
Zum Beispiel: Verstrichen Zeit: 0 Minuten und 56 Sekunden. Die Suche in Google brachte keine Ergebnisse (benutze ich die falschen Suchbegriffe?). Danke!
Windows 7 Home Premium (auf Acer Desktop PC)
Windows 8 Professional (auf Microsoft Surface Pro 3).
MSO 365 Home Premium
LibreOffice 4.2.
F-Secure Internet Security
Re: Verstrichene Zeit
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: Verstrichene Zeit
Danke! Auf diese Idee bin ich auch schon gekommen, ist aber nicht das, was ich bräuchte. Ich möchte die Zeit angezeigt haben. Zusätzlich zur Prozentanzeige. Also auch die Zeit soll mitlaufen. Beim Starten des Makros im Dialog sol die Zeit zu laufen beginnen und wenn die Prozentanzeige auf 100% steht, soll die "Zeitmessung" stoppen. Das Formatieren in 0 Minuten und 46 Sekunden ist nicht das Problem. Nur den Befehl zur Zeitmessung habe ich nicht.
Windows 7 Home Premium (auf Acer Desktop PC)
Windows 8 Professional (auf Microsoft Surface Pro 3).
MSO 365 Home Premium
LibreOffice 4.2.
F-Secure Internet Security
Re: Verstrichene Zeit
benutze die Funktion namens Timer, die gibt die seit Mitternacht vergangenen Skunden zurück. Ein Beispiel dazu steht in der OOo-Hilfe.Nur den Befehl zur Zeitmessung habe ich nicht.
Gruß
Stephan
Re: Verstrichene Zeit
Das habe ich schon probiert. Allerdings gibt der nur Kommazahlen im Standardformat aus. Und bei diesem habe ich Probleme mit der richtigen Formatierung.
Windows 7 Home Premium (auf Acer Desktop PC)
Windows 8 Professional (auf Microsoft Surface Pro 3).
MSO 365 Home Premium
LibreOffice 4.2.
F-Secure Internet Security
Re: Verstrichene Zeit
und Du bist sicher das Beispiel aus der Hilfe beachtet zu haben und insbesondere das Du Timer an eine Variable übergibst die als Long deklariert ist, wie in der Hilfe erläutert?Das habe ich schon probiert. Allerdings gibt der nur Kommazahlen im Standardformat aus.
Wieso Timer allerdings Kommazahlen ausgeben sollte kann ich mir nicht erklären, es sollte ein Ergebnis im Datumsformat (meiner Erinnerung nach TT.MM.JJJJ) ausgegeben werden fall Du nicht wie gerade genannt vorher deklarierst.
Gruß
Stephan
Re: Verstrichene Zeit
Na gut, ich habe das in Excel probiert. Da wird dann z.B. soetwas angezeigt: 8,345234567
Allerdings ist Timer auch nicht dass, was ich brauche. Ich möchte ein Art Stoppuhr, bei der die Zeit mitläuft. Habe gerade mal das Offline-Archiv von Herber.de durchsucht. Da lese ich später weiter, wenn ich ausgeschlafen habe. Für meinen Fall wäre API möglicherweise besser, da auch Starbasic API unterstützt.
Allerdings ist Timer auch nicht dass, was ich brauche. Ich möchte ein Art Stoppuhr, bei der die Zeit mitläuft. Habe gerade mal das Offline-Archiv von Herber.de durchsucht. Da lese ich später weiter, wenn ich ausgeschlafen habe. Für meinen Fall wäre API möglicherweise besser, da auch Starbasic API unterstützt.
Windows 7 Home Premium (auf Acer Desktop PC)
Windows 8 Professional (auf Microsoft Surface Pro 3).
MSO 365 Home Premium
LibreOffice 4.2.
F-Secure Internet Security
Re: Verstrichene Zeit
und warum nicht?Allerdings ist Timer auch nicht dass, was ich brauche.
das habe ich genauso verstanden und genau diese erhältst Du auch wenn Du Timer in eine Schleife fasst (Do-Loop bietet sich an) und das Du das weist war für mich eigentlich klarIch möchte ein Art Stoppuhr, bei der die Zeit mitläuft.
Beispielsweise ergibt:
Code: Alles auswählen
Dim x As Long
y = x
Do
x = Timer
z = x - y
Loop
Übrigens verwendet auch der international bekannte StarBasic-Experte Danny Brewer für seine in StarBasic programmierten Digitaluhren die o.g. Timer-Funktion. Das Ganze ist Bestandteil seiner Beispielsammlung "Danny's Stupid OOo Tricks", die nur leider in Englisch ist:
http://ooomacros.org/dev.php#108077
Gruß
Stephan
Re: Verstrichene Zeit
Habe mir das mal angeschaut. Die Digitaluhr in blau gefällt mir ganz gut. Bei diesem wird aber die Uhrzeit angezeigt. Ich habe zu wenig Erfahrung mit Dialogen, um das jetzt umbauen zu können. Hier mal ein Stoppuhr-Beispiel für Excel: Stoppuhr in Symbolleiste (für Excel). Ist aber API-Programmierung. Allerdings wird in diesem Beispiel die Zeit durch Doppelpunkt getrennt. Mir wäre es nach obigen Beispiel lieber: 2 Stunden 34 Minuten und 56 Sekunden. Allerdings dürften Minuten und Sekunden reichen, da ein Makro wohl kaum Stunden braucht.
Windows 7 Home Premium (auf Acer Desktop PC)
Windows 8 Professional (auf Microsoft Surface Pro 3).
MSO 365 Home Premium
LibreOffice 4.2.
F-Secure Internet Security
Re: Verstrichene Zeit
Sorry bin auf dem Sprung.
Erklärung später wenn erforderlich.
Erklärung später wenn erforderlich.
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: Verstrichene Zeit
Wozu ist das auch nötig, der entscheidende Code (der der Timer verwendet und die Rückgabe umformt) ist völlig unabhängig von der digitalen Spielerei (die recht kompliziert ist) und kann in jeder Art von Dialog normal ausgegeben werden.Ich habe zu wenig Erfahrung mit Dialogen, um das jetzt umbauen zu können.
Auch hat das alles (Umformung und Anzeige einer bekannten Rückgabe einer Funktion) nicht mit StarBasic-Spezialkenntnissen zu tun, sondern ist allgemeines Grundwissen für jede Art der Programmierung (z.B. auch VBA), denn die ganze Aufgabe besteht darin eine Ganzzahl in zwei TEile (den durch 60 ohne REst teilbaren und den Rest der TEilung) zu zerlegen und anzuzeigen.
(Jürgen machts jetzt etwas anders indem er Time statt Timer verwendet)
Gruß
Stephan
Re: Verstrichene Zeit
Habe das Beispiel von Jürgen mal ausprobiert und angepasst.
Ich schaffe es aber nicht, dieses in meinen Code einzubauen. Ich habe bereits zwei For I-Schleifen in meinem Makro. Entweder wird nur der Timer ausgeführt oder meine Schleifen.
Codeauszug:
Zusätzlich zur Prozentanzeige soll auch die verstrichene Zeit angezeigt werden.
Und was das allgemeine Grundwissen betrifft. Das kann man nur haben, wenn man es gelernt hat. Aber gerade das mit dem Timer habe ich nicht gelernt. Ich lerne eigentlich jeden Tag was neues. Bisher habe ich zum Umformen immer nur Format benutzt.
Code: Alles auswählen
c2 = c1 & trim(Str(Minute(daDT))) & " Minuten " & trim(Str(Second(daDT))) & " Sekunden"
Codeauszug:
Code: Alles auswählen
Sub Week_day
ThisComponent.Sheets(0).Unprotect(Kennwort")
lblNext= MyDlg.getControl("Label1")
lblNext.Model.Label="Bitte warten...."
lblNext.Model.TextColor=RGB(255,0,0)
cmdNext = MyDlg.getControl("CommandButton1")
cmdNext.Model.Enabled = False
myctrl=myDlg.getControl("ProgressBar1")
'Festsetzen des Maximalwertes
myctrl.model.ProgressValueMax=742
Dim i as Long
Rem Hier beginnt Schleife 1 für Spalte B
For i= 11 to 742
lblNext= MyDlg.getControl("Label3")
lblNext.Model.Label= Format((i-11)/7.31, 0) & " % fertiggestellt"
If Weekday(ThisComponent.Sheets(0).GetCellByPosition(1,i).value, vbMonday) = 1 Then
ThisComponent.Sheets(0).GetCellByPosition(1,i).setPropertyValue( "CharColor", RGB(255,0,0) )
ElseIf Weekday(ThisComponent.Sheets(0).GetCellByPosition(1,i).value, vbMonday) = 7 Then
ThisComponent.Sheets(0).GetCellByPosition(1,i).setPropertyValue( "CharColor", RGB(0,0,255) )
ElseIf ThisComponent.Sheets(0).GetCellByPosition(1,i).Value = ThisComponent.Sheets(3).GetCellRangeByName("A1").Value Then
ThisComponent.Sheets(0).GetCellByPosition(1,i).setPropertyValue( "CharColor", RGB(255,0,0) )
ThisComponent.Sheets(0).GetCellByPosition(22,i).STRING = "F"
ElseIf ThisComponent.Sheets(0).GetCellByPosition(1,i).Value = ThisComponent.Sheets(3).GetCellRangeByName("A2").Value Then
ThisComponent.Sheets(0).GetCellByPosition(1,i).setPropertyValue( "CharColor", RGB(255,0,0) )
ThisComponent.Sheets(0).GetCellByPosition(22,i).STRING = "F"
End If
myctrl.value=i
Next i
Rem Ende Schleife 1
Rem Hier beginnt Schleife 2 für Spalte AC
myctrl=myDlg.getControl("ProgressBar2")
'Festsetzen des Maximalwertes
myctrl.model.ProgressValueMax=742
For i= 11 to 742
lblNext= MyDlg.getControl("Label4")
lblNext.Model.Label= Format((i-11)/7.31, 0) & " % fertiggestellt"
If Weekday(ThisComponent.Sheets(0).GetCellByPosition(28,i).value, vbMonday) = 1 Then
ThisComponent.Sheets(0).GetCellByPosition(28,i).setPropertyValue( "CharColor", RGB(255,0,0) )
ElseIf Weekday(ThisComponent.Sheets(0).GetCellByPosition(28,i).value, vbMonday) = 7 Then
ThisComponent.Sheets(0).GetCellByPosition(28,i).setPropertyValue( "CharColor", RGB(0,0,255) )
ElseIf ThisComponent.Sheets(0).GetCellByPosition(28,i).Value = ThisComponent.Sheets(3).GetCellRangeByName("A1").Value Then
ThisComponent.Sheets(0).GetCellByPosition(28,i).setPropertyValue( "CharColor", RGB(255,0,0) )
ElseIf ThisComponent.Sheets(0).GetCellByPosition(28,i).Value = ThisComponent.Sheets(3).GetCellRangeByName("A2").Value Then
ThisComponent.Sheets(0).GetCellByPosition(28,i).setPropertyValue( "CharColor", RGB(255,0,0) )
End If
myctrl.value=i
Next i
Rem Ende Schleife 2
Rem Endprozedur
Wait 2000
mydlg.endexecute()
Exit Sub
Fehler:
MsgBox "Fehler"
ThisComponent.Sheets(0).Protect("Kennwort")
End Sub
Und was das allgemeine Grundwissen betrifft. Das kann man nur haben, wenn man es gelernt hat. Aber gerade das mit dem Timer habe ich nicht gelernt. Ich lerne eigentlich jeden Tag was neues. Bisher habe ich zum Umformen immer nur Format benutzt.
Windows 7 Home Premium (auf Acer Desktop PC)
Windows 8 Professional (auf Microsoft Surface Pro 3).
MSO 365 Home Premium
LibreOffice 4.2.
F-Secure Internet Security
Re: Verstrichene Zeit
Hallo Zusammen,
der Beispielcode hat einen gravierenden Fehler.
Am Anfang zeigen beide die gleiche Zeit an. Aber dann: Beim Überschreiten der 30-Sekundenmarke wird bei >Timer> einfach eine Minute hinzugezählt.
Genau so wie bei Überschreiten der 30-Minutenmarke wird vorne bei Stunde eine Stunde dazuaddiert.
So, und jetzt Zu Deinem Code Mumpel.
Wenn in dem Dialog direkt etwas ausgeführt werden soll, dann kann man diesen nicht mit
aufrufen, sondern mit:
Das ist auch in dem Beispiel mit der Progressbar so. 
Also versuche mal folgenden Datei: Übrigens ist das dafür da um die Prozessorauslastung zu mindern.
Wenn man das "Wait 1000" rausnimmt steigt bei mir die Auslastung direkt auf 100% an!
Kommst Du jetzt damit weiter?
Jürgen
Dann hat derjenige, der das Beispiel in der Onlinehilfe erstellt hat da was nicht mitbekommen dennStephan hat geschrieben:Auch hat das alles (Umformung und Anzeige einer bekannten Rückgabe einer Funktion) nicht mit StarBasic-Spezialkenntnissen zu tun, sondern ist allgemeines Grundwissen für jede Art der Programmierung (z.B. auch VBA) (z.B. auch VBA)
der Beispielcode hat einen gravierenden Fehler.
Am Anfang zeigen beide die gleiche Zeit an. Aber dann: Beim Überschreiten der 30-Sekundenmarke wird bei >Timer> einfach eine Minute hinzugezählt.
Genau so wie bei Überschreiten der 30-Minutenmarke wird vorne bei Stunde eine Stunde dazuaddiert.

So, und jetzt Zu Deinem Code Mumpel.
Wenn in dem Dialog direkt etwas ausgeführt werden soll, dann kann man diesen nicht mit
Code: Alles auswählen
myDlg.execute
Code: Alles auswählen
myDlg.setvisible(True)

Also versuche mal folgenden Datei: Übrigens ist das
Code: Alles auswählen
Wait 1000
Wenn man das "Wait 1000" rausnimmt steigt bei mir die Auslastung direkt auf 100% an!
Kommst Du jetzt damit weiter?
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: Verstrichene Zeit
Bei Deinem Beispiel werden die Zeit und das Makro sofort gestartet. Genau das kann ich nicht nutzen, da das Makro nicht sofort ausgeführt werden soll. Erst wird der Dialog aufgerufen. Dann hat der Anwender die Möglichkeit abzubrechen oder das Makro auszuführen (Schaltfläche Feiertage und Wochenenden jetzt einfärben). Nur wenn das Makro ausgeführt werden soll, dann soll auch der Timer starten. Setvisible funktioniert bei mir nicht.
Das Dialog-aufrufende Makro:
Wenn ich jetzt setvisible nutze, dann wird der Dialog gleich wieder geschlossen.
Das Dialog-aufrufende Makro:
Code: Alles auswählen
Sub Faerben
Dialoglibraries.Loadlibrary("lbrZeiten")
MyDlg= CreateUnoDialog(Dialoglibraries.lbrZeiten.Einfaerben)
MyDlg.execute()
End Sub
Windows 7 Home Premium (auf Acer Desktop PC)
Windows 8 Professional (auf Microsoft Surface Pro 3).
MSO 365 Home Premium
LibreOffice 4.2.
F-Secure Internet Security
Re: Verstrichene Zeit
Auaaaaa, vor den Kopfhau.
Das geht, so glaube ich, alles so garnicht wie Du das vorhast.
Du musst alles in entsprechender Reihenfolge in eine Sub packen.
Warum?
Das ist ganz einfach.
Das Programm wird ja immer zeilenweise abgearbeitet.
Beispiel:
Start > Sub1 wird abgearbeitet bis Zeile 5 wo Sub2 aufgerufen wird.
Sub2 wird bis zum Ende abgearbeitet und es erfolgt der RücKsprung in Zeile 6 der Sub1.
Sub1 wird weiter bis zum Ende abgearbeitet.
Zwei oder mehr Subs parallel abarbeiten ist nicht möglich.
Bei Dir sind es ja schon 3 Subs die parallel laufen sollen.
1. Sub Timer
2. Sub ProgressBar
3. Sub Einfärben
Alles klar?
Das geht, so glaube ich, alles so garnicht wie Du das vorhast.
Du musst alles in entsprechender Reihenfolge in eine Sub packen.
Warum?
Das ist ganz einfach.
Das Programm wird ja immer zeilenweise abgearbeitet.
Beispiel:
Start > Sub1 wird abgearbeitet bis Zeile 5 wo Sub2 aufgerufen wird.
Sub2 wird bis zum Ende abgearbeitet und es erfolgt der RücKsprung in Zeile 6 der Sub1.
Sub1 wird weiter bis zum Ende abgearbeitet.
Zwei oder mehr Subs parallel abarbeiten ist nicht möglich.

Bei Dir sind es ja schon 3 Subs die parallel laufen sollen.
1. Sub Timer
2. Sub ProgressBar
3. Sub Einfärben
Alles klar?
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem