Akira 先生の Power Platform 塾 第5回!

第5回は「カレンダー作成」というお題です。
空の画面へギャラリーを挿入し、その中に日付を表示させる方法を学びました。

で、ですね、いつも通り「興味を持ったことを深掘り、実証実験!」と行きたかったのですが、今回初めて「宿題」が出たんです!!!夏休みが終わった9月1日に宿題を与えられるアラフィフ・・・

宿題を解く経緯をまとめることにしました。トライ&エラー中の「心の声」をそのまま文章にしましたので、見苦しい文章になっていますこと、ご容赦くださいませ。

塾で教わったこと

宿題

  1. 曜日欄を作ってみましょう
  2. 選択されているcalendarが何年の何月か表示してみよう
  3. 土曜日は「AliceBlue」日曜日は「Pink」月外は「Gray」にラベルのFillを設定してみましょう

直観

  1. 小難しい数式はいらんな
  2. ちょっと考えんといかんな
  3. こりゃ~ちょっと・・・。If構文使うね、月内を基準にしてtrueの時が白で、falseの時がグレー!あ、土日は???

問1 曜日欄を作ってみましょう

  1. 日付のギャラリーをコピペして、ギャラリーのTemplateSizeを1行になるよう修正
  2. Itemsプロパティに日~土を入力

※ここまではすんなりできました

これだけだと表示されるのは日付のまま。Textプロパティが怪しい!
プロパティを検索してもTextプロパティがないっ!!ギャラリーを選択したままだった(>_<)

  1. ラベルのTextプロパティを選択して、さてここ何を入れるか・・・(沈黙)
  2. 日付を表示したときに入れた関数は・・・ThisItem.Valueこれをコピペする

一問目、突破!!

問2 選択されているcalendarが何年の何月か表示してみよう

月初日を求めるときにToday関数を使ったから、月の表示もToday関数が使えるはず!!

  1. ラベルを挿入
    ラベルのTextプロパティに関数入れて、TextプロパティにText関数入れていいの? Date関数?
    いやいや、Today関数入れるなら、Date関数は違う・・・試しにText関数入れてみよう
  2. 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は、絶対にもっとスッキリした書き方があると思うのですが、とりあえず形にはなったのでひとまず終了。

答え合わせを待つこととします。

杉山花代

PAGE TOP