ひまわりユーザー プログラム掲示板 バックアップ
注意
ひまわりのススメ  □ ひまわり本家Home  □ 新着記事  □ 新規投稿  □ SEARCH  □ 参考プログラム集
ツリー表示

MESSAGE 逆さカレンダー /Yosshy (02/09/07(Sat) 12:46) [38]


親記事 / 返信無し
NO.38  逆さカレンダー
□投稿者/ Yosshy -(2002/09/07(Sat) 12:46:09)
□U R L/ http://www.aa.alpha-net.ne.jp/yosshy4/yosshy/top.html
「Y'sカレンダー ver1.20」からの派生作品です。設定等の機能はありません。
{▼ここから}
{---プログラム掲示板投稿フォーム---
【ソフト名】逆さカレンダー (バージョン 1.00)
【作 成 者】Yosshy (連絡先:yosshy4@m21.alpha-net.ne.jp)
【種  別】フリーソフトウェア
【ひまわりのバージョン】ver.1.56
【転  載】可(転載条件:作者にメールで連絡すること)
【改変運用】可
【ひまわり本体への梱包】可
【実行時に利用作成するファイル】なし
【コメント】180度逆さのカレンダーです
設定とかは変えられませんが、ジョークカレンダーとして。
ちょっと見辛いです。
---投稿フォームここまで---}
「User32」の、「DWORD GetSystemMenu(DWORD,BOOL)」を、「?,?」の、「API_GetSystemMenu」として、DLLを利用。
「User32」の、「BOOL EnableMenuItem(DWORD,int,int)」を、「?,?,?」の、「API_EnableMenuItem」として、DLLを利用。
*コントロールパネル
コントロールフォームを、作る。
   その、スタイルは、ダイアログスタイル。
   その、可視は、オン。
   その、テキストは、「操作パネル」。
   その、幅は、120。
   その、高さは、200。
文字サイズ=10。
(10,10)に、任意月エディタを、作る。
   そを、コントロールフォームに、乗せる。
   その、幅は、80。
(90,10)に、Goボタンを、作る。
   そを、コントロールフォームに、乗せる。
   その、幅は、20。
   その、イベントは(
      それは、(任意月エディタの、テキスト)。
      もし、それ=「」ならば、待機。
      もし、文字数(それ)=7でなければ、待機。
      今月=それ&「/01」。
      メインへ、飛ぶ。
   )
(5,50)に、前年ボタンを、作る。
   そを、コントロールフォームに、乗せる。
   その、幅は、20。
   その、テキストは、「≪」。
   その、イベントは(
      今月=日付加算(今月,「-1/0/0」)。
      メインへ、飛ぶ。
   )
(27,50)に、前月ボタンを、作る。
   そを、コントロールフォームに、乗せる。
   その、幅は、20。
   その、テキストは、「<」。
   その、イベントは(
      今月=日付加算(今月,「-0/1/0」)。
      メインへ、飛ぶ。
   )
(50,50)に、現在月ボタンを、作る。
   そを、コントロールフォームに、乗せる。
   その、幅は、20。
   その、テキストは、「○」。
   その、イベントは(
      今月=LEFT(今日,8)&「01」。
      メインへ、飛ぶ。
   )
(73,50)に、来月ボタンを、作る。
   そを、コントロールフォームに、乗せる。
   その、幅は、20。
   その、テキストは、「>」。
   その、イベントは(
      今月=日付加算(今月,「0/1/0」)。
      メインへ、飛ぶ。
   )
(95,50)に、来年ボタンを、作る。
   そを、コントロールフォームに、乗せる。
   その、幅は、20。
   その、テキストは、「≫」。
   その、イベントは(
      今月=日付加算(今月,「1/0/0」)。
      メインへ、飛ぶ。
   )
(20,120)に、方法ラベルを、作る。
   そを、コントロールフォームに、乗せる。
   その、テキストは、「≪:1年戻る\n<:1ヶ月戻る\n○:現在月\n>:1ヶ月進む\n≫:1年進む\nGo:記した月へ」。
