![]() |
datetimepicker wochentag?
Ist beim Datetimepicker der Wochentag hinterlegt? Ich habe eine SQL-Abftrage, die ueber einen Timer gesteuert ist und moechte den Datetimepicker automatisch immer auf den naechsten Montag weiterschalten, wenn die Form aufgerufen wird.
Also z.B. bei Samstag, 30.12.06 auf Montag, 01.01.07 weiterschalten, so was wie datetimepicker1.date+2 als Ergebnis, aber wie komme ich auf die 2 automatisch? |
Re: datetimepicker wochentag?
Servus
So etwa?
Delphi-Quellcode:
var
tage : array [1..7] of String = ('Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'); begin edit1.text := tage[dayofweek(DateTimePicker1.datetime)]; end; Greetz |
Re: datetimepicker wochentag?
Moin :-)
Vielleicht eher so?:
Delphi-Quellcode:
...
case DayOfWeek(DateTimePicker1.Date) of 1: DateTimePicker1.Date := DateTimePicker1.Date +1; //Sonntag 7: DateTimePicker1.Date := DateTimePicker1.Date +2; //Samstag end; ... |
Re: datetimepicker wochentag?
Grüß Gott
dann eher so:
Delphi-Quellcode:
Greetz
..
while dayofweek(Datetimepicker1.Date) <> 2 do Datetimepicker1.Date := datetimepicker1.Date + 1; .. |
Re: datetimepicker wochentag?
zunächst mal vielen Dank für Eure Vorschläge, aber welcher ist nun der Beste?
hatte noch vergessen, dass es vor allem für Windows in englisch (Sprach-und Ländereinstellungen) gehen muss, d.h. bei Vorschlag 1 müssten die Variablen dann Sunday, monday usw. sein? Wäre dann aber auf Windows-englisch beschränkt oder? Was bedeutet beim 2. Vorschlag (case of) die Zahl 1: und dann 7: ? Wieso 7: in der 2. Zeile, wieso nicht 2: ? wäre der Code für die komplette Woche so?
Delphi-Quellcode:
Bei der while-Version, wieso <> 2?
case DayOfWeek(DateTimePicker1.Date) of
1: DateTimePicker1.Date := DateTimePicker1.Date +1; //Sonntag 2: DateTimePicker1.Date := DateTimePicker1.Date +2; //Samstag 3: DateTimePicker1.Date := DateTimePicker1.Date +3; //Freitag 4: DateTimePicker1.Date := DateTimePicker1.Date +4; //Donnerstag 5: DateTimePicker1.Date := DateTimePicker1.Date +5; //Mittwoch 6: DateTimePicker1.Date := DateTimePicker1.Date +6; //Dienstag end; wie wäre der Code für die ganze Woche? |
Re: datetimepicker wochentag?
Ich habe den case-Vorschlag mal probiert, es hat funktioniert mit dem heutigen Tag (Sonntag), habe dann aber das Datum meines PC's auf morgen gestellt, dann zeigte mit der Datetimepicker den 3.1. an, warum?
der Code sieht jetzt so aus:
Delphi-Quellcode:
datetimepicker1.Date := now;
case DayOfWeek(DateTimePicker1.Date) of 1: DateTimePicker1.Date := DateTimePicker1.Date +1; //Sonntag 2: DateTimePicker1.Date := DateTimePicker1.Date +2; //Samstag 3: DateTimePicker1.Date := DateTimePicker1.Date +3; //Freitag 4: DateTimePicker1.Date := DateTimePicker1.Date +4; //Donnerstag 5: DateTimePicker1.Date := DateTimePicker1.Date +5; //Mittwoch 6: DateTimePicker1.Date := DateTimePicker1.Date +6; //Dienstag 7: DateTimePicker1.Date := DateTimePicker1.Date; //Montag end; |
Re: datetimepicker wochentag?
mein Gott, ich bin jetzt wirklich buff...
Greetz, dein einfacher Code (while dayofweek...) geht immer, habe alle Tage getestet, wunderbar, danke. Weiss aber ehrlich nicht gesagt, warum dieser so einfach Code das macht.... Greets, noch ne weitere Frage: ich habe ja mein Windows auf Deutsch konfiguriert, geht dies auch, wenn es auf chinesisch eingestellt ist? ich mache die Software für eine chindesische Firma... |
Re: datetimepicker wochentag?
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
Delphi-Quellcode:
, funktioniert genauso, ruhig dem Prozessor das rechnen überlassen :-)
case ... of
Dein Fehler im case Beispiel: Zitat:
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:
Delphi-Quellcode:
Guten Rutsch
while dayofweek(Datetimepicker1.Date) <> 2 do
Datetimepicker1.Date := datetimepicker1.Date + 1; [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] |
Re: datetimepicker wochentag?
danke, TwoFace, eigentlich einleuchtend dein Erklärung.
ich denke, der while Code ist der Richtige für mich, ist doch unabhängig von der eingestellten Sprache in der Windows-Konfig, oder? aber ganz klar ist mir es doch nicht, du sagst (bei while..) "Solange der Wochentag im Datetimepicker nicht Montag (dayofweek=2) ist, zähle einen Tag dazu." wenn es Dienstag (z.B. 2.1.07) ist, wie weiss das System dann, dass es 6 Tage hinzuzählen muss und nicht nur 1 Tag, wie du sagst??? auch dir guten Rutsch...danke! |
Re: datetimepicker wochentag?
Es ist doch eine Schleife, d.h. der Code heißt:"Solange Wochentag <> Montag addiere 1" D.h. er addiert sooft 1 bis er den Montag erreicht hat.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz