Einzelnen Beitrag anzeigen

Benutzerbild von TwoFace
TwoFace

Registriert seit: 21. Jun 2003
Ort: Uffenheim
26 Beiträge
 
#8

Re: datetimepicker wochentag?

  Alt 31. Dez 2006, 12:03
Servus

die Wochtage sind meines Wissens nach nicht irgendwo gespeichert, d.h. du mußt sie irgendwie vorgeben. (siehe Beispiel im #2 Beitrag, dementsprechend Monday, Tuesday, usw...)

Zu case ... of , funktioniert genauso, ruhig dem Prozessor das rechnen überlassen

Dein Fehler im case Beispiel:
Zitat:
...habe dann aber das Datum meines PC's auf morgen gestellt, dann zeigte mit der Datetimepicker den 3.1. an, warum?
Morgen (01.01.2007) ist Montag, also Dayofweek 2. Wenn Dayofweek 2 ist, zählt deine case Anweisung noch zwei Tage dazu, also der 03.01.2007.

Die richtige case-Anweisung müßte so lauten:
Delphi-Quellcode:
 datetimepicker1.Date := now;
case DayOfWeek(DateTimePicker1.Date) of
  1: DateTimePicker1.Date := DateTimePicker1.Date +1; //Sonntag
  2: DateTimePicker1.Date := DateTimePicker1.Date ; //Montag
  3: DateTimePicker1.Date := DateTimePicker1.Date +6; //Dienstag
  4: DateTimePicker1.Date := DateTimePicker1.Date +5; //Mittwoch
  5: DateTimePicker1.Date := DateTimePicker1.Date +4; //Donnerstag
  6: DateTimePicker1.Date := DateTimePicker1.Date +3; //Freitag
  7: DateTimePicker1.Date := DateTimePicker1.Date +2; //Samstag
end;
Zitat:
Bei der while-Version, wieso <> 2? wie wäre der Code für die ganze Woche?
heißt: Solange der Wochentag im Datetimepicker nicht Montag (dayofweek=2) ist, zähle einen Tag dazu. Der Code für die ganze Woche ist:
Delphi-Quellcode:
while dayofweek(Datetimepicker1.Date) <> 2 do
  Datetimepicker1.Date := datetimepicker1.Date + 1;
Guten Rutsch

[Edit] Mein Gott bin ich langsam, 2 Antworten, während ich eine geschrieben hab. Naja egal, die Erklärung warum die while Schleife immer funktioniert steht ja da Und die richtige case Anweisung auch [/Edit]
  Mit Zitat antworten Zitat