見出し画像

Power Apps 教えてAkiraせんせー!⑦

@akira_365🐟さんの講習7回目が終了しました!
カレンダー作成の続きです📅✨

6回目はこちら

Gallery(galCalender)ViewScreenにコピペし配置したところからです。

曜日欄の追加

オーサリングメニューから空の垂直 Galleryを挿⼊
Items=["月","火","水","木","金","土","日"]

GalleryTemplate を選択しLabel コントロールを配置します。
Text=ThisItem.Value


選択されている calendar の⽇付を表⽰

・Gallery(galCalender)Template 内Label コントロールを配置


まずは今日の日付を取得していきます🕵️

Text=DateAdd(Today(),-Day(Today()))・・・先月末

Text=DateAdd(Today(),-Day(Today())+1)・・・月初

Text=DateAdd(Today(),-Day(Today())+1+lblCalendarNum)

1~42をカンマ区切りにし、ひとつひとつがItem(ひとつのレコードでテーブルになっていない)

Text=DateAdd(Today(),-Day(Today())+1+lblCalendarNum-lblWeekday)

週番号5(木曜日)を引く

今日の日付が表示されました!この先、大活躍します🧜⭐
名前:lblCalendarDay

さらに、Label コントロールを配置します。
Text=galCalendar.Selected.lblCalendarDay
名前:lblSelectedday

「選択されている」という値は、(コントロール名).Selected

これで、選択されている日付を表示することができます。『2022年9月』と表示したいですが、変数を使わないと『○月』という表示にするのは難しいため、今の時点では日付を表示で進めます。

※講習後にプレビューモードにして日付選択を試してみた様子です

選択した日付が、Label コントロール内へ表示されました


⽇曜⽇は「Pink」⼟曜⽇は「AliceBlue」⽉外は「Gray」に設定


・9月じゃないものは「Gray」
lblCalendarValue
Fillに設定していきます。

まず、lblCalendarDayという日付を表すLabel の月と、Todayの月が同じなら

9月以外ならを求めたい・・・違うならばという条件には  ❗ をつけます。

!(ビックリマーク)は、そうでないならばという意味

9月以外の日付はGrayになりました!

・日曜日や土曜日の判別 Weekday関数(週番号)
週番号が 1(日曜日)ならPink、週番号が 7(土曜日)ならAliceBlue
他はWhite

Fill=If( !(Month( lblCalendarDay ) = Month(Today())), Gray, Weekday( lblCalendarDay ) = 1, Pink, Weekday( lblCalendarDay ) = 7, AliceBlue, White )

IF関数は順番に定義される

一番最初に、月外をGrayと指定した後は、それ以外で設定される。
ということは、最初に月外の設定をしていれば、そのあとは例え日曜日だとしても、9月以外の日曜日はpinkにはならない。

乱雑な関数の整理


Gallery(galCalender)
Template の中にLabel コントロールがたくさんあるのでわけがわからなくなってしまいます・・・

この2つはカレンダーを作成する過程で作った値

・lblCalendarNumとlblWeekdayを置き換え
まずは、lblCalendarValueを編集します。

lblCalendarDayのDayをとっていた

Label コントロールで置き換えていたものを、そのもそもの要素へ書き換えます。

置き換え後、「lblWeekDay」と「lblCalendarNum」は削除

元々の値は変わらないので、作成したカレンダーの表示も変わらず👍

変数


変数という概念を理解していきます。

最終的に、前月、翌月の切り替えを行いたいのですが、今はまだ切り替えができない状態です。
lblSelecteddayで、選択したところが何月何日かは取得できますが、先月のデータでカレンダーを表示したくてもできません。

lblCalendarDayの動的な値であるToday()から取得しているため
Weekday・・・Todayから発生した1日の日付の週番号をとっている

では、どうすればいいのか。
Today()が変われば、先月や来月の値が取得できる!
ただ、動的に変えるとなると混乱してしまう💦
そこで変数を利用していきます。

・変数を体験
①空のScreen追加
②コントロール配置・・・テキスト入力、ボタン、ラベル
③ラベル Text="変数aaaの値は「"&"」です。"

aaaという変数を用意・・・aaaという箱
aaaという箱にものを入れる機能は定義していないためエラー
※「"&(テキスト)&"」・・・テキスト同士をつなぐ

④ボタン OnSelect=UpdateContext({aaa:TextInput1.Text})

「aaa」という変数の中に、TextInput1の Text 値を代入する関数

⑤プレビューモードで値を入れて実行

数字でもテキストでもOK

変数を駆使して、月の切り替えを行っていくのは楽しみです✨
講習中はついていくのが精一杯です・・・いやほぼ中断して補習していただいています🐤💦

次回もよろしくお願いします!



memo:
Calendar.WeekdaysLong()・・・戻り値には、"Sunday" から始まる、各曜日の名前が入る

[ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ]


この記事が気に入ったらサポートをしてみませんか?