إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على: تطبيقات اللوحة
احصل على معلومات حول التطبيق قيد التشغيل حاليا وتحكم في سلوك التطبيق.
الوصف
مثل عنصر التحكم، يحتوي كائن التطبيق على خصائص تحدد الشاشة التي تظهر وتطالبك بحفظ التغييرات حتى لا تفقدها. يحتوي كل تطبيق على كائن تطبيق.
كتابة صيغ لبعض خصائص كائن التطبيق . في أعلى الجزء عرض الشجرة، حدد كائن تطبيق كما هو الحال مع أي عنصر تحكم أو شاشة أخرى. لعرض إحدى خصائص العنصر أو تحريرها، حددها في القائمة المنسدلة إلى يسار شريط الصيغة.
تتناول هذه المقالة خصائص كائن التطبيق التالية:
- ActiveScreen – الشاشة المعروضة حاليا.
- BackEnabled - كيفية استجابة التطبيق لإيماءة عودة الجهاز.
- ConfirmExit و ConfirmExitMessage – تحذير المستخدم قبل إغلاق التطبيق.
- سلسلة الاتصال - إعداد تسجيل Application Insights.
- الصيغ - تعريف الصيغ المسماة والدالات المعرفة من قبل المستخدم والأنواع المعرفة من قبل المستخدم.
- OnError – معالجة الأخطاء بشكل عام.
- OnStart – قم بتشغيل المنطق عند بدء تشغيل التطبيق.
- StartScreen - قم بتعيين الشاشة المعروضة أولا عند تحميل التطبيق.
- StudioVersion - إرجاع إصدار Power Apps Studio الذي نشر التطبيق.
خاصيه ActiveScreen
تحدد الخاصية ActiveScreen الشاشة المعروضة حاليا.
تعمل هذه الخاصية على إرجاع كائن شاشة. استخدمه للإشارة إلى خصائص الشاشة الحالية، مثل الاسم الذي يحتوي على الصيغة App.ActiveScreen.Name. يمكنك أيضا مقارنة هذه الخاصية بكائن شاشة آخر، مثل صيغة المقارنة App.ActiveScreen = Screen2 للتحقق مما إذا كانت Screen2 هي الشاشة الحالية.
استخدم الدالة Back أو Navigate لتبديل الشاشة المعروضة.
خاصية BackEnabled
تغير خاصية BackEnabled كيفية استجابة التطبيق لإيماءة عودة الجهاز (اسحب أو استخدم زر رجوع الأجهزة على أجهزة Android، أو اسحب من اليسار على أجهزة iOS) عند التشغيل في Power Apps للأجهزة المحمولة. عند التمكين، تعود إيماءة عودة الجهاز إلى الشاشة التي تم عرضها مؤخرا، وهي مشابهة لصيغة الخلف . عند التعطيل، تأخذ إيماءة عودة الجهاز المستخدم إلى قائمة التطبيقات.
خصائص ConfirmExit
لا يريد أي شخص فقدان التغييرات غير المحفوظة. استخدم الخاصيتين ConfirmExit و ConfirmExitMessage لتحذير المستخدم قبل إغلاق تطبيقك.
ملحوظة
- لا يعمل ConfirmExit في التطبيقات المضمنة في، على سبيل المثال، Power BI وSharePoint.
- ConfirmExit غير مدعوم في الصفحات المخصصة.
- الآن، يمكن لهذه الخصائص الرجوع إلى عناصر التحكم على الشاشة الأولى فقط إذا تم تمكين ميزة معاينة التحميل المتأخر (وهي افتراضيا للتطبيقات الجديدة). إذا قمت بالإشارة إلى شاشات أخرى، فلا يظهر Power Apps Studio خطأ، ولكن التطبيق المنشور لا يفتح في Power Apps Mobile أو مستعرض. يعمل Microsoft على رفع هذا القيد. في هذه الأثناء، قم بإيقاف تشغيل التحميل المتأخر في الإعدادات>الميزات القادمة (ضمن معاينة).
ConfirmExit
ConfirmExit هي خاصية منطقية، عندما تكون صحيحة، تفتح مربع حوار تأكيد قبل إغلاق التطبيق. وبشكل افتراضي، تكون هذه الخاصية خاطئة، ولا يظهر مربع حوار.
عندما يكون لدى المستخدم تغييرات غير محفوظة في التطبيق، استخدم هذه الخاصية لإظهار مربع حوار تأكيد قبل الخروج من التطبيق. استخدم صيغة تتحقق من المتغيرات وخصائص عنصر التحكم (على سبيل المثال، الخاصية غير محفوظة لعنصر تحكم النموذج تحرير ).
يظهر مربع حوار التأكيد في أي حالة يمكن فيها فقدان البيانات، مثل:
- تشغيل الدالة Exit .
- إذا كان التطبيق يعمل في مستعرض:
- أغلق المستعرض أو علامة تبويب المستعرض حيث يتم تشغيل التطبيق.
- حدد زر الخلف للمستعرض.
- قم بتشغيل وظيفة Launch باستخدام LaunchTarget of Self.
- إذا كان التطبيق يعمل في Power Apps Mobile (iOS أو Android):
- اسحب للتبديل إلى تطبيق آخر في Power Apps Mobile.
- حدد زر الخلف على جهاز Android.
- قم بتشغيل وظيفة Launch لتشغيل تطبيق لوحة آخر.
يمكن أن يختلف الشكل الدقيق لمربع حوار التأكيد عبر الأجهزة وإصدارات Power Apps.
لا يظهر مربع حوار التأكيد في Power Apps Studio.
ConfirmExitMessage
وبشكل افتراضي، يظهر مربع حوار التأكيد رسالة عامة، مثل "You may have unsaved changes" (قد يكون لديك تغييرات غير محفوظة). بلغة المستخدم
استخدم ConfirmExitMessage لتوفير رسالة مخصصة في مربع حوار التأكيد. إذا كانت هذه الخاصية فارغة، فإنه سيتم استخدام القيمة الافتراضية. يتم اقتطاع الرسائل المخصصة حسب الحاجة لاحتواءها ضمن مربع حوار التأكيد، لذا احتفظ بالرسالة إلى بضعة أسطر على الأكثر.
في المستعرض، يمكن أن يعرض مربع حوار التأكيد رسالة عامة من المستعرض.
مثال
تعيين الخاصية ConfirmExit الخاصة بكائن التطبيق لهذا التعبير:
AccountForm.Unsaved Or ContactForm.Unsavedيظهر مربع الحوار إذا غير المستخدم البيانات في أي من النموذجين ثم حاول إغلاق التطبيق دون حفظ هذه التغييرات.
تعيين الخاصية ConfirmExitMessage الخاصة بكائن التطبيق لهذه الصيغة:
If( AccountForm.Unsaved, "Accounts form has unsaved changes.", "Contacts form has unsaved changes." )يعرض مربع الحوار رسالة خاصة بالنموذج عندما يغير المستخدم البيانات في أي من النموذجين ثم يحاول إغلاق التطبيق دون حفظ هذه التغييرات.
خاصية سلسلة الاتصال
استخدم خاصية سلسلة الاتصال لتصدير سجلات التطبيقات التي أنشأها النظام إلى Application Insights.
لتعيين سلسلة الاتصال:
- افتح تطبيقك لتحريره في Power Apps Studio.
- حدد كائن التطبيقمن طريقه عرض الشجرة علي شريط التنقل الأيمن.
- أدخل سلسلة الاتصال في جزء الخصائص.
إذا لم يتم إرسال البيانات إلى Application Insights، فاتصل بمسؤول Power Platform وتحقق مما إذا كان Application Insights معطلا على مستوى المستأجر.
خاصية الصيغ
استخدم خاصية الصيغ لتحديد منطق قابل لإعادة الاستخدام عبر تطبيقك. تدعم الخاصية Formulas ثلاث بنيات:
- الصيغ المسماة - عين اسما لصيغة ثم أعد استخدام القيمة في التطبيق بكامله.
- الدالات المعرفة من قبل المستخدم - الصيغ المسماة التي تأخذ معلمات وترجع قيمة.
- الأنواع المعرفة من قبل المستخدم - الأنواع المسماة التي يمكنك إعادة استخدامها في الصيغ وتوقيعات الدالات.
الصيغ المسماة
استخدم الصيغ المسماة في الخاصية الصيغ لتعريف صيغة يمكنك إعادة استخدامها في التطبيق بكامله.
في Power Apps، تحدد المعادلات قيمة خصائص التحكم. على سبيل المثال، لتعيين لون الخلفية باستمرار عبر تطبيق، قم بتعيين الخاصية تعبئة لكل عنصر تحكم إلى صيغة شائعة:
Label1.Fill: ColorValue( Param( "BackgroundColor" ) )
Label2.Fill: ColorValue( Param( "BackgroundColor" ) )
Label3.Fill: ColorValue( Param( "BackgroundColor" ) )
مع وجود العديد من الأماكن التي تظهر فيها هذه الصيغة، يصبح تحديثها جميعا مملا وعرضة للخطأ إذا لزم إجراء تغيير. بدلا من ذلك، قم بإنشاء متغير عمومي في OnStart لتعيين اللون مرة واحدة، ثم أعد استخدام القيمة في جميع أنحاء التطبيق:
App.OnStart: Set( BGColor, ColorValue( Param( "BackgroundColor" ) ) )
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor
على الرغم من أن هذه الطريقة أفضل، إلا أنها تعتمد أيضًا على تشغيل OnStart قبل تحديد قيمة BGColor. قد يتم أيضًا التحكم في BGColor في بعض أركان التطبيق التي لا يعرفها المصمم، وهو تغيير قام به شخص آخر، وقد يكون من الصعب تعقب ذلك.
توفر الصيغ المسماة بديلاً. تماما كما تكتب عادة خاصية التحكم = التعبير، يمكنك بدلا من ذلك كتابة الاسم = تعبير ثم إعادة استخدام الاسم في جميع أنحاء التطبيق لاستبدال التعبير. حدد هذه الصيغ في الخاصية الصيغ :
App.Formulas: BGColor = ColorValue( Param( "BackgroundColor" ) );
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor
تتضمن مزايا استخدام الصيغ المسماة ما يلي:
- تتوفر قيمة الصيغة دائمًا. لا توجد تبعية توقيت، لا توجد خاصية OnStart يجب تشغيلها أولاً قبل تعيين القيمة، ولا يوجد وقت تكون فيه قيمة الصيغة غير صحيحة. يمكن أن تشير الصيغ المسماة إلى بعضها البعض بأي ترتيب، طالما أنها لا تنشئ مرجعًا دائريًا. ويمكن حسابها بالتوازي.
- تتوفر قيمة الصيغة محدثةً دائمًا. يمكن للصيغة إجراء عملية حسابية تعتمد على خصائص عنصر التحكم أو سجلات قاعدة البيانات، وعندما تتغير، يتم تحديث قيمة الصيغة تلقائيًا. لا تحتاج إلى تحديث القيمة يدويًا كما تفعل مع المتغير. وتتم إعادة حساب الصيغ فقط عند الحاجة.
- تعريف الصيغة غير قابل للتغيير. التعريف في الصيغ هو المصدر الوحيد للحقيقة ولا يمكن تغيير القيمة في مكان آخر في التطبيق. مع المتغيرات، قد تغير بعض التعليمات البرمجية قيمة بشكل غير متوقع، ولكن هذا الموقف الصعب تصحيح الأخطاء غير ممكن مع الصيغ المسماة.
- يمكن تأجيل عملية حساب الصيغة. نظرًا لأنها قيمة غير قابلة للتغيير، يمكن دائمًا حسابها عند الحاجة، مما يعني أنه لا يلزم حسابها حتى يتم الاحتياج إليها. لا يلزم حساب قيم الصيغ التي لم يتم استخدامها حتى يتم عرض screen2 من التطبيق حتى تظهر screen2. يمكن أن يؤدي تأجيل هذا العمل إلى تحسين وقت تحميل التطبيق. الصيغ المسماة توضيحية وتوفر فرصًا للنظام لتحسين كيفية ووقت حسابها.
- الصيغ المسماة هي مفهوم Excel. يستخدم Power Fx مفاهيم Excel حيثما أمكن ذلك لأن كثيرًا من الناس يعرفون Excel جيدًا. الصيغ المسماة مكافئة للخلايا المسماة والصيغ المسماة في Excel، وتتم إدارتها باستخدام مدير الاسم. تتم إعادة الحساب تلقائيًا مثل خلايا جدول البيانات وتتحكم الخصائص.
تعريف الصيغ المسماة واحدة تلو الأخرى في الخاصية الصيغ ، وتنتهي كل منها بفواصل منقوطة. يتم استنتاج نوع الصيغة من أنواع العناصر داخل الصيغة وكيفية استخدامها معًا. على سبيل المثال، تسترد هذه الصيغ المسماة معلومات مفيدة عن المستخدم الحالي من Dataverse:
UserEmail = User().Email;
UserInfo = LookUp( Users, 'Primary Email' = User().Email );
UserTitle = UserInfo.Title;
UserPhone = Switch( UserInfo.'Preferred Phone',
'Preferred Phone (Users)'.'Mobile Phone', UserInfo.'Mobile Phone',
UserInfo.'Main Phone' );
إذا كانت صيغة UserTitle بحاجة إلى التحديث، فيمكنك تحديثها بسهولة في هذا الموقع. في حالة عدم الحاجة إلى UserPhone في التطبيق، فإنه لا يتم إجراء هذه الاستدعاءات لجدول المستخدمين في Dataverse. لا توجد عقوبة لتضمين تعريف صيغة غير مستخدم.
بعض القيود على الصيغ المسماة:
- لا يمكنها استخدام وظائف السلوك وإلا تسبب آثارًا جانبية داخل التطبيق.
- لا يمكنها إنشاء مرجع دائري. وجود a = b; وb = a; في التطبيق نفسه غير مسموح به.
الوظائف المعرفة بواسطة المستخدم
يتضمن Power Fx قائمة طويلة من الدالات المضمنة، مثل إذا، والنص، وتعيين. باستخدام الدالات المعرفة من قبل المستخدم، يمكنك كتابة الدالات الخاصة بك التي تأخذ المعلمات وترجع قيمة، تماما مثل الوظائف المضمنة. فكر في الدالات المعرفة من قبل المستخدم كملحق للصيغ المسماة التي تضيف معلمات وتدعم صيغ السلوك.
على سبيل المثال، يمكنك تعريف صيغة مسماة تقوم بإرجاع الكتب الخيالية من مكتبة:
Library = [ { Title: "The Hobbit", Author: "J. R. R. Tolkien", Genre: "Fiction" },
{ Title: "Oxford English Dictionary", Author: "Oxford University", Genre: "Reference" } ];
LibraryFiction = Filter( Library, Genre = "Fiction" );
بدون معلمات، تحتاج إلى تعريف صيغ مسماة منفصلة لكل نوع. ولكن بدلا من ذلك، قم بإضفاء معلمات على الصيغة المسماة:
LibraryType := Type( [ { Title: Text, Author: Text, Genre: Text } ] );
LibraryGenre( SelectedGenre: Text ): LibraryType = Filter( Library, Genre = SelectedGenre );
يمكنك الآن استدعاء LibraryGenre( "Fiction" )أو LibraryGenre( "Reference" )أو تصفية أنواع أخرى باستخدام دالة واحدة معرفة من قبل المستخدم.
يتشكل بناء الجملة من:
اسم الوظيفة ([ ParameterName1: ParameterType1 [ , ParameterName2: ParameterType2 ... ] ] ) :صيغة = ;
- FunctionName – مطلوب. اسم الدالة المعرفة من قبل المستخدم.
- ParameterNames - اختياري. اسم معلمة الدالة.
- ParameterType(s) – اختياري. اسم نوع، إما اسم نوع بيانات مضمن، أو اسم مصدر بيانات، أو نوع معرف باستخدام الدالة Type .
- ReturnType – مطلوب. نوع قيمة الإرجاع من الدالة.
- الصيغة - مطلوب. الصيغة التي تحسب قيمة الدالة بناءً على المعلمات.
يجب كتابة كل معلمة والإخراج من الدالة المعرفة من قبل المستخدم. في هذا المثال، SelectedGenre: Text يعرف المعلمة الأولى للدالة لتكون من النوع Text وهي SelectedGenre اسم المعلمة المستخدمة في النص الأساسي لعملية التصفية. راجع أنواع البيانات لأسماء الأنواع المدعومة. يتم استخدام الدالة Type لإنشاء نوع تجميعي للمكتبة، بحيث يمكنك إرجاع جدول من الكتب من الدالة.
يمكنك تعريف LibraryType كجدول الجمع لنوع السجلات. إذا كنت تريد تمرير كتاب واحد إلى دالة، يمكنك استخراج نوع السجل لهذا الجدول باستخدام الدالة RecordOf:
BookType := Type( RecordOf( LibraryType ) );
IsGenre( Book: BookType, SelectedGenre: Text ): Boolean = (Book.Genre = SelectedGenre);
مطابقة السجلات لمعلمات الدالة أكثر إحكامًا مما هي عليه في الأجزاء الأخرى من Power Fx. يجب أن تكون حقول قيمة السجل مجموعة فرعية مناسبة لتعريف النوع ولا يمكن أن تتضمن حقولا إضافية. على سبيل المثال، IsGenre( { Title: "My Book", Published: 2001 }, "Fiction" ) ينتج عن خطأ.
الإعادة غير مدعومة بعد من قبل الوظائف المعرفة من قبل المستخدم.
سلوك الدالات المحددة من قِبل المستخدم
لا تدعم الصيغ المسماة ومعظم الدالات المحددة من قبل المستخدم دالات السلوك ذات التأثيرات الجانبية، مثل تعيين أو إخطار. بشكل عام، تجنب تحديث الحالة إذا أمكنك ذلك. بدلا من ذلك، الاعتماد على أنماط البرمجة الوظيفية والسماح ل Power Fx بإعادة حساب الصيغ حسب الحاجة تلقائيا. ولكن هناك حالات حيث لا يمكن تجنب ذلك. لتضمين منطق السلوك في دالة محددة من قبل المستخدم، قم بلف النص بين أقواس متعرجة:
Spend( Amount: Number ) : Void = {
If( Amount > Savings,
Error( $"{Amount} is more than available savings" ),
Set( Savings, Savings - Amount );
Set( Spent, Spent + Amount)
);
}
يمكنك الآن الاتصال Spend( 12 ) للتحقق مما إذا كان لديك 12 في المدخرات الخاصة بك، وإذا كان الأمر كذلك، فقم بخصمه بمقدار 12 وإضافة 12 إلى المتغير Spent. نوع الإرجاع لهذه الدالة هو Void لأنه لا يرجع قيمة.
بناء جملة دالة سلوك محددة من قبل المستخدم هو:
FunctionName( [ ParameterName1: ParameterType1 [ , ParameterName2: ParameterType2 ... ] ] ) : ReturnType = { Formula1 [ ; الصيغة2 ... ] };
- FunctionName – مطلوب. اسم الدالة المعرفة من قبل المستخدم.
- ParameterNames - اختياري. اسم معلمة الدالة.
- ParameterType(s) – اختياري. اسم النوع، سواء كان اسم نوع البيانات المدمج، أو اسم مصدر البيانات، أو النوع المحدد باستخدام الدالة Type.
- ReturnType – مطلوب. نوع قيمة الإرجاع من الدالة. استخدم Void إذا لم ترجع الدالة قيمة.
- الصيغ - مطلوب. الصيغة التي تحسب قيمة الدالة بناءً على المعلمات.
كما هو الحال مع جميع معادلات Power Fx، لا ينتهي التنفيذ عند مواجهة خطأ. بعد استدعاء الدالة Error، تمنع الدالة If حدوث التغييرات على Savings و Spent. يمكن استخدام الدالة IfError أيضًا لمنع المزيد من التنفيذ بعد حدوث خطأ. على الرغم من أنها ترجع Void، إلا أنه لا يزال بإمكان الصيغة إرجاع خطأ إذا كانت هناك مشكلة.
الأنواع المحددة من قِبل المستخدم
استخدم الصيغ المسماة مع الدالة Type لإنشاء أنواع معرفة من قبل المستخدم. استخدم := بدلاً من = لتحديد نوع محدد من قبل المستخدم، على سبيل المثال Book := Type( { Title: Text, Author: Text } ). راجع دالة Type للاطلاع على مزيد من المعلومات والأمثلة.
خاصية OnError
استخدم OnError لاتخاذ إجراء عند حدوث خطأ في أي مكان في التطبيق. يوفر فرصة عالمية لاعتراض شعار خطأ قبل عرضه للمستخدم النهائي. يمكنك أيضا استخدامه لتسجيل خطأ باستخدام الدالة Trace أو الكتابة إلى قاعدة بيانات أو خدمة ويب.
في تطبيقات اللوحة، يتم التحقق من نتيجة كل تقييم صيغة بحثًا عن خطأ. إذا تمت مصادفة خطأ، يتم تقييم OnError بنفس متغيرات نطاق FirstError و AllErrors التي يستخدمها التطبيق إذا تم تضمين الصيغة بأكملها في دالة IfError.
إذا كان OnError فارغا، يظهر شعار الخطأ الافتراضي FirstError.Message للخطأ. يؤدي تعريف صيغة OnError إلى تجاوز هذا السلوك، بحيث يمكن للصانع معالجة الإبلاغ عن الأخطاء حسب الحاجة. يمكنك طلب السلوك الافتراضي في OnError عن طريق إعادة إنشاء الخطأ باستخدام الدالة Error. استخدم نهج إعادة التحويل إذا كنت تريد التصفية أو معالجة بعض الأخطاء بشكل مختلف، ولكن اسمح للآخرين بالمرور.
يتعذر على OnError استبدال خطأ في العمليات الحسابية بالطريقة التي تستطيع الدالة IfError القيام بها. إذا تم استدعاء OnError ، حدث الخطأ بالفعل وتم معالجته بالفعل من خلال حسابات الصيغ مثل IfError؛ يتحكم OnError في الإبلاغ عن الأخطاء فقط.
يتم تقييم صيغ OnError بشكل متزامن ومن المحتمل أن يتداخل تقييمها مع معالجة الأخطاء الأخرى. على سبيل المثال، إذا قمت بتعيين متغير عمومي في أعلى OnError وقراءته لاحقا في نفس الصيغة، فمن المحتمل أن تكون القيمة قد تغيرت. استخدم الدالة With لإنشاء قيمة مسماة محلية للصيغة.
على الرغم من أن OnError يعالج كل خطأ على حدة، فقد لا يظهر شعار الخطأ الافتراضي لكل خطأ على حدة. لتجنب عرض عدد كبير جدا من شعارات الخطأ في نفس الوقت، لا يتم عرض نفس شعار الخطأ مرة أخرى إذا تم عرضه مؤخرا.
مثال
فكر في عنصر التحكم Label وعنصر التحكم Slider الموجودان معًا في الصيغة:
Label1.Text = 1/Slider1.Value
يتم تعيين شريط التمرير الافتراضي إلى 50. إذا قمت بنقل شريط التمرير إلى 0، فلن تظهر Label1 أي قيمة، ويظهر شعار خطأ:
دعونا ننظر إلى ما يحدث بالتفصيل:
- يمكنك نقل شريط التمرير إلى اليسار وتغيير الخاصية Slider1.Value إلى 0.
- تتم إعادة تقييم Label1.Text تلقائيا. يحدث القسمة على صفر، مما يؤدي إلى حدوث خطأ.
- لا يوجد IfError في هذه الصيغة. يتم إرجاع القسمة على صفر من خلال تقييم الصيغة.
- لا يمكن أن تعرض Label1.Text أي شيء لهذا الخطأ، لذلك فإنها تعرض حالة فارغة.
- يتم استدعاء OnError. ونظرًا لأنه لا يوجد معالج، فإنه يتم عرض شعار الخطأ القياسي مع معلومات الخطأ.
إذا لزم الأمر، يمكنك أيضا تغيير الصيغة إلى Label1.Text = IfError( 1/Slider1.Value, 0 ). يعني استخدام IfError أنه لا يوجد شعار خطأ أو خطأ. لا يمكنك تغيير قيمة خطأ من OnError لأن الخطأ حدث بالفعل - يتحكم OnError فقط في كيفية الإبلاغ عنه.
إذا أضفت معالج OnError ، فإنه لا يؤثر على الخطوات قبل الخطوة 5، ولكنه يغير كيفية الإبلاغ عن الخطأ:
Trace( $"Error {FirstError.Message} in {FirstError.Source}" )
باستخدام معالج OnError هذا، لا يرى مستخدم التطبيق أي خطأ. ولكن تتم إضافة الخطأ إلى تتبع Monitor، بما في ذلك مصدر معلومات الخطأ من FirstError:
إذا كنت تريد أيضا إظهار شعار الخطأ الافتراضي جنبا إلى جنب مع التتبع، فقم بإعادة وصف الخطأ باستخدام دالة الخطأ بعد استدعاء التتبع ، كما لو لم يكن التتبع موجودا:
Trace( $"Error {FirstError.Message} in {FirstError.Source}" );
Error( FirstError )
خاصية OnStart
ملحوظة
يمكن أن يؤدي استخدام الخاصية OnStart إلى حدوث مشاكل في الأداء عند تحميل تطبيق. ضع في اعتبارك هذه البدائل قبل إضافة منطق إلى OnStart:
- لتخزين البيانات مؤقتا أو إعداد متغيرات عمومية، استخدم صيغة مسماة في الخاصية الصيغ حيثما أمكن ذلك.
- لتعيين الشاشة الأولى للعرض، استخدم خاصية StartScreen بدلا من Navigate.
- لتشغيل المنطق عند عرض شاشة معينة، استخدم الخاصية OnVisible الخاصة بالشاشة .
استنادا إلى السياق الخاص بك، قد يتم تعطيل الخاصية OnStart بشكل افتراضي. إذا لم تره وتحتاج إلى استخدامه، فتحقق من الإعدادات المتقدمة للتطبيق للحصول على مفتاح لتمكينه.
عند تمكين قاعدة OnStart التي لا يتم حظرها (الافتراضي)، يتم تشغيل OnStart في نفس الوقت مثل قواعد التطبيق الأخرى. ونتيجة لذلك:
- قد لا تتم تهيئة المتغيرات التي تمت تهيئتها في OnStart بشكل كامل عندما تقرأها قواعد التطبيق الأخرى.
- يمكن أن تعرض الشاشة وتصبح تفاعلية قبل تشغيل App.OnStart أو Screen.OnVisible ، خاصة إذا كانت هذه الوظائف تستغرق وقتا طويلا.
يتم تشغيل الخاصية OnStart عندما يقوم المستخدم ببدء تشغيل التطبيق. استخدم هذه الخاصية من أجل:
- استرداد البيانات وتخزينها مؤقتا في المجموعات باستخدام الدالة Collect .
- قم بإعداد المتغيرات العمومية باستخدام الوظيفة Set.
يتم تشغيل هذه الصيغة قبل ظهور الشاشة الأولى. لا يتم تحميل شاشة، يمكنك تعيين متغيرات السياق باستخدام الوظيفة UpdateContext. ولكن يمكنك تمرير متغيرات السياق باستخدام الدالة Navigate .
بعد تغيير الخاصية OnStart ، اختبرها عن طريق تمرير الماوس فوق كائن التطبيق في جزء عرض الشجرة ، وتحديد علامة الحذف (...)، ثم تحديد Run OnStart. على عكس وقت تحميل التطبيق لأول مرة، يتم بالفعل تعيين المجموعات والمتغيرات الموجودة. للبدء باستخدام مجموعات فارغة، استخدم الوظيفة ClearCollect بدلاً من الوظيفة Collect.
ملحوظة
- تم إيقاف استخدام الدالة Navigate في الخاصية OnStart . لا تزال التطبيقات الموجودة تعمل. لفترة محدودة، يمكنك تمكينه في إعدادات التطبيق (ضمن متوقف). ولكن يمكن أن يؤدي استخدام التنقل بهذه الطريقة إلى تأخير تحميل التطبيق لأنه يجبر النظام على الانتهاء من تشغيل OnStart قبل عرض الشاشة الأولى. استخدم خاصية StartScreen بدلا من ذلك لتعيين الشاشة الأولى المعروضة.
- تم إيقاف تشغيل مفتاح التبديل المتوقف للتطبيقات التي تم إنشاؤها قبل مارس 2021 حيث أضفت الانتقال إلى OnStart بين مارس 2021 والآن. عند تحرير هذه التطبيقات في Power Apps Studio، سترى خطأ. قم بتشغيل المفتاح المتقاعد لمسح هذا الخطأ.
خاصية StartScreen
تقوم خاصية StartScreen بتعيين الشاشة التي تظهر أولا. يقوم Power Apps بتقييم هذه الخاصية مرة واحدة عند تحميل التطبيق وإرجاع عنصر الشاشة لإظهاره. بشكل افتراضي، هذه الخاصية فارغة، وتظهر الشاشة الأولى في طريقة عرض شجرة Studio أولا.
StartScreen هي خاصية تدفق بيانات لا يمكن أن تحتوي على دالات سلوك. تتوفر جميع وظائف تدفق البيانات. استخدم هذه الدالات والإشارات لتحديد الشاشة التي سيتم عرضها أولا:
- وظيفة Param لقراءة المعلمات المستخدمة لبدء التطبيق.
- وظيفة User لقراءة معلومات عن المستخدم الحالي.
- LookUp، وFilter، وCountRows، وMax، والوظائف الأخرى التي تقرأ من مصدر البيانات.
- تستدعي واجهة برمجة التطبيقات من خلال موصل. تأكد من إرجاع المكالمة بسرعة.
- إشارت مثل الاتصال، والبوصلة، والتطبيق.
ملحوظة
لا تتوفر المتغيرات والمجموعات العمومية، بما في ذلك تلك التي تم إنشاؤها في OnStart، في شاشة البدء. تتوفر صيغ مسماة وغالبًا ما تكون بديلاً أفضل لإعادة استخدام الصيغة عبر التطبيق.
إذا أرجعت شاشة البدء خطأ، تظهر الشاشة الأولى في طريقة عرض شجرة Studio كما لو لم يتم تعيين شاشة البدء . استخدم الدالة IfError لالتقاط أي أخطاء وإعادة التوجيه إلى شاشة خطأ.
بعد تغيير StartScreen في Studio، اختبرها عن طريق تمرير الماوس فوق كائن التطبيق في جزء عرض الشجرة ، وتحديد علامة الحذف (...)، ثم تحديد Navigate to StartScreen. تتغير الشاشة كما لو أن التطبيق تم تحميله للتو.
أمثلة
Screen9
Screen9 يظهر أولا عند بدء تشغيل التطبيق.
If( Param( "admin-mode" ) = 1, HomeScreen, AdminScreen )
التحقق مما إذا تم تعيين "وضع المسؤول" ل Param واستخدامه لتحديد ما إذا كانت الشاشة الرئيسية أو شاشة المسؤول تظهر أولا.
If( LookUp( Attendees, User = User().Email ).Staff, StaffPortal, HomeScreen )
التحقق من أن أحد الحضور عضو في فريق العمل وتوجيهه إلى الشاشة الصحيحة عند بدء التشغيل.
IfError( If( CustomConnector.APICall() = "Forest",
ForestScreen,
OceanScreen
),
ErrorScreen
)
يوجه التطبيق بناءً على استدعاء API لـ ForestScreen أو OceanScreen. إذا فشلت واجهة برمجة التطبيقات، يستخدم ErrorScreen التطبيق بدلا من ذلك.
خاصية StudioVersion
استخدم الخاصية StudioVersion لإظهار إصدار Power Apps Studio المستخدم لنشر تطبيق أو تسجيله. تساعد هذه الخاصية عند تصحيح الأخطاء والتحقق من إعادة نشر تطبيقك باستخدام إصدار حديث من Power Apps Studio.
يقوم StudioVersion بإرجاع النص. يمكن أن يتغير تنسيق هذا النص بمرور الوقت، لذا تعامل معه ككل ولا تستخرج أجزاء فردية.