システムメニューのハンドル=API_GetSystemMenu((コントロールフォームの、ハンドル),0)
API_EnableMenuItem(システムメニューのハンドル,$F060,1)

*タイトル
母艦の、タイトルは、「Y'sカレンダー」
母艦の、リサイズは、オフ。
今月=LEFT(今日,8)&「01」。

*メニュー
設定メニューを、メニュー作成。
   その、テキストは、「&Control」。
設定メニューに、印刷メニューを、メニュー追加。
   その、テキストは、「印刷」。その、ショートカットキーは、「Ctrl+P」。
   その、イベントは(
      *プリント
      母艦印刷。
   )
設定メニューに、保存メニューを、メニュー追加。
   その、テキストは、「保存」。その、ショートカットキーは、「Ctrl+F」。
   その、イベントは(
      *画像として保存
      ダイアログ初期値=「」。
      ダイアログキャンセルの値=「」。
      「ビットマップ形式 (*.bmp)(推奨)|*.bmp|PNG形式 (*.png)|*.png|JPEG形式 (*.jpg)|*.jpg|全てのファイル (*.*)|*.*」の、書込ファイル選択。
      もし、それが、「」でなければ、(
         それへ、母艦を、イメージ保存。
      )
      とりあえずへ、飛ぶ。
   )
設定メニューに、区切り線1を、メニュー追加。
   その、テキストは、「-」。
設定メニューに、バージョンメニューを、メニュー追加。
   その、テキストは、「バージョン」。
   その、イベントは(
      文字サイズ=10。
      「逆さカレンダー ver.1.00\n (c)Yosshy」と、言う。
      文字サイズ=12。
   )
設定メニューに、終了メニューを、メニュー追加。
   その、テキストは、「終了」。その、ショートカットキーは、「Alt+X」。
   その、イベントは(
      *ENDE
      「終了しますか」と、二択。
      もし、それが、はいならば、(INIファイル閉じる。終わり。)
   )
システムメニューのハンドル=API_GetSystemMenu((母艦の、ハンドル),0)
API_EnableMenuItem(システムメニューのハンドル,$F060,1)

