Aracılığıyla paylaş


Tuval uygulamaları için takvim ekranı şablonu hakkında başvuru bilgileri

Power Apps'te tuval uygulamaları için takvim ekranı şablonundaki her önemli denetimin ekranın toplam varsayılan işlevselliğine nasıl katkıda bulunduğunu anlayın. Bu derin kavrama, davranış formüllerini ve denetimlerin kullanıcı girdisine nasıl yanıt vereceğini belirleyen diğer özelliklerin değerlerini sunar. Bu ekranın varsayılan işlevselliği ile ilgili üst düzey tartışma için bkz. takvim ekranına genel bakış.

Bu konu bazı önemli denetimleri vurgular ve bu denetimlerin çeşitli özelliklerinin (örneğin, Items ve OnSelect) ayarlandığı ifadeleri veya formülleri açıklar:

Ön koşul

Power Apps'te bir uygulama oluştururken ekranları ve diğer denetimleri eklemeyi ve yapılandırmayı bilmek gerekir.

Açılan takvim

dropdownCalendarSelection denetimi.

  • Özellik: Items
    Değer: Office365.CalendarGetTables().value

    Bu değer, uygulama kullanıcısının Outlook takvimlerini alan bir bağlayıcı işlemidir. Bu işlemin aldığı değeri görebilirsiniz.

  • Özellik: OnChange
    Değer: Select(dropdownCalendarSelection)

    Kullanıcı listedeki bir seçeneği seçtiğinde, denetimin OnSelect özelliğindeki işlev çalıştırılır.

  • Özellik: OnSelect
    Değer: Aşağıdaki kod bloğunda görünen bir If işlevi ve bundan sonra kod bloğunda görünen birkaç ek işlev.

    Formülün bu kısmı yalnızca, Kullanıcı uygulamayı açtıktan sonra açılan listesinde bir seçeneği ilk kez seçtiğinde çalışır:

    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 ) )  
    );
    

    Yukarıdaki kodda aşağıdaki değişkenler tanımlanır:

    • _userDomain: Kullanıcının e-posta adresinde gösterilen uygulama kullanıcısının şirket etki alanı.
    • _dateSelected: bugünün tarihi (varsayılan). Takvim Galerisi bu tarihi vurgular ve olay Galerisi bu tarih için zamanlanmış olayları gösterir.
    • _firstDayOfMonth: geçerli ayın ilk günü. (Today + (1 - Today)) = Today - Today + 1 = 1 olduğundan, Bu DateAdd işlevi her zaman ayın ilk gününü döndürür.
    • _firstDayInView: Takvim galerisinin gösterebileceği ilk gün. Ay Pazar günü başlayıncaya kadar bu değer ayın ilk günü ile aynı değildir. Önceki ayın tüm haftasının gösterilmesini engellemek için _firstDayInView değeri _firstDayOfMonth - Weekday(_firstDayOfMonth) + 1 kullanılır.
    • _lastDayOfMonth: sonraki ayın birinci günü ile aynı olan geçerli ayın son günü; bu, bir gün eksi bir gündür.

    Kullanıcı, takvim açılan listesindeki bir seçeneği seçtiğinde (yalnızca Kullanıcı uygulamayı ilk kez açtığında değil), Eğer işlevinden sonraki işlevler çalışır:

    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 )
    

    Yukarıdaki kodda bu değişkenler ve bir derleme tanımlanır:

    • _calendarVisible: Yanlış olarak ayarlandığında, yeni seçim yüklenirken takvimin görünmemesi için ayarlayın.
    • _showLoading: Doğru olarak ayarlanır; böylece yükleme göstergeleri, yeni seçim yüklenirken görüntülenir.
    • _myCalendar: Takvim açılan listesi denetiminin geçerli değerine ayarlayın; böylece doğru takvimdeki olaylar alınır.
    • _minDate: _firstDayInView ile aynı değere ayarlanmış. Bu değişken, Outlook'tan alınan ve uygulamada önbelleğe alınan olayları belirler.
    • _maxDate: Takvimde en son görüntülenebilir günü ayarlayın. Formül şudur: _firstDayInView + 40. Takvim en fazla 41 gün görüntüler, bu nedenle _maxDate değişkeni her zaman en son görüntülenebilir günü yansıtır ve Outlook'tan hangi olayların önceden alındığını ve uygulamada önbelleğe alınmasını belirler.
    • MyCalendarEvents: Kullanıcı olaylarının bir koleksiyonunu, _minDate ile _maxDate arasında değişen bir koleksiyonuna ayarlayın.
    • _showLoading: false olarak ayarlanır; _calendarVisible, diğer her şey yüklendikten sonra true olarak ayarlanır.

Renk özellikleri

Genel renk özellikleri için Power Apps uygulamasındaki renk ve kenarlık özelliklerine bakın.

