第5回は「カレンダー作成」というお題です。
空の画面へギャラリーを挿入し、その中に日付を表示させる方法を学びました。
で、ですね、いつも通り「興味を持ったことを深掘り、実証実験!」と行きたかったのですが、今回初めて「宿題」が出たんです!!!夏休みが終わった9月1日に宿題を与えられるアラフィフ・・・
宿題を解く経緯をまとめることにしました。トライ&エラー中の「心の声」をそのまま文章にしましたので、見苦しい文章になっていますこと、ご容赦くださいませ。
塾で教わったこと
宿題
- 曜日欄を作ってみましょう
- 選択されているcalendarが何年の何月か表示してみよう
- 土曜日は「AliceBlue」日曜日は「Pink」月外は「Gray」にラベルのFillを設定してみましょう
直観
- 小難しい数式はいらんな
- ちょっと考えんといかんな
- こりゃ~ちょっと・・・。If構文使うね、月内を基準にしてtrueの時が白で、falseの時がグレー!あ、土日は???
問1 曜日欄を作ってみましょう
- 日付のギャラリーをコピペして、ギャラリーのTemplateSizeを1行になるよう修正
- Itemsプロパティに日~土を入力
※ここまではすんなりできました
これだけだと表示されるのは日付のまま。Textプロパティが怪しい!
プロパティを検索してもTextプロパティがないっ!!ギャラリーを選択したままだった(>_<)
- ラベルのTextプロパティを選択して、さてここ何を入れるか・・・(沈黙)
- 日付を表示したときに入れた関数は・・・ThisItem.Valueこれをコピペする
一問目、突破!!
問2 選択されているcalendarが何年の何月か表示してみよう
月初日を求めるときにToday関数を使ったから、月の表示もToday関数が使えるはず!!
- ラベルを挿入
ラベルのTextプロパティに関数入れて、TextプロパティにText関数入れていいの? Date関数?
いやいや、Today関数入れるなら、Date関数は違う・・・試しにText関数入れてみよう - Textプロパティに Text(Today(), “yyyy年mm月”)と入力
二問目も突破!!
ここまでは、何となくひらめいたトライ&エラーで突破できました。
残すは、難問・・・。
問3 土曜日は「AliceBlue」日曜日は「Pink」月外は「Gray」にラベルのFillを設定してみましょう
月外と、土日を分けて考えることにしました。
問3-1 月外は「Gray」に設定
イメージは Fill=If(今月だったら,白,グレー)
Textに設定したDay(DateAdd(Today(),-Day(Today())+1+lblCalendarNum-lblWeekday))
これを使えば何とかなるはず!
~Take1~
If(Day(DateAdd(Today(),-Day(Today())+1+lblCalendarNum-lblWeekday))=Today(),White,Gray)
こんな感じ?・・・だけど全部グレーになった。
「月よ、月!月!」
~Take2~
If(Month(DateAdd(Today(),-Day(Today())+1+lblCalendarNum-lblWeekday))=Today(),White, Gray)
?ん?まだグレー・・・
~Take3~
If(Month(DateAdd(Today(),-Day(Today())+1+lblCalendarNum-lblWeekday))=Month(Today()),White,Gray)
「月」なら「月」で、条件を揃えないといけませんね。三問目-1 何とか突破!!
問3-2 土曜日は「AliceBlue」日曜日は「Pink」にラベルのFillを設定してみましょう
問3-1のカレンダーギャラリーを複製して、考えることにします。
ギャラリーを眺めながら数分間沈黙・・・。
もともと、日数を入れるときにギャラリーのItemに「1~42」を設定していました。
土日の位置は絶対に変わらないので、絶対に変わらないこの「1~42」の値を利用するのが手っ取り早いのではなかろうか・・・
- 日曜日:1,8,15,22,29,36 ⇒ AliceBlue
- 土曜日:7,14,21,28,35,42 ⇒ Pink
ThisItem.Valueが上記の値の時、色を設定すれば良いのでは???
PowerAppsのIf関数はExcelのIf関数と似て非なるものということを思い出しました!
If(ThisItem.Value=1,AliceBlue,ThisItem.Value=8,AliceBlue,ThisItem.Value=15,AliceBlue,ThisItem.Value=22,AliceBlue,ThisItem.Value=29,AliceBlue,ThisItem.Value=36,AliceBlue,ThisItem.Value=7,Pink,ThisItem.Value=14,Pink,ThisItem.Value=21,Pink,ThisItem.Value=28,Pink,ThisItem.Value=35,Pink,ThisItem.Value=42,Pink,White)
あら、まぁ。できちゃった。
問3-1と問3-2をドッキング
これだと、月外の定義がおかしくなるのです。さきに定義した方が強いです。
ここで色々と実験してみましたが、思い通りにはいかず・・・挫折(泣)
感想とまとめ
悶々とした沈黙から、突然ひらめく瞬間って、何とも言えない嬉しい感じです。
問3-2は、絶対にもっとスッキリした書き方があると思うのですが、とりあえず形にはなったのでひとまず終了。
答え合わせを待つこととします。