Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Alle Kalenderwochen in Combobox darstellen (https://www.delphipraxis.net/174389-alle-kalenderwochen-combobox-darstellen.html)

Mazen 19. Apr 2013 12:41

Alle Kalenderwochen in Combobox darstellen
 
Hallo Leute,
ich versteh nicht wieso mein Code nicht das tut was er soll. Ich will einfach nur alle Kalenderwochen eines gegebenen Jahres in einer Combobox darstellen:

Delphi-Quellcode:
datum := DateOf(StrToDate('31.12.'+editJahr.Text));
for i:=0 to WeekOf(datum)-1 do
begin
  cbVon.Properties.Items.Add('KW '+IntToStr(i+1));
end;
cbVon.ItemIndex := WeekOf(Now)-1;
Nachher seht aber nur "KW 1" in der Combobox und weiter nichts.
Kann mir wer sagen warum?

Der schöne Günther 19. Apr 2013 12:50

AW: Alle Kalenderwochen in Combobox darstellen
 
Zitat:

WeekOf definiert die Woche im Jahr nach Maßgabe des ISO-Standards 8601. Demzufolge beginnt eine Woche am Montag und endet am Sonntag. Die erste Woche eines Jahres ist die erste Kalenderwoche, deren Donnerstag in das betreffende Jahr fällt (die erste Woche mit mindestens vier Tagen im Jahr). Ist also der erste Kalendertag eines Jahres der Freitag, Samstag oder Sonntag, gibt WeekOf für die ersten drei oder zwei Tage oder für den ersten Tag des Kalenderjahres die Woche des vorhergehenden Jahres zurück. Entsprechendes gilt am Jahresende: Ist der letze Kalendertag eines Jahres ein Montag, Dienstag oder Mittwoch, gibt WeekOf für die letzten drei oder zwei Tage bzw. den letzten Tag des Kalenderjahres den Wert 1 (erste Woche des nächsten Kalenderjahres) zurück.
Das ist im Jahr 2013 für den 31.12 bsp. der Fall - Der Tag liegt in der ersten Woche des Jahres 2014.

DeddyH 19. Apr 2013 12:53

AW: Alle Kalenderwochen in Combobox darstellen
 
Alternativvorschlag:
Delphi-Quellcode:
procedure ListCalendarWeeks(Year: word; Dest: TStrings;
  const Prefix: string = 'KW ');
var
  i: integer;
begin
  Assert(Assigned(Dest), 'Zielliste nicht zugewiesen');
  Dest.BeginUpdate;
  try
    Dest.Clear;
    for i := 1 to WeeksInAYear(Year) do
      Dest.Add(Format('%s%d', [Prefix, i]));
  finally
    Dest.EndUpdate;
  end;
end;

procedure TForm24.FormCreate(Sender: TObject);
begin
  ListCalendarWeeks(YearOf(now), ComboBox1.Items);
  ComboBox1.ItemIndex := WeekOf(now) - 1;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz