Referenční informace o šabloně obrazovky kalendáře pro aplikace plátna
Pro aplikace plátna v Power Apps, získejte informace o tom, jak každý významný ovládací prvek v šabloně obrazovky kalendáře přispívá k celkové výchozí funkčnosti obrazovky. Tyto podrobnosti představují vzorce chování a hodnoty dalších vlastností, které určují, jak ovládací prvky reagují na vstup uživatele. Podrobnější informace o výchozí funkci této obrazovky naleznete na stránce přehled obrazovky kalendáře.
Tento téma zdůrazňuje některé významné ovládací prvky a vysvětluje výrazy nebo vzorce, ke kterým jsou nastaveny různé vlastnosti (například Položky a OnSelect) z těchto ovládacích prvků:
- Rozbalovací nabídka Kalendář (dropdownCalendarSelection)
- Ikona kalendáře (iconCalendar)
- Dvojitá šipka předchozí měsíc (iconPrevMonth)
- Dvojitá šipka příští měsíc (iconNextMonth)
- Galerie kalendáře (MonthDayGallery) (+ podřízené ovládací prvky)
- Galerie událostí (CalendarEventsGallery)
Požadavek
Seznámení s tím, jak přidávat a konfigurovat obrazovky a další ovládací prvky při vytváření aplikace v Power Apps.
Rozevírací nabídka kalendáře

