Mais conteúdo relacionado
Power platform Day Winter 19 -PowerApps
- 14. カレンダーの本体 – MONTHDAYGALLERY
MonthDayGalleryが本体。これがちょっと大変
~MonthDayGalleryでの処理~
1. 表示する月の初日を求める
2. 表示する月の最初の週の日曜日の日付を求める
3. 表示する月の最終日を求める
4. 元のテーブルの値と、表示している実際の日付の差分
が10より小さければ塗りつぶしなし。それ以外の日付で
はグレーに塗りつぶす
- 23. どうやってデータを作るか
すべての起点は firstDayOfMonth. ほかの2つはそこから計算される
Set(_firstDayInView,DateAdd(_firstDayOfMonth, -(Weekday(_firstDayOfMonth) - 1), Days));
Set(_lastDayOfMonth,DateAdd(DateAdd(_firstDayOfMonth,1, Months), -1, Days));
- 24. どうやってデータを作るか
すべての起点は firstDayOfMonth. ほかの2つはそこから計算される
Set(_firstDayInView,DateAdd(_firstDayOfMonth, -(Weekday(_firstDayOfMonth) - 1), Days));
Set(_lastDayOfMonth,DateAdd(DateAdd(_firstDayOfMonth,1, Months), -1, Days));
- 27. データを作成しよう
最初につくったアプリのScreen1に移動し、ボタンを追加
ボタンのOnSelectプロパティに以下の関数をコピペ
//初期の表示年は今年
UpdateContext({_selectedYear:Year(Today())});
//まず2019/1/1~2019/12/1まで、12か月の初日を収めた仮のCollectionを作成
Clear(colTmp);
ForAll([1,2,3,4,5,6,7,8,9,10,11,12],
Collect(colTmp,{_firstDayOfMonth:Date(_selectedYear,Value,1)})
);
//カレンダーの表示に必要な_firstDayInViewと_lastDayOfMonthを列としてCollectionに追加
ClearCollect(colCalendar,
AddColumns(colTmp,
//それぞれの定義はテンプレートと同一
"_firstDayInView",DateAdd(_firstDayOfMonth,-(Weekday(_firstDayOfMonth) - 2 + 1), Days),
"_lastDayOfMonth",DateAdd(DateAdd(_firstDayOfMonth,1, Months), -1, Days)
)
);
//あとのためカレンダー表示・非表示用の変数を用意
UpdateContext({_calendarVisible:true})
- 35. まとめ
カレンダースクリーンは以下の3つで構成されている
MonthDayGallery : 日付部分
WeekdayGallery : 曜日表示
CalendarEventGallery : Outlook予定表から取得されるイベント表示 (今回は割愛)
MonthDayGallery (カレンダーの日付本体)は3つの重要な変数で構成
_firstDayOfMonth : 月の初日
_firstDayInView : 表示上の初日
_lastDayOfMonth : 月の最終日
同じような構造を繰り返しする場合には
変数➡テーブル 単一コントロール➡ギャラリー が有効
重要な関数は以下
DateAdd : 日付の足し算/引き算
AddColumns : あるデータに列追加 計算列などを表示に使う際に有効