*メイン
画面クリア。
*カレンダー表示
calw=180。calh=162。
母艦の、幅は、calw。
母艦の、高さは、calh。
週=「日,月,火,水,木,金,土」。
*日数設定
今月を、「/」で、区切る。
Yr=それ#0。M=それ#1。
日数=「31\n28\n31\n30\n31\n30\n31\n31\n30\n31\n30\n31」
もし、Yr%400=0ならば、日数#1="29"。
違えば(もし、Yr%100=0ならば、日数#1="28"。
   違えば(もし、Yr%4=0ならば、日数#1="29"。
     違えば、日数#1="28"。
   )。
)。
D=日数#(M-1)。
'ここよりカレンダーの表示
xサイズ=25;yサイズ=20
(90,calh-yサイズ)へ、移動。
文字色=黒色。
文字サイズ=12。
「月{M}年{Yr}」と、表示。
lx=INT(xサイズ/10);ly=INT(yサイズ/10)
x=calw-xサイズ;y=calh-yサイズ*2
7回(
   回数で、条件分岐。
      1の時(文字色=赤色)
      7の時(文字色=青色)
      その他の時(文字色=黒色)
   (x,y)へ、移動。
   (右寄せ(週#(回数-1)#0,2))と、表示。
   x=x-xサイズ。
)
月曜判定=0
x=calw-xサイズ;y=y-yサイズ
D回(
  本日=日付加算(今月,「0/0/{回数-1}」)。
   当日=本日。
  DAY=曜日を数値で得る(本日)。
   もし、DAY=2ならば、(月曜判定=月曜判定+1)
  DAYで、条件分岐。
      1の時(字色=1)
      7の時(字色=2)
      その他の時(字色=0)
   祝日判定を、呼ぶ。
  字色で、条件分岐。
      1の時(文字色=赤色)
      2の時(文字色=青色)
      3の時(文字色=オレンジ色)
      その他の時(文字色=黒色)
  本日=RIGHT(本日,2)
  もし、LEFT(本日,1)=0ならば、本日=RIGHT(本日,1)
  本日=右寄せ(本日,2)。
  もし、回数=1ならば、x=x-(DAY-1)*xサイズ。
  (x,y)へ、移動。
   ペン色=白色。
   塗り色=白色。
   もし、同じ日=1ならば、(ペン色=緑色。)
   ペン太さ=1。
   (x-lx,y-ly)から、(x-lx+yサイズ,y-ly+yサイズ)へ、四角形。
   本日と、表示。
  x=x-xサイズ。もし、DAY%7=0ならば、(x=calw-xサイズ;y=y-yサイズ)
)
文字色=黒色。
文字サイズ=12。
待機。

*祝日判定
'休日は1、祝日は3、今日は4
月日=RIGHT(本日,5)
春分=INT(20.8431+0.242194*(Yr-1980)-INT((Yr-1980)/4))
秋分=INT(23.2488+0.242194*(Yr-1980)-INT((Yr-1980)/4))
'その日判定
同じ日=0
もし、(本日=今日)ならば、(同じ日=1)。
'固定の祝日
月日で、条件分岐。
   「01/01」の時、字色=3
   「02/11」の時、字色=3
   「03/{春分}」の時、字色=3
   「04/29」の時、字色=3
   「05/03」の時、字色=3
   「05/05」の時、字色=3
   「09/{秋分}」の時、字色=3
   「11/03」の時、字色=3
   「11/23」の時、字色=3
   「12/23」の時、字色=3
   「05/04」の時、字色=3
もし、DAY=2ならば、(
   月日で、条件分岐。
      「01/02」の時、字色=1
      「02/12」の時、字色=1
      「03/{春分+1}」の時、字色=1
      「04/30」の時、字色=1
      「05/04」の時、字色=1
      「05/06」の時、字色=1
      「09/{秋分+1}」の時、字色=1
      「11/04」の時、字色=1
      「11/24」の時、字色=1
      「12/24」の時、字色=1
)
もし、DAY=1ならば、(
   月日で、条件分岐。
      「05/04」の時、字色=1
)
'2000年からのハッピーマンデー対応
もし、Yr<2000ならば、(
   月日で、条件分岐。
      「01/15」の時、字色=3
      「10/10」の時、字色=3
   もし、DAY=2ならば、(
      月日で、条件分岐。
         「01/16」の時、字色=1
         「10/11」の時、字色=1
   )
)
違えば、(
   もし、月曜判定=2ならば、(
      もし、DAY=2ならば、(
         Mで、条件分岐。
            「01」の時、字色=3
            「10」の時、字色=3
      )
   )
)
'2003年からのハッピーマンデー対応(敬老の日)
もし、Yr<2003ならば、(
   月日で、条件分岐。
      「09/15」の時、字色=3
   もし、DAY=2ならば、(
      月日で、条件分岐。
         「09/16」の時、字色=1
   )
)
違えば、(
   もし、月曜判定=3ならば、(
      もし、DAY=2ならば、(
         Mで、条件分岐。
            「09」の時、字色=3
      )
      もし、DAY=3ならば、(
         月日で、条件分岐。
            「09/{秋分-1}」の時、字色=3
      )
   )
)
'2003年からのハッピーマンデー対応(海の日)
もし、Yr>1995ならば、(
   もし、Yr<2003ならば、(
      月日で、条件分岐。
         「07/20」の時、字色=3
      もし、DAY=2ならば、(
         月日で、条件分岐。
            「07/21」の時、字色=1
      )
   )
   違えば、(
      もし、月曜判定=3ならば、(
         もし、DAY=2ならば、(
            Mで、条件分岐。
               「07」の時、字色=3
         )
      )
   )
)
戻る。
{▲ここまで}



- Child Tree -