Vlastnost: Položky
Hodnota:Office365.CalendarGetTables().valueTato hodnota je operace konektoru, která načte kalendáře Outlook uživatele aplikace. Můžete vidět hodnotu, kterou tato operace načte.
Vlastnost: OnChange
Hodnota:Select(dropdownCalendarSelection)Když uživatel vybere možnost v seznamu, funkce ve vlastnosti ovládacího prvku OnSelect se spustí.
Vlastnost: OnSelect
Hodnota: Funkce Pokud, která se objeví v následujícím bloku kódu, a několik dalších funkcí, které se objeví v bloku kódu poté.Tato část vzorce se spustí pouze poprvé, když uživatel vybere možnost v rozevíracím seznamu po otevření aplikace:
If( IsBlank( _userDomain ), UpdateContext( {_showLoading: true} ); Set( _userDomain, Right( User().Email, Len( User().Email ) - Find( "@", User().Email ) ) ); Set( _dateSelected, Today() ); Set( _firstDayOfMonth, DateAdd( Today(), 1 - Day( Today() ), Days ) ); Set( _firstDayInView, DateAdd( _firstDayOfMonth, -(Weekday(_firstDayOfMonth) - 1), Days ) ); Set( _lastDayOfMonth, DateAdd( DateAdd( _firstDayOfMonth, 1, Months ), -1, Days ) ) );Předchozí kód definuje následující proměnné:
- _userDomain: Firemní doména uživatele aplikace, jak se odráží v e-mailové adrese uživatele.
- _dateSelected: Dnešní datum (ve výchozím nastavení). Galerie kalendáře zvýrazňuje toto datum a galerie událostí zobrazuje události naplánované na dané datum.
- _firstDayOfMonth: První den aktuálního měsíce. Protože
(Today + (1 - Today)) = Today - Today + 1 = 1, tato funkce DateAdd vrací vždy první den v měsíci. - _firstDayInView: První den, který se může zobrazit v kalendáři. Tato hodnota není stejná jako první den v měsíci, pokud měsíc nezačne v neděli. Chcete-li zabránit zobrazení celého týdne předchozího měsíce, hodnota _firstDayInView je
_firstDayOfMonth - Weekday(_firstDayOfMonth) + 1. - _lastDayOfMonth: Poslední den aktuálního měsíce, který je stejný jako první den následujícího měsíce, minus jeden den.
Funkce po funkci Pokud se spustí, když uživatel vybere možnost v rozevíracím seznamu kalendáře (nejen při prvním otevření aplikace):
Set( _calendarVisible, false ); UpdateContext( {_showLoading: true} ); Set( _myCalendar, dropdownCalendarSelection2.Selected ); Set( _minDate, DateAdd( _firstDayOfMonth, -(Weekday( _firstDayOfMonth ) - 2 + 1), Days ) ); Set(_maxDate, DateAdd( DateAdd( _firstDayOfMonth, -(Weekday( _firstDayOfMonth ) - 2 + 1), Days ), 40, Days ) ); ClearCollect( MyCalendarEvents, Office365Outlook.GetEventsCalendarViewV2( _myCalendar.Name, Text( _minDate, UTC ), Text( _maxDate, UTC ) ).value ); UpdateContext( {_showLoading: false} ); Set( _calendarVisible, true )Předchozí kód definuje tyto proměnné a jednu kolekci:
- _calendarVisible: Nastaven na false, aby se kalendář neobjevil při načtení nového výběru.
- _showLoading: Nastaven na true, aby se při načítání nového výběru zobrazovaly indikátory načítání.
- _myCalendar: Nastavte na aktuální hodnotu ovládacího prvku rozbalovací nabídka kalendáře tak, aby byly načteny události ze správného kalendáře.
- _minDate: Nastavte na stejnou hodnotu jako _firstDayInView. Tato proměnná určuje, jaké události již byly načteny z aplikace Outlook a uloženy do mezipaměti v aplikaci.
- _maxDate: Nastaví se na poslední zobrazitelný den v kalendáři. Vzorec je
_firstDayInView + 40. Kalendář zobrazuje maximálně 41 dní, takže proměnná _maxDate vždy odráží poslední viditelný den a určuje, jaké události již byly načteny z aplikace Outlook a uloženy do mezipaměti v aplikaci. - MyCalendarEvents: Nastavte na sbírku událostí uživatele z vybraného kalendáře, od _minDate po _maxDate.
- _showLoading: Nastaven na false; _calendarVisible je nastaveno na true po načtení všeho jiného.
Barevné vlastnosti
Obecné barevné vlastnosti viz Vlastnosti barev a ohraničení v Power Apps.
Jedinečné vlastnosti barev pro ovládací prvek rozevíracího kalendáře:
- ChevronBackground - Barva pozadí pro rozbalovací nabídku kalendáře.
- ChevronDisabledBackground - Barva pozadí pro zakázanou rozbalovací nabídku kalendáře.
- ChevronFill - Barva výplně pro rozbalovací nabídku kalendáře.
- ChevronDisabledFill - Barva výplně pro deaktivovanou rozbalovací nabídku kalendáře.
- ChevronHoverBackground - Barva pozadí rozevíracího seznamu kalendáře, když na něm uživatel drží ukazatel myši.
- ChevronHoverFill - Barva výplně rozevíracího seznamu kalendáře, když na něm uživatel drží ukazatel myši.
Ikona kalendáře
![]()
Vlastnost: OnSelect
Hodnota: Čtyři funkce Nastavit, které resetují galerii kalendáře na dnešní datum:Set( _dateSelected, Today() ); Set( _firstDayOfMonth, DateAdd( Today(), 1 - Day( Today() ), Days) ); Set( _firstDayInView, DateAdd(_firstDayOfMonth, -(Weekday( _firstDayOfMonth ) - 2 + 1), Days)); Set( _lastDayOfMonth, DateAdd( DateAdd( _firstDayOfMonth, 1, Months ), -1, Days ) )Předchozí kód resetuje všechny proměnné data, které jsou nezbytné pro správné zobrazení kalendáře:
- _dateSelected je resetováno na dnešek.
- _firstDayOfMonth se nastaví na první den dnešního měsíce.
- _firstDayInView je nastaven na první den, který lze zobrazit, když je vybrán dnešní měsíc.
- _lastDayOfMonth se nastaví na poslední den dnešního měsíce.
Sekce Rozbalovací nabídka kalendáře v tomto tématu tyto proměnné podrobněji vysvětluje.
Dvojitá šipka Předchozí měsíc

