Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - TDateTimePicker: Minuten im Intervall ändern
LokutusvB - Do 07.07.11 16:26
Titel: TDateTimePicker: Minuten im Intervall ändern
Hallo,
in einem DateTimePicker dtpZeit (Kind = dtkTime) möchte ich die Minuten im 15-Minuten-Intervall ändern. Im Netz konnte ich darüber leider keine Hinweise finden. Ich habe mir bisher nur eine Funktion für das Change-Ereignis zurechtgebastelt, die Nutzeränderungen auf die nächst höhere Minutenzahl rundet. Das funktioniert auch, wenn die Erhöhungsschaltfläche des Pickers genutzt wird. Aber wie mache ich das für die Verminderungsschaltfläche?
Hier mal mein Stückchen Quelltext:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TF_Test.dtpZeitChange(Sender: TObject); var minute, stunde: Word; begin minute := MinuteOf(dtpZeit.Time); stunde := HourOf(dtpZeit.Time); if ((minute > 0) and (minute < 15)) then minute := 15 else if ((minute > 15) and (minute < 30)) then minute := 30 else if ((minute > 30) and (minute < 45)) then minute := 45 else if (minute > 45) then minute := 00; dtpZeit.Time := StrToTime(IntToStr(stunde) + ':' + IntToStr(minute)); end; |
jasocul - Do 07.07.11 16:47
Meines Wissens kann man standardmäßig nicht feststellen, welche der Schaltflächen gedrückt wurde.
Ein möglicher Weg wäre vielleicht beim OnChange die aktuelle Mausposition zu prüfen, um rauszubekommen, welche Schaltfläche gedrückt wurde.
Abgesehen davon enthält dein aktueller Code logische Fehler:
1. Was passiert, wenn die Minute genau auf 0, 15, 30 oder 45 steht?
2. Wenn die Minute über 45 steht, stellst du die Minuten auf 0. Aber die Stunde bleibt unverändert.
Das kann zwar Absicht sein, aber als Anwender fände ich das nicht logisch.
LokutusvB - Do 07.07.11 16:52
1. Das sind genau die Minutenangaben, die einstellbar sein sollen, in diesem Falle muß nichts geändert werden.
2. Das ist auch so gewollt, könnte ich aber noch überarbeiten.
Schade, ich hatte gehofft es gibt bereits ein Ereignis, das erkennt, welche Schaltfläche gedrückt wurde. Gibt es vielleicht eine andere Konponente (Delphi XE), die dafür besser geeignet ist?
icho2099 - Fr 08.07.11 15:57
Etwas dirty, aber funzt:
Merke dir die jeweils letzte Zeit in einer Variablen und erkenne anhand der
Differenz zur neuen Zeit die Änderungsrichtung.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!