Hi zusammen
Ich bearbeite gerade ein Uraltprogramm, das ich seinerzeit mit Delphi2007 zuletzt gespeichert habe - aktuell gibt mir eine Methode in einem Stringgrid einen vollen Monat ab einem gegebenen Datum aus, wobei die volle Woche auch dann ausgegeben wird, wenn das gegebene Datum (immer der erste des gewünschten Monats) ein Freitag oder sogar ein Sonntag ist(ähnlich der
VCL-Komponente).
Berechnet werden Wochen ausschliesslich mit dem Montag als Starttag.
Noch unbestimmt ist allerdings das Ende des angezeigten Monats. Die Prozedur:
Delphi-Quellcode:
procedure Ta.BtnZweiHorzWeeksMontagClick(Sender: TObject);
var i,j,y, Nr,x : Integer; Jahr,Woche: Word;
Today : String;ADate,Datum:TDateTime;
begin
ADate := DateTimePicker2.Date; //Übergeben des Anfangdatums
Nr := DayofTheWeek(ADate); //Tagesnummer ermitteln : 1. Wochentag := Montag
Today := Wochentage[(NR-(NR-1))];
Datum := (ADate-(NR-1));
i := 0;
j := 2;
x := 1;
y :=1;
while i <=6 do // Dies schreibt 7 Wochenblöcke ins Stringgrid
begin
inc(i);
while j <= 8 do begin
if j = 2 then begin
DateToWeek(Datum, Woche, Jahr);
StrG_HoizontalWochen.Cells[y,x] := 'Woche '+IntToStr(Woche); {1 ist die Spalte, X ist die Zeile}
end;
StrG_HoizontalWochen.Cells[0,j]:= Today;
StrG_HoizontalWochen.Cells[y,j]:= DateToStr(Datum);
Inc(j);
Datum := Datum +1;
Nr := DayofTheWeek(Datum); //Tagesnummer ermitteln : 1. Wochentag Montag
Today := Wochentage[Nr];
end;
Inc(y);
j := 2;
end;
end;
Das sieht dann so aus:
In diesem Fall ist der letzte Januar bereits in der zweitletzten Woche und die restlichen Tage als die des Folgemonats eingetragen. Es dürften allerdings nur gerade die letzen Tage der letzten Woche bis zum Monatsende eingetragen sein - so, wie es in TMonthCalendar gelöst ist.
Da bieten sich nun die beiden Funktionen aus dem Titel an. Wobei die eine allerdings expliziit das Jahr und den Monat benötigt und die andere nur gerade einen TDateTime-Wert.
Kann es sein, dass sich die beiden in der Zuverlässigkeit unterscheiden(29. Februar)?
Gruss
Delbor