Vlastnost: OnSelect
Hodnota: Čtyři funkce Nastavit a Pokud, které zobrazují předchozí měsíc v galerii kalendáře:Set( _firstDayOfMonth, DateAdd( _firstDayOfMonth, -1, Months ) ); Set( _firstDayInView, DateAdd( _firstDayOfMonth, -(Weekday( _firstDayOfMonth ) - 2 + 1), Days ) ); Set( _lastDayOfMonth, DateAdd(DateAdd( _firstDayOfMonth, 1, Months ), -1, Days ) ); If( _minDate > _firstDayOfMonth, Collect( MyCalendarEvents, Office365Outlook.GetEventsCalendarViewV2( _myCalendar.Name, Text( _firstDayInView, UTC ), Text( DateAdd( _minDate, -1, Days ), UTC ) ).value ); Set( _minDate, _firstDayInView ) )Poznámka
Definice pro _firstDayOfMonth, _firstDayInView a _lastDayOfMonth jsou téměř totožné s těmi v sekci Rozbalovací nabídka kalendáře tojoto tématu.
První tři řádky předchozího kódu se spustí vždy, když uživatel vybere dvojitou šipku předchozího měsíce. Kód nastavuje proměnné, které jsou nezbytné pro zobrazení správného zobrazení kalendáře. Zbývající kód se spustí pouze v případě, že uživatel dříve vybraný měsíc pro vybraný kalendář nevybral.
Pokud tomu tak je, _minDate je první den, který se objeví, když se zobrazí předchozí měsíc. Než uživatel vybere ikonu, _minDate má minimální možnou hodnotu 23. dne aktuálního měsíce. (Když na 1. března připadne sobota, _firstDayInView pro březen je 23. února.) To znamená, že pokud si uživatel tento měsíc ještě nevybral, _minDate je větší než nový _firstDayOfMonth a funkce Pokud vrací true. Spustí se kód a aktualizuje se kolekce a proměnná:
MyCalendarEvents načte události z vybraného kalendáře pomocí operace Office365Outlook.GetEventsCalendarViewV2. Rozsah dat je mezi _firstDayInView a _minDate - 1. Protože MyCalendarEvents již obsahuje události dne _minDate, 1 se od tohoto data odečte pro maximální hodnotu v tomto novém časovém období.
_minDate je nastaven na aktuální _firstDayInView, protože toto je první datum, pro které byly události načteny. Pokud se uživatel vrátí k tomuto datu výběrem dvojité šipky za předchozí měsíc, funkce Pokud vrací false; kód se nespustí, protože události pro toto zobrazení jsou již v mezipaměti MyCalendarEvents.
Dvojitá šipka příští měsíc

Vlastnost: OnSelect
Hodnota: Čtyři funkce Nastavit a Pokud, které zobrazují další měsíc v galerii kalendáře:Set( _firstDayOfMonth, DateAdd( _firstDayOfMonth, 1, Months ) ); Set( _firstDayInView, DateAdd( _firstDayOfMonth, -(Weekday( _firstDayOfMonth ) - 2 + 1), Days ) ); Set( _lastDayOfMonth, DateAdd( DateAdd( _firstDayOfMonth, 1, Months ), -1, Days ) ); If(_maxDate < _lastDayOfMonth, Collect(MyCalendarEvents, Office365Outlook.GetEventsCalendarViewV2(_myCalendar.Name, Text(DateAdd(_maxDate, 1, Days), UTC), Text(DateAdd(_firstDayInView, 40, Days)) ).value ); Set(_maxDate, DateAdd(_firstDayInView, 40, Days)) )Poznámka
Definice pro _firstDayOfMonth, _firstDayInView a _lastDayOfMonth jsou téměř totožné s těmi v sekci Rozbalovací nabídka kalendáře tojoto tématu.
První tři řádky předchozího kódu, které se spouští, když uživatel vybere dvojitou šipku příštího měsíce, nastavují proměnné, které jsou nezbytné pro správné zobrazení kalendáře. Zbývající kód se spustí pouze v případě, že uživatel dříve vybraný měsíc pro vybraný kalendář nevybral.
V takovém případě je _minDate poslední den, který se objeví, když se zobrazí předchozí měsíc. Než uživatel vybere dvojitou šipku příštího měsíce, _maxDate má maximální možnou hodnotu 13. dne následujícího měsíce. (Když na 1. února nepřestupného roku připadne neděle, _maxDate je 13. března, což je _firstDayInView + 40 dní.) To znamená, že pokud si uživatel tento měsíc ještě nevybral, _maxDate je větší než nový _lastDayOfMonth a funkce Pokud vrací true. Spustí se kód a aktualizuje se kolekce a proměnná:
MyCalendarEvents načte události z vybraného kalendáře pomocí operace Office365Outlook.GetEventsCalendarViewV2. Rozsah dat je mezi _maxDate + 1 den a _firstDayInView + 40 dní. Protože MyCalendarEvents již obsahuje události dne _minDate, 1 se k tomuto datu přičte pro minimální hodnotu v tomto novém časovém období. _firstDayInView + 40 je vzorec pro _maxDate, takže druhé datum v rozsahu je nové _maxDate.
_maxDate je nastaven na _firstDayInView + 40 dní, protože toto je poslední den, pro který byly události načteny. Pokud se uživatel vrátí k tomuto datu výběrem dvojité šipky následujícího měsíce, funkce Pokud vrací false; kód se nespustí, protože události pro toto zobrazení jsou již v mezipaměti MyCalendarEvents.
Galerie kalendáře