Takvim açılan denetimi için benzersiz renk özellikleri:

  • ChevronBackground - Açılan takvim arka plan rengi.
  • ChevronDisabledBackground - Devre dışı açılan takvim arka plan rengi.
  • ChevronFill - Takvim açılır için dolgu rengi.
  • ChevronDisabledFill - devre dışı takvim açılan menü dolgu rengi.
  • ChevronHoverBackground - Kullanıcı fare işaretçisini üzerinde sürdükçe, takvim açılan listesinin arka plan rengi.
  • ChevronHoverFill - Kullanıcı fare işaretçisini üzerinde sürdükçe, takvim açılan listesinin dolgu rengi.

Takvim simgesi

iconCalendar denetimi.

  • Özellik: OnSelect
    Değer: Takvim galerisini bugünün tarihine kadar belirten dört Ayarlama işlev kümesi:

    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 ) )
    

    Önceki kod, uygun Takvim görünümünü görüntülemek için gereken tüm tarih değişkenlerini sıfırlar:

    • _dateSelected, bugüne sıfırlanır.
    • _firstDayOfMonth, bugünün ayın ilk gününe sıfırlanır.
    • _firstDayInView bugünün ayı seçildiğinde yılın ilk günü görüntülenebilir olarak sıfırlanır.
    • _lastDayOfMonth, bugünün ayın son gününe sıfırlanır.

    Bu konu takvim açılan bölümünde, bu değişkenler daha ayrıntılı olarak açıklanmaktadır.

Önceki ay köşeli ayraç

iconPrevMonth denetimi.

  • Özellik: OnSelect
    Değer: dört kümesi işlevi ve Takvim galerisinde önceki ayı gösteren bir eğer işlevi:

    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 )
    )
    

    Not

    _firstDayOfMonth, _firstDayInView, and _lastDayOfMonth tanımları takvim açılan Bölümdekilerle neredeyse aynı.

    Bir önceki ayın ilk üç satırı, Kullanıcı tüm ay ayraç içine her seçtiğinde çalışır. Kod, uygun Takvim görünümünü görüntülemek için gereken değişkenleri ayarlar. Geri kalan kod yalnızca Kullanıcı seçili takvim için bu ayı önceden seçilmemişse çalışır.

    Bu durumda, _minDate önceki ay göründüğünde görünen ilk gün olur. Kullanıcı simgeyi seçmeden önce, _minDate geçerli ayın 23. değerinin olası en küçük değerine sahiptir. (1 Mart Cumartesi günüyse, _firstDayInView 23 Şubat.) Bu, Kullanıcı bu ay henüz seçmediği anlamına gelir; _minDate yeni _firstDayOfMonth'tan daha büyüktür ve If işlevi de true değerini döndürür. Kod çalışır ve bir koleksiyon ve bir değişken güncelleştirilir:

    • MyCalendarEvents, Office365Outlook.GetEventsCalendarViewV2 işlemiyle seçilen takvimden etkinlikleri getirir. Tarih aralığı _firstDayInView ve _minDate -1 arasındadır. MyCalendarEvents zaten _minDate tarihindeki olayları içerdiğinden, bu yeni tarih aralığındaki maksimum değer için 1 bu tarihten itibaren çıkarılır.

    • _minDate geçerli _firstDayInView olarak ayarlanmış çünkü bu, olaylarının alındığı ilk tarihtir. Bir Kullanıcı önceki ayın beşini seçerek bu tarihe geri dönerse, Eğer işlevi yanlış döner; Bu görünümdeki olaylar önceden MyCalendarEvents içinde önbelleğe alındığından, kod çalışmaz.

Sonraki ay köşeli ayraç

