German Progressbar mal anders

GMan

Well-Known Member
Licensed User
Hallo,

ich möchte mittels eines Progressbars einen Zeitraum darstellen lassen.
Der variiert zwischen 10 und 20 Stunden, festgelegt durch eine Start- und eine Endzeit, wobei die Endzeit über Mitternacht gehen kann.

Ausgehend von der aktuellen Uhrzeit möchte ich gerne
a) den Zeitraum von jetzt bis zur Startzeit (wenn das Zeitfenster nicht aktiv ist)
und
b) den Zeitraum bis zum Erreichen der Endzeit (wenn das Zeitfenster aktiv ist)
anzeigen lassen.


Ein Beispiel:
Startzeit ist 20 Uhr
Endzeit ist 6 Uhr am anderen Tag
Ist-Uhrzeit = 16 Uhr

Da das Zeitfenster nicht aktiv ist würde ich gerne die Zeit von jetzt (16 Uhr) bis zur Startzeit (20 Uhr) anzeigen lassen

Wenn das Zeitfenster um z.B. 21:30 Uhr aktiv ist, möchte ich die Restzeit anzeigen lassen (alles ohne Werte, lediglich den Balken).


Als "100%" des Progressbars soll immer der komplette Zeitraum dienen:
wenn aktiv also 20 - 6 Uhr
wenn nicht aktiv ist von 6 - 20 Uhr

Hat da jemand einen Ansatz für B4A ? :sign0104:
 

GMan

Well-Known Member
Licensed User
Hier mal mein Code der soweit funktioniert - aber noch nicht komplett ist.
Es fehlt noch die Berechnung von der Endzeit bis zur Startzeit (die über Mitternacht geht) sowie deren Addition zur Zeit von Mitternacht bis zur aktuellen Uhrzeit.

Der gezeigte Code berechnet die Zeit in Minuten bis zur Startzeit (aber nur nach Mitternacht):
B4X:
' ----------------------- Beleuchtungszeit
    DateTime.DateFormat = "dd.MM.yyyy"
    DateTime.TimeFormat = "HH:mm"
   Dim Lichtdatum, Lichtzeit, Lichtakt_datzeit, Lichtakt_minuten As String

      
   LightsAktivStartzeitwert.Initialize ("LightsAktivStartzeitwert")
   LightsAktivEndzeitwert.Initialize ("LightsAktivEndzeitwert")
   Dim LightsAktuelleZeit As Long
   LightsAktuelleZeit = DateTime.Now 

' Daten dafür einlesen...
   LightsAktivStartzeitwert.Text = sets.Get("LichtStartzeit")
   LightsAktivEndzeitwert.Text = sets.Get("LichtEndzeit")
   LightsStartzeitLabel.Text = LightsAktivStartzeitwert.Text
   LightsEndzeitLabel.Text = LightsAktivEndzeitwert.Text
' Berechnen / Umrechnen
   Lichtdatum = DateTime.Date(DateTime.Now )
    Lichtzeit = LightsStartzeitLabel.Text
   Lichtakt_minuten = (DateTime.TimeParse(Lichtzeit) - DateTime.TimeParse(DateTime.Time (DateTime.Now ))) / DateTime.TicksPerMinute
    Lichtakt_datzeit = (DateTime.DateParse(Lichtdatum) / DateTime.TicksPerMinute) + Lichtakt_minuten

   LightsProgressBar.Indeterminate = False
   LightsProgressBar.Progress = (100 - (Lichtakt_minuten/100))

Nun weiss ich nicht, wie ich den ProgressBar ansprechen kann um da Werte zu setzen - oder ist das "Maximum" immer "100"(%) ?

Bsi jetzt zeigt er ja zwar was auf dem ProgressBar an, aber das ist ja nicht in Relation zum ProgressBar....sondern lediglich die Zeit in Minuten...
 
Top