Vlastnost: Položky
Hodnota:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19, 20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41]Sada 0 až 41 se používá pro položky v galerii kalendáře, protože v nejhorším případě bude zobrazení kalendáře muset zobrazit 42 celých dnů. K tomu dochází, když první v měsíci nastane v sobotu a poslední v měsíci nastane v neděli. V tomto případě kalendář zobrazuje šest dní od předchozího měsíce v řádku obsahujícím první měsíc a šest dní od následujícího měsíce v řádku obsahujícím poslední měsíc. Jedná se o 42 jedinečných hodnot, z toho 30 pro vybraný měsíc.
Vlastnost: WrapCount
Hodnota:7Tato hodnota odráží sedmidenní týden.
Ovládací prvek Název v galerii kalendáře

Vlastnost: Text
Hodnota:Day( DateAdd( _firstDayInView, ThisItem.Value, Days ) )Odvolání, že _firstDayInView je definován jako (_firstDayOfMonth - jeho denní hodnota) + 1. To nám říká, že _firstDayInView je vždy neděle a _firstDayOfMonth je vždy v první řadě MonthDayGallery. Kvůli těmto dvěma skutečnostem _firstDayInView je vždy v první buňce MonthDayGallery. ThisItem.Value je číslo této buňky ve vlastnosti položky MonthDayGallery. Takže, pokud bereme _firstDayInView jako výchozí bod, zobrazuje každá buňka přírůstek _firstDayInView + jeho příslušnou hodnotu buňky.
Vlastnost: Výplň
Hodnota: Jedna funkce Pokud:If( DateAdd( _firstDayInView, ThisItem.Value ) = Today() && DateAdd( _firstDayInView, ThisItem.Value ) = _dateSelected, RGBA( 0, 0, 0, 0 ), DateAdd( _firstDayInView, ThisItem.Value) = Today(), ColorFade( Subcircle.Fill, 0.67 ), Abs( Title.Text - ThisItem.Value) > 10, RGBA( 200, 200, 200, 0.3 ), RGBA( 0, 0, 0, 0 ) )Jak je uvedeno v popisu vlastnosti Text,
DateAdd(_firstDayInView, ThisItem.Value)představuje den ve viditelné buňce. S ohledem na to provede předchozí kód tato srovnání:Pokud je hodnota buňky dnešní datum A tato buňka je ekvivalentní _dateSelected, nezadávejte hodnotu výplně.
Pokud je hodnota buňky dnešní datum, ale není ekvivalentem _dateSelected, zadejte výplň ColorFade.
Poslední srovnání není tak jasné. Jedná se o srovnání skutečné hodnoty textu v buňce a hodnoty položky buňky (číslo na displeji a číslo položky).
Abychom tomu lépe porozuměli, vezměme si září 2018, měsíc, který začíná v sobotu a končí v neděli. V tomto případě se v kalendáři v prvním řádku zobrazí 26. až 31. srpna a 1. září a
Abs(Title.Text - ThisItem.Value) = 26do 1. září. PakAbs(Title.Text - ThisItem.Value) = 5Zůstane na 5 až do posledního řádku v kalendáři, který zobrazuje 30. září a 1. až 6. října. V tomtoAbs(Title.Text - ThisItem.Value)bude stále 5 pro 30. září, ale bude 35 pro říjnová data.Toto je vzorec: Pro dny zobrazené od předchozího měsíce,
Abs(Title.Text - ThisItem.Value)bude vždy rovno hodnotěTitle.Textprvního zobrazovaného dne. Pro dny, které se zobrazují v příštím měsíci,Abs(Title.Text - ThisItem.Value)bude vždy rovno hodnotě položky MonthDayGallery první buňky daného měsíce (v tomto případě 1. října) mínus 1. A co je nejdůležitější, pro dny zobrazené v aktuálně vybraném měsíci,Abs(Title.Text - ThisItem.Value)se bude vždy rovnat hodnotě první položky daného měsíce mínus 1 a nikdy nepřesáhne 5, jak ukazuje předchozí příklad. Takže je naprosto platné napsat vzorec jakoAbs(Title.Text - ThisItem.Value) > 5.Tento výraz zkontroluje, zda je hodnota data mimo aktuálně vybraný měsíc. Pokud ano, Výplň je částečně neprůhledná šedá.
Poznámka
Platnost tohoto posledního srovnání si můžete ověřit vložením ovládacího prvku Popisek do galerie a nastavení jeho vlastnosti Text na tuto hodnotu:
Abs(Title.Text - ThisItem.Value).Vlastnost: Viditelný
Hodnota:!( DateAdd( _firstDayInView, ThisItem.Value, Days ) - Weekday( DateAdd( _firstDayInView, ThisItem.Value,Days ) ) + 1 > _lastDayOfMonth )Předchozí výraz kontroluje, zda je buňka v řádku, kde nenastávají žádné dny aktuálně vybraného měsíce. Připomeňme, že odečtením hodnoty dne v týdnu od jeho hodnoty data a přidání 1 vždy vrací první položku v řádku, ve kterém se den nachází. Tento výraz tedy kontroluje, zda je první den v řádku po posledním dni viditelného měsíce. Pokud ano, nezobrazí se, protože celý řádek obsahuje dny následujícího měsíce.
Vlastnost: OnSelect
Hodnota: Funkce Nastavit, která nastaví proměnnou _dateSelected k datu vybrané buňky:Set( _dateSelected, DateAdd( _firstDayInView, ThisItem.Value, Days ) )
Ovládací prvek Kruh v galerii kalendáře