iconNextMonth denetimi.

  • Özellik: OnSelect
    Değer: dört kümesi işlevi ve Takvim galerisinde sonraki ayı gösteren bir eğer işlevi:

    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))
    )
    

    Not

    _firstDayOfMonth, _firstDayInView, and _lastDayOfMonth tanımları takvim açılan Bölümdekilerle neredeyse aynı.

    Kullanıcı sonraki ayın çift ayracı seçeneğini seçtiğinde çalışan önceki kodun ilk üç satırı, uygun Takvim görünümünü görüntülemek için gereken değişkenleri ayarlar. Geri kalan kod yalnızca Kullanıcı seçili takvim için bu ayı önceden seçilmemişse çalışır.

    Bu durumda, _maxDate önceki ay göründüğünde görünen son gün olur. Kullanıcı sonraki ayın köşeli ayracını seçmeden önce, _maxDate bir sonraki ayın en fazla olası 13. kullanım değerine sahiptir. (1 Şubat artık olmayan yılda pazara geldiyse _maxDate 13 marttır, yani _firstDayInView + 40 gün.) Bu, Kullanıcı bu ay henüz seçmediği anlamına gelir; _maxDate yeni _lastDayOfMonth'dan büyüktür ve eğer işlevi doğru olarak döner. Kod çalışır ve bir koleksiyon ve bir değişken güncelleştirilir:

    • MyCalendarEvents, Office365Outlook.GetEventsCalendarViewV2 işlemiyle seçilen takvimden etkinlikleri getirir. Tarih aralığı _maxDate + 1 gündür ve _firstDayInView +40 gündür. MyCalendarEvents zaten _minDate tarihindeki olayları içerdiğinden, bu yeni tarih aralığındaki minimum değer için 1 Bu tarihten itibaren eklenir. _firstDayInView + 40, _maxDate formüldür, bu nedenle aralıktaki ikinci tarih yalnızca yeni _maxDate'tir.

    • _maxDate geçerli _firstDayInView + 40 gün olarak ayarlanmış çünkü bu, olaylarının alındığı son gündür. Bir Kullanıcı sonraki ayın beşini seçerek bu tarihe geri dönerse, Eğer işlevi yanlış döner; Bu görünümdeki olaylar önceden MyCalendarEvents içinde önbelleğe alındığından, kod çalışmaz.

Takvim Galerisi

MonthDayGallery denetimi.

  • Özellik: Items
    Değer: [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]

    Takvim galerisindeki öğeler için 0 ile 41 arasında bir ayarlama kullanılır çünkü en kötü durum senaryosunda takvim görünümü, 42 tam günü görüntülemek zorunda kalır. Bu, ayın ilk ayı Cumartesi günü olduğunda ve ayın en son ay bir Pazar günü oluştuğunda olur. Bu durumda, takvim, önceki ayın ilk ayının altı günü ve ayın en son gününü içeren satırda şu aydan altı gün gösterir. Bu 42 benzersiz değerlerdir ve bu değer 30'un seçili ay içindir.

  • Özellik: WrapCount
    Değer: 7

    Bu değer yedi günlük bir haftayı yansıtır.

Takvim galerisinde başlık denetimi

MonthDayGallery başlık denetimi.

  • Özellik: Text
    Değer: Day( DateAdd( _firstDayInView, ThisItem.Value, Days ) )

    _firstDayInView (_firstDayOfMonth - haftanın günü değeri) + 1 olarak tanımlandığını unutmayın. Burada _firstDayInView her zaman bir pazar olduğunu ve _firstDayOfMonth her zaman MonthDayGallery ilk satırında olduğunu size söyler. Bu iki olgu nedeniyle, _firstDayInView her zaman MonthDayGallery galerisinin çok birinci hücresinde yer almaktadır. ThisItem.Value MonthDayGallery öğesi özelliğindeki bu hücrenin sayısıdır. Bu nedenle, başlangıç noktası olarak _firstDayInView'u almak için, her hücrede _firstDayInView + ilgili hücre değerinin artışı görüntülenir.

  • Özellik: Fill
    Değer: bir Eğer fonksiyonu:

    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 )
    )
    

    Text özelliğinin açıklamasında anlatıldığı gibi DateAdd(_firstDayInView, ThisItem.Value), görünen hücredeki günü temsil eder. Bunu dikkate alarak yukarıdaki kod bu karşılaştırmaları gerçekleştirir:

    1. Hücrenin değeri bugünün tarihleridir ve bu hücre _dateSelected ile eşdeğer ise, bir dolgu değeri sağlamaz.

    2. Hücrenin değeri bugünün tarihleridir ve bu hücre _dateSelected ile eşdeğer ise , bir ColorFade dolgu değeri sağlamaz.

    3. Son karşılaştırma Clear değil. Hücredeki gerçek metin değeri ile hücre öğesinin değeri (görünen sayı ve öğe sayısı) arasında bir karşılaştırma olabilir.

      Bunu daha iyi anlamak için, Cumartesi günü başlayan ve Pazar günü sonlanan bir ay 2018 Eylülü dikkate alın. Bu durumda, takvim, 26'dan 31 Ağustosa ve ilk satırdaki 1 Eylülde ve 1 Eylüle kadar Abs(Title.Text - ThisItem.Value) = 26 gösterir. O halde Abs(Title.Text - ThisItem.Value) = 5. Takviminizde 30 Eylül ve 1 - 6 Ekimde görüntülenen son satırdan kadar 5'te kalır. Bu Abs(Title.Text - ThisItem.Value), 30 Eylül ayının 5 olmaya devam edecek ancak Ekim tarihleri için 35 olacaktır.

      Bu bir desendir: önceki aydan görüntülenen günler için Abs(Title.Text - ThisItem.Value) her zaman görünen ilk gün Title.Text değerine eşit olur. Sonraki ay içinde görüntülenen günler için Abs(Title.Text - ThisItem.Value) her zaman o ayın ilk hücresinin MonthDayGallery öğe değerine (Bu örnekte, 1. inci) eksi 1 değerine eşit olur. Ve en önemlisi, şu anda seçili olan ay içinde görüntülenen günler için, Abs(Title.Text - ThisItem.Value) bu ayın ilk öğesinin değerinin 1 eksiğine her zaman eşit olur ve önceki örnekte görüldüğü gibi, 5'i hiçbir zaman aşmaz. Bu nedenle, formülün Abs(Title.Text - ThisItem.Value) > 5 olarak yazılması için mükemmel bir geçerlilik vardır.

      Bu ifade, tarih değerinin Şu anda seçili olan ayın dışında olup olmadığını denetler. Varsa, Dolgu kısmen opak bir gridir.

    Not

    Galeriye bir Etiket denetimi ekleyip Text özelliğini de bu değere ayarlayarak, bu son karşılaştırmanın geçerliliğini denetleyebilirsiniz:
    Abs(Title.Text - ThisItem.Value).

  • Özellik: Görünür
    Değer:

    !(
        DateAdd( _firstDayInView, ThisItem.Value, Days ) - 
            Weekday( DateAdd( _firstDayInView, ThisItem.Value,Days ) ) + 1 
        > _lastDayOfMonth
    )
    

    Yukarıdaki ifade, hücrenin Şu anda seçili olan ayın herhangi bir günü gerçekleşmediğinde bir satırda olup olmadığını denetler. Herhangi bir günün iş günü değerinin tarih değerinden çıkarılmaya ve 1 eklenerek her zaman içinde yer alan satırdaki ilk öğeyi döndürün anımsayın. Bu nedenle, bu ifade, satırdaki ilk günün, görüntülenebilir ayın son gününden sonra olup olmadığını denetler. Varsa, tüm satır aşağıdaki ayın günleri içeriyor olduğu için görüntülenmez.

  • Özellik: OnSelect
    Değer: _dateSelected değişkenini seçili hücrenin tarihine ayarlayan bir küme işlevi:

    Set( _dateSelected, DateAdd( _firstDayInView, ThisItem.Value, Days ) )
    

