//********************************************************************* //* FormatDate 2020-07-09 * //* >> OnArticleListPaint << * //* * //* Mit diesem Script wird das Aussehen der Thread-Pane beinflusst. * //* So wird hier bspw. das Datum individuell eingestellt. * //* * //* Funktionalitaet: [x] neutral * //* [ ] nur Basis_Modul * //* [ ] nur Pathfinder * //* * //* Datum : 15.06.2009 * //* Autor : Dietmar Vollmeier * //* Ueberarbeitet : Thomas Barghahn 09.07.2020 * //* * //* DateiName : _i_OALP_FormatDate.ds * //* Einbindung : {$I _i_OALP_FormatDate.ds} * //* Aufruf : Result := FormatDate (PaintString); * //********************************************************************* Procedure Init_FormatDate( Var BackD, ChoiceBackD : Integer; Var DTFmt, TFmt, BackDPrefix, BackDSuffix, DStrH, DStrG, DStrV, DStrZ, DStrMo, DStrDi, DStrMi, DStrDo, DStrFr, DStrSa, DStrSo : String); Begin //{-------------------------------------------------------------------} //{ Anwenderspezifische Einstellungen } //{-------------------------------------------------------------------} // Für das Format der Datums- und Zeitanzeigen verwende die Delphi-Syntax, // wie in der 4d-Hilfe unter "Date-Time Format Strings" oder // z.B. auf folgender Seite angegeben // -> http://www.delphibasics.co.uk/RTL.asp?Name=FormatDateTime // Wie soll Datum/Uhrzeit formatiert werden? // DTFmt := 'd.m.yyyy (hh:nn)'; DTFmt := 'dd.mm.yyyy hh:nn:ss'; // Wie soll die Uhrzeit formatiert werden, wenn sie alleine oder zusammen mit // den Speziellen- bzw. Wochentagen angezeigt wird? // TFmt := '(hh:nn)'; // TFmt := '(hh:nn:ss)'; TFmt := 'hh:nn:ss'; // Spezielle Tage definieren // Heute // Bei DStrH := '' wird nur die Uhrzeit angezeigt // DStrH := 'Heute '; DStrH := ''; // Gestern // Bei DStrG := '' wird auf folgende Einstellungen zurückgegriffen DStrG := 'Gestern '; // Vorgestern // Bei DStrV := '' wird auf folgende Einstellungen zurückgegriffen DStrV := 'Vorgestern '; // Zukunft // Bei DStrZ := '' wird Datum/Uhrzeit angezeigt, wie unter DTFmt angegeben DStrZ := 'Zukunft '; // Wochentage definieren DStrMo := 'Montag '; DStrDi := 'Dienstag '; DStrMi := 'Mittwoch '; DStrDo := 'Donnerstag '; DStrFr := 'Freitag '; DStrSa := 'Samstag '; DStrSo := 'Sonntag '; // Wieviele vergangene Tage sollen speziell formatiert dargestellt werden? // Darüber hinaus wird Datum/Uhrzeit angezeigt, wie unter DTFmt angegeben. // BackD := 3; BackD := 3; // Wie sollen diese Tage dargestellt werden? // 1 ... BackDPrefix und -suffix (siehe weiter unten) werden genutzt // Das Ergebnis wäre dann z.B. 'vor x Tagen' // 2 ... Wochentage werden angezeigt // Wenn bei BackD mehr als 7 Tage eingegeben wurde, dann werden die // darüber hinausgehenden Tage wie unter '1' angezeigt! // ChoiceBackD := 1; ChoiceBackD := 1; // Einstellungen für BackDPrefix und -suffix BackDPrefix := 'vor '; BackDSuffix := ' Tagen '; end; //{-------------------------------------------------------------------} //{ Ende der Einstellungen } //{-------------------------------------------------------------------} //{===================================================================} //{ !!! Ab hier bitte nichts mehr ändern !!! } //{===================================================================} //--[ Function FormatDate ]-------------------------------------------- Function FormatDate(PS : WideString) : WideString; Var DaysAgo, BackD, ChoiceBackD : Integer; DStr, DTFmt, TFmt, BackDPrefix, BackDSuffix : String; DateTime : TDateTime; DStrA : Array[0..3] of String; WDStrA : Array[1..7] of String; y, m, d, dow : Word; Begin Init_FormatDate(BackD, ChoiceBackD, DTFmt, TFmt, BackDPrefix, BackDSuffix, DStrA[0], DStrA[1], DStrA[2], DStrA[3], WDStrA[2], WDStrA[3], WDStrA[4], WDStrA[5], WDStrA[6], WDStrA[7], WDStrA[1]); DateTime := StrToDateTime(PS); DaysAgo := Trunc(Now()) - Trunc(DateTime); If DaysAgo < 0 Then DStr := DStrA[3] Else If DaysAgo <= BackD Then Begin Case DaysAgo of 0,1,2: DStr := DStrA[DaysAgo]; End; If (DaysAgo > 0) And (DStr = '') Then Begin If (ChoiceBackD = 1) Or (DaysAgo > 7) Then DStr := BackDPrefix + IntToStr(DaysAgo) + BackDSuffix Else Begin DecodeDateFully(DateTime, y, m, d, dow); DStr := WDStrA[dow]; End; End; End; If (DaysAgo = 0) Or (DStr > '') Then result := DStr + FormatDateTime(TFmt, StrToDateTime(PS)) Else result := FormatDateTime(DTFmt, StrToDateTime(PS)); End; //--[ Ende Function FormatDate ]---------------------------------------