Vlastnost: Viditelný
Hodnota: Vzorec, který určuje, zda jsou pro vybrané datum naplánovány nějaké události a zda ovládací prvky Subcircle a Název jsou viditelné:CountRows( Filter( MyCalendarEvents, DateValue( Text( Start ) ) = DateAdd( _firstDayInView, ThisItem.Value, Days ) ) ) > 0 && !Subcircle.Visible && Title.VisibleOvládací prvek Kruh je viditelný, pokud pole Start pro libovolnou událost je ekvivalentní datu této buňky, pokud ovládací prvek Název je viditelný a pokud ovládací prvek Subcircle není viditelný. Jinými slovy, tento ovládací prvek je viditelný, když se v tento den vyskytne alespoň jedna událost a tento den není vybrán. Pokud je vybrán, události pro daný den se zobrazí v ovládacím prvku CalendarEventsGallery.
Ovládací prvek Subcircle v galerii kalendáře

Vlastnost: Viditelný
Hodnota:DateAdd( _firstDayInView, ThisItem.Value ) = _dateSelected && Title.VisibleOvládací prvek Subcircle je viditelný, pokud je _dateSelected ekvivalentem data buňky a ovládací prvek Název je viditelný. Jinými slovy, tento ovládací prvek se objeví, když je buňka aktuálně vybraným datem.
Galerie událostí

Vlastnost: Položky
Hodnota: Vzorec, který třídí a filtruje galerii událostí:SortByColumns( Filter( MyCalendarEvents, Text( Start, DateTimeFormat.ShortDate ) = Text( _dateSelected, DateTimeFormat.ShortDate ) ), "Start" )Kolekce MyCalendarEvents obsahuje všechny události mezi _minDate a _maxDate. Pro zobrazení událostí pouze pro vybrané datum se použije filtr na MyCalendarEvents pro zobrazení událostí, které mají počáteční datum ekvivalentní k \ _dateSelected. Položky jsou pak seřazeny podle jejich počátečních dat, aby byly uvedeny v sekvenčním pořadí.
Další kroky
- Další informace o této obrazovce
- Další informace o konektoru Office 365 Outlook v Power Apps
- Další informace o konektoru uživatelů Office 365 v Power Apps
Poznámka
Můžete nám sdělit, jaké máte jazykové preference pro dokumentaci? Zúčastněte se krátkého průzkumu. (upozorňujeme, že tento průzkum je v angličtině)
Průzkum bude trvat asi sedm minut. Nejsou shromažďovány žádné osobní údaje (prohlášení o zásadách ochrany osobních údajů).
Váš názor
Odeslat a zobrazit názory pro