Autor Beitrag
LokutusvB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 74

WinXP
Delphi 5, Delphi XE
BeitragVerfasst: Do 07.07.11 16:26 
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:

ausblenden 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 > 0and (minute < 15)) then minute := 15
  else if ((minute > 15and (minute < 30)) then minute := 30
  else if ((minute > 30and (minute < 45)) then minute := 45
  else if (minute > 45then minute := 00;
  dtpZeit.Time := StrToTime(IntToStr(stunde) + ':' + IntToStr(minute));
end;
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 74

WinXP
Delphi 5, Delphi XE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 101
Erhaltene Danke: 12

WIN XP, WIN 7, WIN 10
Delphi 6 Prof, Delphi 2005, FPC
BeitragVerfasst: 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.