==========================================================================
                  J_[\R|[lg TCalendarX
                  Calendar Image Component Version 0.5
                  Copyright(C)  2024 `  seizo
==========================================================================
y Tv z
   FXȃ^CṽJ_[\ׂ̃R|[lg TCalendarX
   쐬܂B

   TCalendarX ͈̓ȉ̒ʂłB
   EjjԂŕ\邱Ƃ\
   E̔NƂ̏j̕ύXɏ_ɑΉ\
   E\錎RɎw\
   EÑJ_[𓯎ɕ\\
   EtHg̑傫ύX\ 1
   EtƂ̃}X̑傫RɎw\
   EtƂɌrăXPW[\̗lȃJ_[쐬\
   EJ_[\xɃOtBbNƃeLXg̗f[^쐬 2

   TCalendarX ́ATImage pĂ܂̂ŁATImage ɃJ_[\@\
   ǉ̂ƂoŎgpł܂BLoadFromFile ŉ摜ǂݍ
   A摜̔Cӂ̈ʒuɃJ_[\Ƃ\łB

   o^́AKȃtH_쐬āACalendarX.pas, CalendarX.dcr Rs[
   AR|[lg̃CXg[ŁACalendarX.pas IĉB

    1 Aulr SVbNvƁulr vȊÕtHggp
        J_[̕\ʒuꍇ̂ŁAȂׂ2
        tHg̉ꂩgplɂĉB

    2 ʏ\̂̓OtBbN̕ŁAeLXgf[^́AListC
        ƂvpeBŎ擾܂B(property ListC: TStringList;)
        OtBbNf[^́APicture.Bitmap Ŏ擾o܂B


y vpeB z
   ̃R|[lg TCalendarX ŒǉꂽvpeB́Aȉ̒ʂłB

   property CalendarEnabled: Boolean;
     J_[\\ɂ邩ǂ̃XCb`
       True=J_[\AFalse=J_[\֎~

   property CalendarLeft: Integer;
     J_[\鍶̃sNZPʂXW
     
   property CalendarTop: Integer;
     J_[\鍶̃sNZPʂYW

   property CalendarOnly: Boolean;
     J_[݂̂\邩ǂ̃XCb`
       True=J_[݂̂\
       False=łɉ摜\Ă΂̏ɃJ_[\

   property StartYear: Integer;
     J_[̕\JnN()
     ǂ̗lȔN͂ł܂A݂̐ẼJ_[̓OSI
     ł̂1582N1015`̂̂J_[Ƃ
     Ȃ܂BȑO̓EX()̗pĂ܂B

   property StartMonth: Integer;
     J_[̕\Jn(1 ` 12)

   property RowB: Integer;
     1ubN̏č(1 ` 12)

   property ColB: Integer;
     1ubN̉̌(1 ` 12)

   property RowC: Integer;
     J_[̏c̍őubN(1 ` 12)

   property ColC: Integer;
     J_[̉̍őubN(1 ` 12)

   property StartPoint: Integer;
     ubNɂ\Jnʒu(1 ` RowB * ColB)

   property Count: Integer;
     v\(1 ` 12 * 12)

   property RCount: Integer;
     ۂ̕\Ԃ[hIB̃vpeBłB
     Count  12 * 12  RowB * ColB * RowC * ColC
     ̒ōłۂɕ\錎ƂȂ܂B

   property DayH: Integer;
     t̍(1 ` 10 )

   property DayW: Integer;
     t̕(3 ` 10 )

   property GapH: Integer;
     ԂubNԂ̏c̃Mbv(0 ` 10 )

   property GapW: Integer;
     ԂubNԂ̉̃Mbv(0 ` 10 )

   property Lines: Boolean;
     J_[Ɍrǂ߂B

   property SundayRed: Boolean;
     j̓tԂ\邩ǂ߂B

   property HolidayRed: Boolean;
     j̓tԂ\邩ǂ߂B

   property ListC: TStringList;
     J_[Ŝ̃eLXgf[^̊i[

   property Holiday: TStringList;
     j̈ꗗf[^̊i[

   property HolidaySM: TStringList;
     HEt̗\l̊i[

   property AutoSM: Boolean;
     HEtIɂ̔N̓ɕύX܂B


y ubNƃJ_[Ŝ̊֌W z
   TCalendarX ̃f[^̍ŏPʂ͂P̃J_[łB  
     
   AubNƂ RowB~ColB ̃J_[̏W̎ŃJ_[
   \̊{PʂłB

   āARowC~ColC ̃ubN̏WJ_[ŜƂɂȂ܂B

   fBtHgł́ARowB = 4, ColB = 3, RowC = 1, ColC = 1 ƂȂĂA

   v12Ȃ킿1N\lɂȂĂ܂B


y \bh z
   ̃R|[lg TCalendarX Œǉꂽ\bh́Aȉ̒ʂłB

   function LeapYear(Year: Integer): Boolean;
     ^ꂽN邤Nł邩ǂԂ֐łB

   function FirstWhatday(Year, Month: Integer): Integer;
     ^ꂽ1̗jԂ֐łB

   function GetDay(var DC: TDateC): Boolean;
     TDateC  Day ȊÕo[ Day ߂֐łB
      True Ԃ܂BTDateC ͎̗lɒ`Ă܂B
     { TCalendarX Ŏgp{f[^^ }
     PDateC = ^TDateC;
     TDateC = record
       Year: Integer;     // N
       Month: Integer;    // (1 ` 12)
       Day: Integer;      // (1 ` 31)
       Whatday: Integer;  // j(1 ` 7 ==> ΐ؋y)
       Week: Integer;     // T(1 ` 6)
     end;

   function GetWhatday(var DC: TDateC): Boolean;
     TDateC  Whatday  Week ȊÕo[ Whatday  Week ߂
     ֐łB True Ԃ܂BTDateC ͎̗lɒ`Ă܂B
     { TCalendarX Ŏgp{f[^^ }
     PDateC = ^TDateC;
     TDateC = record
       Year: Integer;     // N
       Month: Integer;    // (1 ` 12)
       Day: Integer;      // (1 ` 31)
       Whatday: Integer;  // j(1 ` 7 ==> ΐ؋y)
       Week: Integer;     // T(1 ` 6)
     end;


y gp@ z
   ̃vpeBݒ肷ꍇAݒ肷xɃJ_[ĕ\
   ʂ܂B̗lȎׂɂ CalendarEnabled vpeB
   擪 Falseɐݒ肵ȂSẴvpeBݒ肵IƂōŌ
   CalendarEnabled vpeB True ɂĉB


y eNjJ z
   ł́ATCalendarX ̏j̈ɂĉ܂B

  { 2025 N݂̏j̈ꗗf[^ }
  Holiday2025: String = '0101' + #13#10 + '01M2' + #13#10 + '0211' + #13#10 +
                        '0223' + #13#10 + '0320' + #13#10 + '0429' + #13#10 +
                        '0503' + #13#10 + '0504' + #13#10 + '0505' + #13#10 +
                        '07M3' + #13#10 + '0811' + #13#10 + '09M3' + #13#10 +
                        '0923' + #13#10 + '10M2' + #13#10 + '1103' + #13#10 +
                        '1123';

  Ɠ{16̏jꂼ4Œ`Ă܂Bej̍ŏ2
  2͓\킵Ă܂BႦ '0503' ́@53 '10M2' 10
  ̑2jł鎖\킵Ă܂B

  { ej1\W߂ }
  Whatdays: String = 'SMTWtFs'; // Sun, Mon, Tue, Wed, thu, Fri, sat ̓

  ƒ`Ă܂̂ŁA6̑3ؗjȂ '06t3' ƕ\LΗǂɂȂ܂B

  { j̈ꗗf[^̊i[ }
  property Holiday: TStringList;

   Holiday2025 ̃f[^fBtHgŊi[Ă܂B

  AutoSM: Boolean; vpeB True ł΁AHEtIɂ̔N
  ̓ɕύX܂AȊȌjς邩m܂B

  Ⴆ΁AC̓71ɕύXꍇ́A

  CalendarX1.Holiday[9] := '0701 // C̓';

  ̗lɂăf[^ύXĉBL̗lɃRg鎖\łB

  Holiday vpeB̌X̃f[^́At̎Ⴂ̂珇ɋLqĉB
    łȂƏj\Ȃꍇ܂B

  { 2025 N݂̏jꗗ }

   1 1  // (0101)
   113  // l̓(01M2)
   211  // LO̓(0211)
   223  // Vca(0223)
   320  // t̓(0320)
   429  // a̓(0429)
   5 3  // @LO(0503)
   5 4  // ݂ǂ̓(0504)
   5 5  // ǂ̓(0505)
   715  // C̓(07M3)
   811  // R̓(0811)
   915  // hV̓(09M3)
   923  // H̓(0923)
  1013  // X|[c̓(10M2)
  11 3  // ̓(1103)
  1123  // ΘJӂ̓(1123)

  { tEH̗\l̊i[ }
  property HolidaySM: TStringList;

   HolidaySM2020 ̃f[^fBtHgŊi[Ă܂B
  AutoSM: Boolean; vpeB True ł΁AHolidaySM ̒lQƂāA
  HEtIɂ̔N̓ɕύX܂B

  t̓ƏH̓͂̔Nɂĕς܂B
  Kvɉ HolidaySM vpeB̃f[^XVĉB
  ȓt͍V䂪ONɔ\f[^ɊÂtc肳܂B

  HolidaySM ŊJƁAȉ̗lɏHEt\e
  eLXg\܂B

   22202020
   23202021
   23212022
   23212023
   22202024
   23202025
     E
     E

   1ڂ2ڂ͏HA3ڂ4ڂ͏tA5ڈȍ~͐N
   \킵Ă܂B̗ł1sڂ́A2020 N̏HEt̃f[^
   \킵Ă܂B

  {  2020 ` 2050 N̏tEH̗\l }

 <N>  <t>       <H>
  2020N   320()    922()
  2021N   320(y)    923()
  2022N   321()    923()
  2023N   321()    923(y)
  2024N   320()    922()
  2025N   320()    923()
  2026N   320()    923()
  2027N   321()    923()
  2028N   320()    922()
  2029N   320()    923()
  2030N   320()    923()
  2031N   321()    923()
  2032N   320(y)    922()
  2033N   320()    923()
  2034N   320()    923(y)
  2035N   321()    923()
  2036N   320()    922()
  2037N   320()    923()
  2038N   320(y)    923()
  2039N   321()    923()
  2040N   320()    922(y)
  2041N   320()    923()
  2042N   320()    923()
  2043N   321(y)    923()
  2044N   320()    922()
  2045N   320()    922()
  2046N   320()    923()
  2047N   321()    923()
  2048N   320()    922()
  2049N   320(y)    922()
  2050N   320()    923()


y VȂ_ z
 // Version 0.3 //  
  Eproperty RCount: Integer; ǉ܂B
    ۂ̕\Ԃ[hIB̃vpeBłB
    Count  12 * 12  RowB * ColB * RowC * ColC
    ̒ōłۂɕ\錎ƂȂ܂B

 // Version 0.4 //  
  Eproperty HolidaySM: TStringList; ǉ܂B
     HEt̗\l̊i[łB

  EHEt̓tIɂ̔N̓ɕύXlɂ܂B
    _ 2020 ` 2050 N̊ԂłB
    
 // Version 0.5 //  
  Eproperty AutoSM: Boolean; ǉ܂B
    HEtIɂ̔N̓ɕύX邩ǂ߂܂B


y oOC z
 // Version 0.2 //  
  EtHgulr SVbNvulr vłAX^CɁuv
    ܂܂ĂƃJ_[̕\ʒu_C܂B

 // Version 0.3 //  
  EVersion 0.2 ̏CtHgulr SVbNvulr v
    X^CɁuv܂܂Ăꍇɗj̕\݂̂_
    C܂B
  EGapH  GapW  0 ɐݒ肷Ɛ\oȂȂ_C܂B


y ^t@C z
   CalendarX.pas  - TCalendarX {̂̃\[Xt@C
   CalendarX.dcr  - TCalendarX ̃ACRpt@C
   Readme.txt     - ̃t@C
   Test.exe       - TCalendarX gpTvAvP[V
   Sample.jpg     - Calendar.exe Ŏgp摜t@C
   Source.zip     - TvAvP[Ṽ\[Xt@C


y 쌠 z
   ̃vO̒쌠́Aseizo L܂B


y \tgEFA z
   ̃vO̓t[\tgEFAłBȉ̎䏳΁A
   RɃRs[AgpAzzsȂĒč\܂B

   ̃vOgpł̂Ȃ鑹QAɂ͈
     ӔC𕉂܂B̃vO̎gṕAgp҂̐ӔCɂ
     sȂĉB

   ̃vOzzꍇ́ÃhLgt@C܂
     SẴt@CIWȉԂŔzzĉB


y ̑ z
   ܂܂Aǂ̗]n͂񂠂Ǝv܂BoO⊴zAúA
   ǂ̂ł͂ȂHv̂ӌ܂烁[
   AB

   seizo̘A
     e-mail    : seizo@mars.dti.ne.jp
     ̃R|[lgAvŏЉĂ܂B
     http://www.vector.co.jp/vpack/browse/person/an003597.html