Takvim galerisinde daire denetimi

MonthDayGallery Daire denetimi.

  • Özellik: Görünür
    Değer: Seçili tarih için herhangi bir olayın zamanlandığını ve alt daire ve başlık denetimlerinin görünür olup olmadığını belirleyen bir formül:

    CountRows(
        Filter( MyCalendarEvents, 
            DateValue( Text( Start ) ) = DateAdd( _firstDayInView, ThisItem.Value, Days )
        )
    ) > 0 && !Subcircle.Visible && Title.Visible
    

    Herhangi bir olayın başlangıç alanı, başlık denetimi görünür durumdaysa ve alt daire denetimi görünmüyorsa, bu hücrenin tarihine denk gelse, Daire denetimi görünür. Başka bir deyişle, bu günde en az bir olay oluştuğunda bu denetim görünür ve bu gün seçili değildir. Seçiliyse, o güne yönelik olaylar, CalendarEventsGallery denetiminde görüntülenir.

Takvim galerisinde alt daire denetimi

MonthDayGallery Alt Daire denetimi.

  • Özellik: Görünür
    Değer:

    DateAdd( _firstDayInView, ThisItem.Value ) = _dateSelected && Title.Visible
    

    Alt daire denetimi, _dateSelected hücrenin tarihine denktir ve Başlık denetimi görünür durumdaysa görünür. Başka bir deyişle, bu denetim hücre şu anda seçili olan tarih olduğunda görünür.

Olaylar Galerisi

CalendarEventsGallery denetimi.

  • Özellik: Items
    Değer: olaylar galerisini sıralayan ve filtreleyen bir formül:

    SortByColumns(
        Filter( MyCalendarEvents,
            Text( Start, DateTimeFormat.ShortDate ) = Text( _dateSelected, DateTimeFormat.ShortDate )
        ),
        "Start"
    )
    

    MyCalendarEvents koleksiyonu _minDate ve _maxDate arasındaki tüm olayları içerir. Yalnızca seçilen tarihin olaylarını görüntülemek için, MyCalendarEvents üzerinde, Başlangıç tarihi eşdeğerdir \ _dateSelected olan olayları görüntülemek için bir filtre uygulanır. Böylece öğeler, ardışık sıraya sokulmaları için başlangıç tarihlerine göre sıralanır.

Sonraki adımlar

Not

Belge dili tercihlerinizi bizimle paylaşabilir misiniz? Kısa bir ankete katılın. (lütfen bu anketin İngilizce olduğunu unutmayın)

Anket yaklaşık yedi dakika sürecektir. Kişisel veri toplanmaz (gizlilik bildirimi).