Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Eigener Kalender bauen (https://www.delphipraxis.net/190140-eigener-kalender-bauen.html)

Dumpfbacke 2. Sep 2016 12:53

Eigener Kalender bauen
 
Hallo Leute,
ich möchte mir einn eigene Kalender Bauen. Diesen möchte ich für jedemn Tag individuell gestellen können.Das ganze läuft unter Intraweb und dort mit IWRegionen und Labels ab. Da ich jeden Tag extra gestallten möchte habe ich mir eine Case abfrage gebaut. Hiermal das Beispiel für den Monat 1 Tag 4 alseo der 04.01.2016. Habe ich eine Möglichkeit es zu vereinfachen ? Ansonsten müsste ich das ganze ja für jeden Tag anlegen. Also 356 mal.

Delphi-Quellcode:
     14: begin
            Jan4.Caption := Wochentag;
            if WochenTag = 'Sa' then begin Jan4.Font.Style := [fsBold]; Jan4Tag.Font.Style := [fsBold]; FeldJan4.Color := clWebBeige end;
            if WochenTag = 'So' then begin Jan4.Font.Style := [fsBold]; Jan4Tag.Font.Style := [fsBold]; FeldJan4.Color := clWebBISQUE end;
            if Feiertage.IstFeiertag(Datum) <> '' then begin
                                                        Jan4.Font.Style := [fsBold]; Jan4Tag.Font.Style := [fsBold]; FeldJan4.Color := clWebBISQUE;
                                                        Jan4.Font.Color := clRed; Jan4Tag.Font.Color := ClRed;
                                                        Jan4Anzahl.Left := 50; Jan4Anzahl.Width := 55; Jan4Anzahl.Alignment := taLeftJustify;
                                                        Jan4Anzahl.Font.Color := clRed; Jan4Anzahl.Font.Size := 7; Jan4Anzahl.Top := 1;
                                                        Jan4Anzahl.Caption := Feiertage.IstFeiertag(Datum);
                                                       end;
            if Feiertage.IstFerientag(Datum) = True then begin
                                                          FeldJan4.Color := clyellow;
                                                         end;
         end;


Danke Tanja

ConnorMcLeod 2. Sep 2016 13:20

AW: Eigener Kabender bauen
 
Vllt mit einer Prozedur, die alles macht und als Parameter die Anzeigeobjekte bekommt...

Delphi-Quellcode:
procedure ProcessOneDay(ADate: TDate; const AWochenTag: string; var ADateLabel: TLabel; var ADayLabel: TLabel; var ACountLabel: TLabel; var AFeld: TPanel??);
begin
  ADayLabel.Caption := AWochentag;
  if (AWochenTag = 'Sa') or (AWochenTag = 'So') then begin
    ADateLabel.Font.Style := [fsBold];
    ADayLabel.Font.Style := [fsBold];
    AFeld.Color := clWebBISQUE
  end;
  if (EmptyStr <> Feiertage.IstFeiertag(ADate)) then begin
    ADateLabel.Font.Style := [fsBold];
    ADayLabel.Font.Style := [fsBold];
    AFeld.Color := clWebBISQUE;
    ADateLabel.Font.Color := clRed;
    ADayLabel.Font.Color := clRed;
    ACountLabel.Left := 50;
    ACountLabel.Width := 55;
    ACountLabel.Alignment := taLeftJustify;
    ACountLabel.Font.Color := clRed;
    ACountLabel.Font.Size := 7;
    ACountLabel.Top := 1;
    ACountLabel.Caption := Feiertage.IstFeiertag(Datum);
  end;
  if Feiertage.IstFerientag(ADate) then begin
    AFeld.Color := clYellow;
  end;
end;

...

  ProcessOneDay(Datum, Wochentag, Jan4, Jan4Tag, Jan4Anzahl, FeldJan4);

p80286 2. Sep 2016 13:22

AW: Eigener Kabender bauen
 
Hat sich erledigt

Aviator 2. Sep 2016 15:37

AW: Eigener Kabender bauen
 
Zitat:

Zitat von p80286 (Beitrag 1346612)
Hat sich erledigt

Ich glaube das bezog sich auf diesen Thread, oder?

p80286 2. Sep 2016 15:57

AW: Eigener Kabender bauen
 
Zitat:

Zitat von Aviator (Beitrag 1346624)
Zitat:

Zitat von p80286 (Beitrag 1346612)
Hat sich erledigt

Ich glaube das bezog sich auf diesen Thread, oder?

Nee leider nicht, da suche ich mir noch einen wolf....
ConnorMcLeod hatte schon das geschrieben was ich auch schreiben wollte

Gruß
K-H

Aviator 2. Sep 2016 16:00

AW: Eigener Kabender bauen
 
Zitat:

Zitat von p80286 (Beitrag 1346628)
Nee leider nicht, da suche ich mir noch einen wolf....
ConnorMcLeod hatte schon das geschrieben was ich auch schreiben wollte

Achso. Sorry. :pale:

Deine Antwort passte eben nicht wirklich auf die Ausgangsfrage. Und da du gerade einen eigenen Fred aufgemacht hattest war es naheliegend, dass du dich verklickt hattest. :stupid:

jobo 3. Sep 2016 10:04

AW: Eigener Kalender bauen
 
Zitat:

Zitat von Dumpfbacke (Beitrag 1346608)
ich möchte mir einn eigene Kalender Bauen. Diesen möchte ich für jedemn Tag individuell gestellen können.

Auch wenn Du mit dem Post hier wohl eher an eine Code Verbesserung gedacht hast (hast Du ja bereits bekommen). Ich würde die Formatierung irgendwoher laden, z.B. aus einer Textdatei.
Also alles was rechts der Zuweisung steht, aus einer Datei (oder sonstigem System) auslesen. Immer wenn ein neues Datum oder Jahrestag definiert ist, dann die neue Formatierung einsetzen, bis zu dem Tag, für den die nächste Formatierung definiert ist.

Dumpfbacke 3. Sep 2016 13:27

AW: Eigener Kabender bauen
 
Hallo ConnorMcLeod,
danke dür den Code. Das bringt mich schon sehr viel weiter, bzw. vereinfacht das ganze schon einmal.

Zitat:

Zitat von ConnorMcLeod (Beitrag 1346610)
Vllt mit einer Prozedur, die alles macht und als Parameter die Anzeigeobjekte bekommt...

Delphi-Quellcode:
  ProcessOneDay(Datum, Wochentag, Jan4, Jan4Tag, Jan4Anzahl, FeldJan4);

Jetzt habe ich nur nochein Problem. Ich müste nun beim erzeugen 365 mal die Aufruf starten also etwas so:

Delphi-Quellcode:
 ProcessOneDay(Datum, Wochentag, Jan1, Jan1Tag, Jan1Anzahl, FeldJan1);
 ProcessOneDay(Datum, Wochentag, Jan2, Jan2Tag, Jan2Anzahl, FeldJan1);

 ...

 ProcessOneDay(Datum, Wochentag, Dez30, Dez30Tag, DEZ30Anzahl, FeldDez30);
 ProcessOneDay(Datum, Wochentag, Dez31, Dez31Tag, DEZ31Anzahl, FeldDez31);
Kann man den Code auch noch etwas vereinfach in Form z.B. einer Schleife ?

Tanja

nahpets 3. Sep 2016 13:49

AW: Eigener Kalender bauen
 
Naja, Datum ist 'ne Zahl, ginge also z. B. in 'ner For-Schleife:
Delphi-Quellcode:
procedure ProcessOneDay(ADate: TDate; var ADateLabel: TLabel; var ADayLabel: TLabel; var ACountLabel: TLabel; var AFeld: TPanel??);
begin
  Case DayOfWeek(ADate) of
    1 : ADayLabel.Caption := 'Mo';
    2 : ADayLabel.Caption := 'Di';
    3 : ADayLabel.Caption := 'Mi';
    4 : ADayLabel.Caption := 'Do';
    5 : ADayLabel.Caption := 'Fr';
    6 : begin
          ADayLabel.Caption := 'Sa';
          ADateLabel.Font.Style := [fsBold];
          ADayLabel.Font.Style := [fsBold];
          AFeld.Color := clWebBISQUE
        end;
    7 : begin
          ADayLabel.Caption := 'So';
          ADateLabel.Font.Style := [fsBold];
          ADayLabel.Font.Style := [fsBold];
          AFeld.Color := clWebBISQUE
        end;
  end;
  if (EmptyStr <> Feiertage.IstFeiertag(ADate)) then begin
    ADateLabel.Font.Style := [fsBold];
    ADayLabel.Font.Style := [fsBold];
    AFeld.Color := clWebBISQUE;
    ADateLabel.Font.Color := clRed;
    ADayLabel.Font.Color := clRed;
    ACountLabel.Left := 50;
    ACountLabel.Width := 55;
    ACountLabel.Alignment := taLeftJustify;
    ACountLabel.Font.Color := clRed;
    ACountLabel.Font.Size := 7;
    ACountLabel.Top := 1;
    ACountLabel.Caption := Feiertage.IstFeiertag(ADate);
  end;
  if Feiertage.IstFerientag(ADate) then begin
    AFeld.Color := clYellow;
  end;
end;

var
      i : Integer;
begin
  For i := Trunc(StrToDate('01.01.2016')) to Trunc(StrToDate('31.12.2016')) do begin
    ProcessOneDay(i, DateLabel, DayLabel, CountLabel, Feld);
  end;
end;

Dumpfbacke 3. Sep 2016 14:07

AW: Eigener Kalender bauen
 
Zitat:

Zitat von nahpets (Beitrag 1346671)
Naja, Datum ist 'ne Zahl, ginge also z. B. in 'ner For-Schleife:
Delphi-Quellcode:
var
      i : Integer;
begin
  For i := Trunc(StrToDate('01.01.2016')) to Trunc(StrToDate('31.12.2016')) do begin
    ProcessOneDay(i, DateLabel, DayLabel, CountLabel, Feld);
  end;
end;


Das Problem liegt nicht beim Datum, sondern bei den Label. Ich habe ja für jeden Tag z.B. ein anders Label auf der Frorm liegen. Jan1Tag, Jan2Tag, Jan3Tag usw. ein StrToTLabel gibt es ja leider nicht denn sonst würde ich mir das String zusammenbauen und dann in ein TLabel umwandeln.

Tanja


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:13 Uhr.
Seite 1 von 2  1 2      

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