Einzelnen Beitrag anzeigen

Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#15

AW: Eigener Kabender bauen

  Alt 5. Sep 2016, 10:14
Hallo ConnorMcLeod,
danke dür den Code. Das bringt mich schon sehr viel weiter, bzw. vereinfacht das ganze schon einmal.

Vllt mit einer Prozedur, die alles macht und als Parameter die Anzeigeobjekte bekommt...

  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
Hallo Tanja,
für deine Frage hätte ich diese Antwort unten ... aber Du könntest Dir auch mal überlegen, Kompenenten selbst abzuleiten.
Ein TDatumsLabel, ein TTagesLabel, ein TKalenderTagesPanel und so weiter. Die bekommen ein zusätzliches Property 'Date' und wenn man ein Datum zuweist, dann richten sie sich selbst darauf ein. Dein TKalender bestünde dann aus TKalenderTagesPanels und der Code wäre etwas übersichtlicher
Delphi-Quellcode:
var
  liDateCounter: integer;
  lsDateString: string;

for liDateCounter := 1 to 365 do begin
  Datum := MachEinSinnvollesDatum(liDateCounter);
  Wochentag := GibMirDenWochenTag(Datum);
  lsDateString := FormatDateTime('mmmd', Datum);
  ProcessOneDay(
      Datum
    , Wochentag
    , TLabel(FindComponent(lsDateString))
    , TLabel(FindComponent(lsDateString + 'Tag'))
    , TLabel(FindComponent(lsDateString + 'Anzahl'))
    , TPanel(FindComponent('Feld' + lsDateString))
    );
end;
)
Nr.1 Delphi-Tool: [F7]

Geändert von ConnorMcLeod ( 5. Sep 2016 um 16:58 Uhr)
  Mit Zitat antworten Zitat