إنتقل إلى المحتوى الرئيسي

رسم تطبيق استوديو

الهدف​

ارسم الشاشة على اللوحة، وقل ما هو كل كائن.

أين تُفتح​

افتح حلّك، اختر الشاشات، حدّد واحدة واضغط تصميم. تُفتح اللوحة في مكانها، تحت المسار نفسه ومنتقيات البيئة والحل نفسها — وهي اللوحة نفسها التي يستعملها مصمّم التقارير ومصمّم لوحات المعلومات، فلا شيء ممّا تعرفه عنها قد تغيّر.

التطبيق عدّة شاشات​

كل إطار تعيّنه كـ«الشاشة» هو شاشة من هذا التطبيق. ارسم إطارًا ثانيًا بجوار الأول وعيّنه كذلك، فيصير لتطبيقك شاشتان — على لوحة واحدة، جنبًا إلى جنب، حيث تراهما معًا.

اسم الشاشة هو اسم إطارها. غيّر اسم الإطار في قائمة الطبقات وتكون قد غيّرت اسم الشاشة. وهذا الاسم ليس زينة: هو ما يطلبه التنقّل، ولذلك تُرفَض شاشتان بالاسم نفسه عند الحفظ، مع تسمية التي يجب تغييرها.

قل على أيّها يفتح. ما إن يصير للتطبيق شاشتان حتى يظهر منتقي يفتح على في شريط العنوان. اختر الشاشة التي ينبغي أن يصل إليها القادم. ومع شاشة واحدة لا يظهر المنتقي، إذ لا خيار هناك.

الانتقال بينهما هو الخطوة التالية

رسم شاشتين واختيار شاشة البداية يعمل اليوم. أما ما لم يصل بعد فهو navigate — الإجراء الذي ينقل شخصًا من إحداهما إلى الأخرى — والأزرار التي تستدعيه. تلك هي الخطوة التالية، وغيابها مقصود: إجراء لا يفعل شيئًا أسوأ من إجراء غير معروض أصلًا.

الشيء الجديد الوحيد: ما هو الكائن​

حدّد كائنًا وافتح تبويب الشاشة بجانب الرسم. هناك سؤال واحد:

هذا الكائن …

أجب عنه، وتكون قد أخبرت المنصّة بشيء لا تستطيع استنتاجه. مستطيل نصّ هو عنوان ومستطيل نصّ هو فقرة يبدوان متطابقين على اللوحة؛ أنت وحدك تعرف أيّهما أيّ، وهذا الفرق هو ما سيعلنه قارئ الشاشة وما ستُبنى منه الشاشة النهائية.

الإجابةمتى تستعملها
الشاشة نفسهاالإطار الذي يُرسم كل شيء آخر داخله. حجمه هو حجم الشاشة.
منطقةصندوق يجمع أشياء أخرى — شريط علوي، عمود جانبي، بطاقة.
عنوانعنوان.
فقرةنصّ عادي.
قائمة / عنصر قائمةقائمة، وعنصر واحد فيها.
زرشيء يُضغط.
صورةصورة ذات معنى، في مقابل صورة للزينة.
(متروك فارغًا)رسم الشاشة — يُرسم، لكنه لا يقول شيئًا عمّا تحتويه الشاشة.

وتحتها تعرض القائمة نفسها أداة: زر أو حقل نص أو منطقة نص أو مربع اختيار أو قائمة منسدلة أو منتقي التاريخ. انظر أدناه — تلك ليست رسومًا.

ستلاحظ أن القائمة تتغيّر بتغيّر ما حدّدته. الإطار يمكن أن يكون الشاشة؛ والكائن النصّي لا يمكنه، لأن حجم الشاشة هو حجم الشاشة. أما الخط أو الشكل فلا إجابة له أصلًا، والتبويب يقول ذلك بدل أن يعرض لك لوحًا فارغًا.

ابدأ برسم إطار وعلّمه بأنه الشاشة. كل شيء آخر يذهب داخله، والكائنات داخل الإطار يمكن تثبيتها على حوافه لتتبعه عند تغيّر حجمه — التثبيت نفسه الذي تستعمله في المصمّمَين الآخرين.

مقاس النص​

حدّد أي نص، فينتهي قسم النص الخاص به بزرّين:

  • اضبط المقاس — الافتراضي، وما ظلّ النص يفعله دائمًا. العرض لك وتلتفّ الكلمات داخله. والارتفاع لك أيضًا، وهو حدّ أدنى: كبّر الصندوق إن شئت، ولن يصير أقصر من الكلمات أبدًا. (قبل هذا كانت المقابض الرأسية تتحرّك ثم يعود الصندوق فورًا إلى مكانه، وهو ما جعل النص الكائن الوحيد الذي لا يمكن تغيير مقاسه.)
  • بمقاس النص — يصير الصندوق هو النص تمامًا: بعرض أطول سطر كتبته وبارتفاع تلك السطور. ولا يلتفّ شيء، وتختفي مقابض تغيير المقاس لأنه لم يبقَ لها ما تقرّره. اضغط اضبط المقاس لتعود.

ولا يوجد عمدًا وضع ثالث يسمح للصندوق بأن يكون أقصر من كلماته. فصندوق يخفي ما كتبته خلف حافّته خطأٌ لا تراه، والحدّ الأدنى يمنحك كل ما يحتاجه "تغيير المقاس" من دونه.

أين يجلس النص داخل صندوقه​

في صفّ المحاذاة داخل قسم النص مجموعةٌ ثانية من ثلاثة: النص في أعلى الإطار وفي وسط الإطار وفي أسفل الإطار. وهي تقول إلى أيّ حافة يستند النص حين يكون الصندوق أطول من كلماته.

الوسط هو الافتراضي، وهو ما يحتاجه عنوان داخل زرّ: صندوق النص المرسوم داخل زرّ بارتفاع ٤٠ نقطة أطول عمدًا من سطره الواحد، والتوسيط هو ما يضع الكلمات حيث رسمت الزرّ.

واختر الأعلى لكل ما قد يطول. فصندوقٌ موسَّط يتبيّن أنه أصغر من كلماته يفيض في الاتجاهين معًا، فملاحظةٌ التفّت إلى ثلاثة سطور تتسلّق فوق العنوان الذي فوقها. وإسناده إلى الأعلى يعني أنه لا ينمو إلا إلى أسفل، في فراغ تراه. وهو أيضًا ما ترسمه اللوحة دائمًا، فهو الضبط الوحيد الذي تتّفق فيه الرسمة والشاشة تمامًا.

ولتحديد إطار الشاشة لاحقًا، انقر نقرة واحدة على خلفيته الفارغة — فالنقر على إطار يصل عادةً إلى ما رُسم داخله، ونقرة واحدة على بقعة خالية تحدّد الإطار نفسه بمقابضه كلها. وحين لا تبقى بقعة خالية، استعمل النقر الأيمن ← تحديد طبقة، أو لوحة الطبقات. غيّر حجمه بسحب مقبض أو بكتابة عرض وارتفاع في لوحة الخصائص؛ في الحالتين تتبعه الكائنات المثبَّتة داخله.

العمل على شيء واحد حين تتراكم الأشياء​

الشاشة ذات الألسنة عدّةُ لوحات مرسومة في المستطيل نفسه، تُعرض واحدة في كل مرّة. وعلى اللوحة تُرسم كلّها، فلا يمكن النقر على غير العليا ولا سحبها ولا تغيير مقاسها، والبقيّة تحتها بعيدةٌ عن المتناول.

اضغط زرّ الهدف في صفّ الطبقة (بجوار العين والقفل) فيختفي كلّ ما عداها من اللوحة. اعمل عليها ثم اضغطه ثانية — أو إظهار الكل في الشريط الذي يظهر أعلى قائمة الطبقات، وهو هناك لتقول لوحةٌ صارت نصف فارغة سببَ ذلك دائمًا.

ولا يغيّر شيئًا في تطبيقك. فالعين المجاورة تفتح الطريق أيضًا، لكن العين هي ظهور الرسمة نفسها: طبقةٌ أخفيتها لا تظهر في تطبيقك أصلًا، فإخفاء لوحتين ونسيان إعادتهما نشرُ شاشةٍ تنقصها لوحتان. أمّا هذا فاللوحةُ وحدها، لا يُحفظ، ويزول حين تفتح المصمّم في المرّة القادمة.

لقائمة الطبقات القائمةُ نفسها بالزر الأيمن​

انقر بالزر الأيمن على صفٍّ في شجرة الطبقات فتحصل على القائمة التي تعطيكها اللوحة: إعادة الترتيب، والتجميع، والقناع، والقلب، وإنشاء مكوّن، والقفل، والتكرار، والحذف — كلّها، عاملةً على ذلك الصف.

وهي تحدّد الصف أولًا، فتعمل القائمة دائمًا على ما أشرت إليه لا على ما كان محدّدًا قبل ذلك. ولا توجد هنا قائمة تحديد طبقة الفرعية: تلك موجودة لرفع الالتباس عند النقر فوق أشكال متراكمة، والصف في الشجرة كائنٌ واحد أصلًا.

وأنفع ما تكون مع الكائنات التي تصعّبها اللوحة — شيء مدفون داخل إطار، أو خلف شيء آخر، أو خارج العرض. اعثر عليه في الشجرة وتصرّف فيه هناك.

مفاتيح العرض والأشكال​

  • التكبير والتصغير بـ Ctrl+= وCtrl+- (⌘ على ماك)، أو بـ Ctrl مع عجلة الفأرة. Ctrl+0 يعيد إلى 100٪.
  • Shift+1 يعرض كل ما على اللوحة. Shift+2 يملأ النافذة بما حدّدته.
  • التحريك بعجلة الفأرة (Shift للتحريك جانبًا)، أو بالضغط على Space مع السحب، أو بأداة اليد (H).
  • مفاتيح الأسهم تحرّك التحديد بكسلًا واحدًا، ومع Shift عشرة. كل ضغطة خطوة تراجع واحدة.
  • الشكل الذي رسمته للتو يكون محدّدًا، وتعود أداة التحديد، فتستطيع تلوينه وتسميته فورًا.
  • كتابة الدوران تدير الشكل حول مركزه، كما يفعل مقبض الدوران.
  • أثناء السحب، تحاذي خطوط الإرشاد الحواف والمراكز مع ما يظهر على الشاشة. اضغط Alt مطوّلًا لوضع الشكل بحرّية.
  • انقر بأداة النص واكتب. يُحدَّد النص الجديد ويكون نصّه المؤقت مظلّلًا، فيحلّ أول حرف محلّه.
  • النقر على شكل داخل مجموعة يحدّد المجموعة كلها. انقر نقرًا مزدوجًا للوصول إلى الشكل نفسه.
  • الاتّحاد والطرح والتقاطع واستبعاد التقاطع تضع النتيجة حيث كان الشكل السفلي: في الإطار نفسه وباسمه، وبزواياه المستديرة إن كانت مستديرة.
  • Ctrl+D على عنصر داخل تخطيط تلقائي يضع النسخة بعده مباشرة، في الصف نفسه.

المتطلبات​

الخطوات​

  1. افتح حلّك، اختر الشاشات، حدّد واحدة واضغط تصميم.
  2. ارسم إطارًا. مع تحديده، افتح تبويب الشاشة واضبط هذا الكائن على الشاشة نفسها.
  3. ارسم داخله: أُطُر للمناطق، نصوص للعناوين والفقرات، صور حيث تريد صورًا.
  4. حدّد كل واحد وقل ما هو. واترك ما هو للزينة فارغًا.
  5. اضغط معاينة لترى الشاشة كما سيراها المستخدم.
  6. اضغط حفظ.

وحين تعيد فتح الشاشة يعود رسمك كما تركته تمامًا.

المعاينة تُريك الشيء الحقيقي​

المعاينة تستبدل اللوحة بالشاشة نفسها — لا صورةً عنها، ولا اللوحة بأدلّة مطفأة. إنه المكوّن نفسه الذي تركّبه قشرة المنصّة، فما تراه هو ما يحصل عليه المستخدم. حدّد نصًّا فيها فتجده يُحدَّد، واضغط Ctrl+F فيجده المتصفّح.

اضغط تصميم للعودة. تعرض المعاينة دائمًا ما على اللوحة الآن، بما في ذلك تعديلات لم تحفظها.

ماذا يفعل الحفظ فعلًا​

الحفظ يخزّن شيئين: رسمك، والشاشة وقد تحوّلت إلى عناصر ويب عادية. يصير العنوان عنوانًا حقيقيًا، والفقرة فقرة حقيقية، والزر زرًّا حقيقيًا. هذا ما يجعل النص قابلًا للتحديد والبحث، ويمنح الزر حلقة تركيز، ويتيح لقارئ الشاشة إعلان الصفحة إعلانًا صحيحًا — ولا شيء من ذلك يقدر عليه رسم.

فإجاباتك في قائمة هذا الكائن ليست تسميات. هي التي تقرّر ما يصير إليه كل كائن.

ويترتّب على ذلك أمران يستحقّان المعرفة:

  • تنعكس شاشتك للقارئ العربي والفارسي. كل ما ثبّتّه إلى اليسار يظهر على اليمين، والنص الذي حاذيته إلى اليسار يُحاذى إلى حافة القراءة. لا تحتاج إلى رسمها مرّتين.
  • تغيير الحجم لا يكلّف شيئًا. تثبيت كائن إلى الحافتين يجعله يتمدّد، وتثبيته إلى الأسفل يُبقيه هناك — والمتصفّح يفعل ذلك بنفسه، فتبقى الشاشة سلسة مهما غُيّر حجمها. وإذا ضاقت كثيرًا فإنها تتمرّر بدل أن تصغر: الشاشة شيء يقرأ فيه الناس ويكتبون، وتصغيرها ينتج نصًّا لا يقرؤه أحد.

إذا قال لك الحفظ شيئًا​

قد يعود الحفظ بملاحظة. ولا شيء منها يمنع الحفظ:

  • لا كائن معيَّن كالشاشة — استُخدم الرسم كلّه بدلًا من ذلك. عيّن إطارًا كالشاشة كي يكون للكائنات داخله ما تُثبَّت إليه.
  • كائن آخر معيَّن كالشاشة أيضًا — يُستخدم الأول فقط؛ وصار الباقي صناديق عادية.
  • زر بلا نص فيه — ليس لدى قارئ الشاشة ما يعلنه. ارسم كائنًا نصّيًا داخل الزر.

حين تريد أداة حقيقية، لا رسمًا لها​

ارسم صندوقًا، ثم اختر من تبويب الشاشة أحد مدخلات أداة بدل عنصر. ما يظهر على الشاشة النهائية هو أداة المنصّة نفسها — منتقي التاريخ ذاته الذي تستعمله نماذج السجلات، وحقل النص ذاته، والزر ذاته.

وهذا أهمّ ممّا يبدو. المستطيل الذي يشبه حقل تاريخ لا تقويم له. والمستطيل الذي يشبه حقل نص لا مؤشّر كتابة فيه ولا تحديد ولا إكمال تلقائي ولا سلوك لوحة مفاتيح. وحين يفتح مستخدم فارسي شاشتك، يعرض منتقي التاريخ الحقيقي تقويمًا جلاليًّا — دون أي عمل منك، لأنه لم يُعَد رسمه أصلًا.

ما تحتفظ به، وما يبقى للمنصّة. موضع رسمك وحجمه وطلاؤه كلها لك — التعبئة والحدّ واستدارة الزوايا ولون الكلمات داخله وسُمكها. وما يبقى للمنصّة هو كل ما لا يستطيع الرسم قوله: مؤشّر الكتابة، والتقويم، والأرقام، وسلوك لوحة المفاتيح، وحلقة التركيز التي لم تطلِ فوقها.

وما تتركه دون طلاء يبقى للمنصّة، وهذا هو المقصود لا قيدًا عليه. فالأداة التي لم تطلِها قط تبدو تمامًا كأي أداة أخرى في المنتج، وتتبع السمة حين تتغيّر. اطلِ الحدّ وحده، فيكون الحدّ وحده لك.

اطلِ بـرمز لا بلون

اختر عيّنة من صف الرموز تحت التعبئة بدل كتابة قيمة سداسية عشرية. «أساسي» هو لون تأكيد المستأجر في الوضع الفاتح والداكن؛ أما القيمة المكتوبة فصحيحة في أحدهما فقط. والأداة التي تُسقطها من صندوق الأدوات تأتي مطليّة بالرموز أصلًا، ولهذا تبدو صحيحة في الوضعين.

اكتب التسمية داخل الصندوق. الكلمات التي ترسمها فيه تصير عنوان الزر، أو تسمية مربع الاختيار، أو النص الإرشادي الباهت داخل حقل النص — ولا حقل منفصل تملؤه.

أشياء تكتبها ولا ترسمها:

  • الخيارات، على القائمة المنسدلة، خيار في كل سطر. وهو الشيء الوحيد في الأداة الذي لا يمكن رسمه: القائمة المغلقة تعرض قيمة ولا تعرض القائمة أبدًا.
  • يقبل، على مربّع النص — أيّ قيمة يحمل: نصًّا، كلمة مرور، عنوان بريد إلكتروني، رقمًا، رقم هاتف، عنوان ويب. وهذا ليس زخرفًا: مربّع كلمة المرور يُخفي ما يُكتب ويأتي بزرّ الإظهار الخاص بالمنصّة، ومربّع البريد أو عنوان الويب يرفع لوحة المفاتيح المناسبة على الهاتف، ومربّع الرقم لوحة أرقام.
  • للقراءة فقط، على مربّع النص أو منطقة النص — يمكن قراءته وتحديده ونسخه لا تغييره. ويختلف عن معطَّل الموجود على كل أداة والذي يعني أن الأداة ليست لهذا المستخدم أصلًا: المعطَّل تتخطّاه لوحة المفاتيح وقارئ الشاشة، أما «للقراءة فقط» فلا.
  • أقصى عدد للأحرف، على مربّع النص أو منطقة النص — يوقف المتصفّح الكتابة عند ذلك الحد.
  • يقبل، على منتقي الملفات — أي ملف أو صورة. حقل واحد يقرّر أمرين معًا: ما يعرضه مربّع اختيار الملفات، وهل يُعرض ما اختِير كصورة.
  • ينتقي، على منتقي التاريخ — تاريخًا، أو تاريخًا ووقتًا، أو وقتًا.
  • التقويم، على منتقي التاريخ — إعداد المستأجر أو ميلادي أو فارسي. اتركه على الأول إلا إذا كان التقويم حقيقة عن البيانات لا عن القارئ: تاريخ انتهاء جواز السفر ميلادي للجميع، بينما «تاريخ الاعتماد» يُعرَض بالتقويم الذي يستعمله من يقرأه.
منتقي الملفات يحمل الملف، والمعالج يحفظه

اربط القيمة بحقل حالة فيصل إليه الملف المختار. والنص المربوط بالحقل نفسه يعرض اسم الملف. ولتحفظ الملف، مرّر الحقل إلى createRecord أو updateRecord قيمةً لحقل ملف أو صورة — updateRecord("contact", id, { new_photo: getState("photo") }) — فيُحفظ مع السجل. وما لم يفعل ذلك معالج، يبقى الملف في الصفحة ويزول حين تغادرها. والملف الأكبر من 4 ميغابايت يُرفض في المنتقي قبل أن يُقرأ.

ملاحظة

إن ربطت مفعّل بتعبير، يُعطَّل مربّع معطَّل ويقول السبب: التعبير أجاب أصلًا متى يجوز استخدام الأداة، ومربّعٌ بجانبه سيكون إجابة ثانية. اربط enabled أو علّم معطَّل، لا كليهما.

والأدوات تقبل الحالات المرسومة أيضًا. ارسم الأداة، وضاعِفها، وغيّر ألوان النسخة، وعيّنها غير صالحة — تمامًا كما تفعل مع صندوق رسمته بنفسك. وما ينتقل هو الفرق، ويحطّ على الأداة نفسها. انظر إعادة استخدام تصميم بالمكوّنات لمعرفة كيف تُعلَن الحالة.

فأيّهما تستعمل؟ ارسم حين يكون الشكل هو المقصود — زر دعوة بألوانك، بحالة رسمتها بنفسك. واختر أداة حين يكون السلوك هو المقصود: تقويم، مؤشّر كتابة، لوحة مفاتيح.

صناعة «زر خطر»​

لا توجد قائمة الشكل المنسدلة، ولا حاجة إليها. للحصول على زر أحمر:

  1. أسقِط زرًّا من صندوق الأدوات.
  2. اجعل تعبئته رمز خطأ ولون عنوانه أبيض.
  3. حدّده واضغط إنشاء مكوّن — فالزر نفسه يصير المكوّن. غيّر اسم الطبقة إلى زر الخطر، فيتغيّر اسم المكوّن معها.

صار الآن في قائمة المكوّنات، وكل شاشة تضع واحدًا تحصل على الزر الأحمر نفسه. تريد حالة عند الإشارة؟ أضِف حالة إلى المكوّن وارسم النسخة أغمق. تريد زر نجاح أيضًا؟ كرّر العمل نفسه — وهي حركة تعرفها أصلًا، لا مدخلًا خامسًا في قائمة يجب أن يضيفه لك أحد.

حدّد مربعًا أو نصًّا، واختر رابط في تبويب الشاشة. يتبعه حقلان:

  • العنوان — إلى أين يذهب: ‎https://example.com/docs‎ أو ‎mailto:someone@example.com‎ أو ‎tel:+441234567890‎ أو مسار داخل هذا التطبيق مثل ‎/reports/monthly‎.
  • يفتح — في هذه النافذة (المعتاد) أو في تبويب جديد.

للانتقال إلى شاشة أخرى من هذا التطبيق، اكتب اسمها: ‎Contacts‎. يذهب الرابط إلى تلك الشاشة أينما فُتح التطبيق، وحده أو داخل تطبيق قائم على النموذج تختلف فيه عناوين الشاشة نفسها. والضغط عليه ينقلك داخل التطبيق دون إعادة تحميل الصفحة، ويظل النقر الأوسط يفتح الشاشة في علامة تبويب جديدة.

لماذا هذا رابط لا زرّ بمعالج. النقر الأوسط يفتح تبويبًا. والنقر الأيمن يعرض فتح الرابط في تبويب جديد ونسخ عنوان الرابط. وتمرير المؤشّر يُظهر الوجهة في شريط حالة المتصفّح. ويستطيع قارئ الشاشة أن يسرد كل روابط الشاشة ويقرأ رابطك بينها. ولا يأتي أيٌّ من ذلك من معالج — كلّه يأتي من كون العنصر رابطًا حقيقيًا.

وحين تكون الوجهة محسوبة، اربط العنوان بدل كتابته — ‎"https://example.com/" + state.topic‎. الارتباط هو الذي يقرّر، وتُعطّل اللوحة المربع وتقول السبب. انظر اجعل الشاشة تتفاعل.

وبعض العناوين مرفوضة، وتحمرّ اللوحة وأنت تكتبها: المسموح هو عناوين الوِب (‎http‎ و ‎https‎) والبريد الإلكتروني وأرقام الهاتف والمسارات داخل هذا التطبيق. والرابط الذي يشغّل كودًا ليس رابطًا، وقد تصل الشاشة من استيراد لا من يديك.

تلميح

حين تكون الشاشة هي التي تقرّر إلى أين تذهب — بعد الحفظ أو بحسب ما اختِير — استخدم ‎openUrl("…")‎ في معالج. القاعدة نفسها في العناوين، وانظر اجعل الشاشة تتفاعل.

ارسم كيف يبدو عند الإشارة إليه​

الحالات ملك للمكوّن. انقر بالزر الأيمن على ما تريد إعطاءه حالة واختر إنشاء مكوّن — ثم أضِف حالاته على المكوّن نفسه، حيث تُسرَد معًا. الشرح الكامل: أعد استخدام تصميم بالمكوّنات.

موضع واحد بدل موضعين. كان في هذا التبويب أيضًا صندوق ارسم حالة يطلب اسمًا وتفاعلًا قبل أن ترسم شيئًا، ويجلس على كائنات لا قائمة حالات لها أصلًا؛ أما الآن فتبويب الشاشة يقول أين تسكن الحالات.

ومكوّن بنسخة واحدة مكوّنٌ صحيح تمامًا. إن كان كل ما تريده حالة إشارة على زرّ واحد، فاجعله مكوّنًا وأعطِه الحالة — هذا هو الثمن، وهو نفسه ما يتيح لك وضع ذلك الزرّ مرتين غدًا.

ما اسم الحالة، وما «أثناء»​

للحالة نصفان، وتقول كلًّا منهما في مكان:

  • الاسم لك — invalid أو overBudget أو awaitingApproval. أما محدَّد ومُعلَّم وغير صالح ونجاح وتحذير وجارٍ التحميل وللقراءة فقط فاقتراحات فحسب.
  • أثناء — على لوحة الصيغة نفسها: دائمًا، أو مُشار إليه، مضغوط، مركّز عليه. هذه الثلاث للمتصفّح، ولذلك هي وحدها التي لا يمكنك ابتكارها.
ملاحظة

«معطّل» اسمٌ لا «أثناء». كان في ذلك المنتقي، وليس موضعه: مُشار إليه ومضغوط ومركّز عليه أشياء يفعلها أحدهم، وكلٌّ منها ينتهي لحظة توقّفه. أما «معطّل» فهو ما يكونه عنصر التحكّم — شاشتك هي التي قرّرته — فهو اسم حالة كأي اسم آخر، يُكتب disabled.

ولستَ مضطرًا لقول متى يعمل. الشاشة تعرف ذلك أصلًا، من علامة معطّل على عنصر التحكّم أو من تعبير مُفعَّل الخاص به، وهي التي تُشغّل الحالة نيابةً عنك. ارسم صيغة وسمّها disabled، فيرتديها كل عنصر تحكّم لا يمكن استخدامه.

اضبط الاثنين معًا فيكون لديك تركيب — غير صالح أثناء الإشارة إليه. ولست مضطرًا أبدًا لرسم كل التركيبات: إن أشار مستخدم إلى شيء في حالة «غير صالح» ولم ترسم إلا «غير صالح»، فسيراها.

استخدم الحروف والأرقام و- و_ وابدأ بحرف. أما الاسم الذي لا يصلح حالةً فيُعطِّل الزرّ ويقول السبب، بدل أن يدعك ترسم أربع حالات ثم تصطدم بالرفض عند الحفظ.

ثلاثة أمور تستحق المعرفة:

  • لا يُحفظ إلا الاختلاف. إن غيّرت خلفية النسخة، فالخلفية وحدها تُحفظ. فتغيير حجم الأصل أو تعديل نصّه لا يحتاج إلى تكرار في كل حالة — وهذا ما يمنع زرًّا يقفز عند الإشارة إليه.
  • ضع النسخة حيث شئت. موضع النسخة على اللوحة ليس جزءًا من الحالة؛ إنه مجرد مكان لرؤيتها.
  • لكن تحريك شيء داخل النسخة جزء منها. حرّك مقبض المفتاح إلى الطرف الآخر من مساره في النسخة، فينزلق المقبض عند تشغيل الحالة — انزلاقًا لا قفزًا. هكذا تُرسم المفاتيح والعدّادات وأي إبراز متنقّل. وتغيير حجم شيء داخل النسخة يُحتسب أيضًا، لكنه يقع دفعةً واحدة: تكبير مربّع يعيد ترتيب ما حوله، وتحريك ذلك هو ما يجعل الشاشة تتلعثم.
  • لا شيء يعمل. المتصفّح يفعل ذلك كلّه، فشاشة بخمسين حالة سريعة تمامًا كشاشة بلا حالات.

إن أضفت أو حذفت كائنًا في النسخة توقّفت الحالة عن العمل، والحفظ يقول ذلك ويسمّيها. يجب أن تكون الحالة بالشكل نفسه الذي تعكسه. ولإظهار شيء إضافي عند الإشارة، ارسمه في الأصل وأخفِه هناك ثم أظهِره في الحالة — فالإخفاء والإظهار اختلاف في الشكل، وهو ما تستطيعه الحالة.

ضع أيقونة عليه​

المكوّنات ← أيقونة… يفتح منتقي الأيقونات الخاص بالمنصة — مجموعة Lucide كاملة، قابلة للبحث بما تعنيه الأيقونة لا باسمها الدقيق. اختر واحدة فتنزل على اللوحة.

ما ينزل كائن مرسوم عادي، لا نوع خاص:

  • يُلوَّن بالتعبئة نفسها التي يُلوَّن بها كل شيء، فأعطه رمز تصميم ليتبع الوضع الفاتح/الداكن للقارئ؛
  • يقبل الحالات المرسومة، فيغيّر لونه عند الإشارة إليه مع البطاقة التي هو فيها؛
  • يمكنه ربط الظهور، وبهذا يحمل زرّ واحد رسمين ويُظهر الملائم منهما — زرّ وضع الألوان في النموذج يرسم قمرًا وشمسًا ويُظهر ما ليس عليه الوضع الحالي.

يأتي محدَّدًا بخط لا معبّأ، بلون color.text، بمقاس ٢٤×٢٤. غيّر مقاسه ولونه، وضعه داخل زرّ بجانب النص. لا شيء فيه خاص بعد ذلك.

زرّ لا يحمل غير أيقونة مرفوض. يحذّر الحفظ لا يحتوي على نص، فليس لدى قارئ الشاشة ما يعلنه — ضع الكلمات بجانب الرسم، كما يفعل زرّ الوضع الداكن في نموذج مكتب الدعم. وهو أيضًا الألطف: ليس كل الناس تعلّموا أن القمر يعني الداكن.

الصفّ بالنقر فقط ولا يُسحَب، لأن السحب عليه أن يعرف ماذا يحمل، وهذا كان سيحمل حوارًا.

اخترتَ الأيقونة الخطأ؟ غيّرها​

حدّد الأيقونة، فيظهر في لوحة الخصائص تحت اسمها حقل أيقونة بالمنتقي نفسه. اختر غيرها فلا يُستبدل إلا الرسم — أما الحجم واللون والحالات والارتباطات فتبقى تمامًا كما ضبطتها.

وهذا كل سبب تغييرها من هناك بدل حذفها ووضع أخرى: الأيقونة الجديدة تأتي ٢٤ في ٢٤ بلون color.text ولا تعرف شيئًا عن الزرّ الذي كنت وضعت الأولى داخله.

أما أيقونة رسمتَها بنفسك بالقلم فلا حقل أيقونة لها، ولا ينبغي: لا اسم خلفها ليُستبدل، وكل ما يستطيعه منتقٍ هناك هو التخلّص من رسمك.

ضع أيقونة داخل زر​

حدّد زرًا فتعرض لوحة الخصائص حقل أيقونة الزر بالمنتقي نفسه. اختر أيقونة فتُرسم داخل الزر: في وسطه إن لم يكن عليه نص، وقبل النص إن كان، بنصف ارتفاع الزر، وتبقى في مكانها حين يتغيّر حجمه. اختر غيرها لتبديلها، أو امسح الحقل لإزالتها.

قائمة أو جدول أو قائمة منسدلة: لوِّن الصفوف​

ارسم صندوقًا، وضع الصفوف داخله، فتُلوِّنها حقول الصفوف في ذلك الصندوق — فوق ما رسمتَه لكل صف. أربعة منها:

  • صفٌّ بعد صف — أثر الحمار الوحشي. يبقى الصفّ الأول كما رسمتَه، فما تراه أثناء الرسم هو الصفّ الأول نفسه.

  • الصفّ تحت المؤشّر — الإبراز الذي يتبع الفأرة نزولًا في القائمة. لا يكلّف شيئًا: المتصفّح هو من يفعله، فجدولٌ بمئتَي صف سريع كجدول فارغ.

  • الصفّ المختار — الصفّ الذي اختاره أحدهم. انظر أدناه كيف يقول صفٌّ إنه المختار.

  • حافة الصفّ المختار — شريط على الصفّ نفسه، وموضع الشريط يقول على أيّ حافة:

    • على الحافة البادئة — اليمين في العربية واليسار في الإنجليزية، دون أن تضبطه مرّتين. وهو ما يريده شريط تنقّل.
    • أسفل الصفّ، مثل اللسان — وهو ما يريده شريط الألسنة، لأن اللسان المختار يُعلَّم هكذا في كل منتج. فالألسنة تمتدّ عرضًا، وشريطٌ على الحافة البادئة للسان الأول أداةٌ لا يعرفها أحد.

    وهو لون التمييز افتراضيًا، لأن الصفّ المختار والصفّ تحت المؤشّر في قائمة هادئة درجتان من رماديّ واحد، والشريط هو ما يقول أنت هنا بنظرة واحدة.

وحيثما لوّن لونان صفًّا واحدًا، فاللاحق في هذه القائمة هو الغالب: المؤشّر يغطّي أثر الحمار الوحشي، والصفّ المختار يحتفظ بلونه حتى تحت المؤشّر. فأن يبدو الصفّ المختار غيرَ مختار في اللحظة التي يمدّ فيها أحدهم يده إليه أسوأ من أن يسكت الإبراز في صفٍّ واحد. أما الحافة فليست لونًا للصف وهي خارج هذه المنافسة — تُرسم إلى جانب اللون الغالب، ولا تُزحزح شيئًا على الصف، فلا يقفز شيء جانبًا حين ينتقل الاختيار.

تلميح

لا ترسم الشريط. المستطيل بجوار عنصر واحد لا يتحرّك، فالضغط على عنصر آخر يتركه مكانه — وتلك صورة لاختيار لا اختيار. اضبط حافة الصفّ المختار فيتبع الإجابة نفسها التي يتبعها اللون.

تنطبق على الصناديق الموجودة مباشرةً داخل الصندوق الذي ضبطتها عليه، ولا تنزل أعمق — فقائمة من البطاقات تُخطِّط البطاقات، لا الصناديق داخل كل بطاقة.

اختر لون السمة حيثما استطعت، لا لونًا من عندك. فالرمادي الذي تنتقيه صحيحٌ في الوضع الفاتح وخاطئ في الداكن، وخاطئ على نحوٍ لا يُرى: يظل الرسم رسمًا لشاشة فاتحة.

حين تكون الصفوف أكثر من ارتفاع الصندوق​

الصندوق الذي رسمتَه لستة صفوف يحمل مائة متى وُضع جدول حقيقي خلفه، فكل قائمة عليها أن تجيب عن هذا. قائمة المحتوى الذي لا يتّسع المنسدلة على الصندوق نفسه هي الموضع:

  • أظهره — يفيض خارجه هو ما يفعله الرسم، وهو الصواب لبطاقة لها ظلّ. أما على قائمة فهو ما يجعل الصفوف تنسكب فوق شريط الصفحات وكل ما تحته.
  • أخفه يقطعها. عندئذٍ يتعذّر الوصول إلى الصفّ السابع، وقلّما كان ذلك مقصد أحد.
  • تمرير للوصول إليه هو جواب القائمة: يبقى الصندوق بالحجم الذي رسمتَه ويُمرَّر ما بداخله. وقائمة قصيرة بما يكفي لا تُظهر شريط تمرير أصلًا.

ثم قل في أي اتجاه يُمرَّر. بمجرّد اختيار تمرير للوصول إليه تظهر قائمة منسدلة ثانية، اتجاه التمرير:

  • الاتجاهان معًا هو ما تريده القائمة.
  • رأسيًا — تلتفّ الكلمات هو ما يريده عمود من النثر. المحور الذي لا تمرّره يُقتطع، واقتطاع الأفقي هو بالضبط ما يجعل الفقرة تلتفّ بدل أن تخرج من جانب الصندوق. اقصد هذا كلما حمل الصندوق حقل نصّ طويلًا.
  • أفقيًا — يبقى كل صفّ في سطر واحد هو ما يريده جدول عريض من الأعمدة، ليبقى الصفّ صفًّا.
الحقل النصّي الطويل هو إطار ترسمه حوله

القائمة المنسدلة على الإطار. أما النصّ فليس له شيء خاصّ به يُقتطع عنده، لأنه يكبر ليتّسع لكلماته — فارسم إطارًا بالحجم الذي ينبغي أن تشغله الملاحظة، وضع النصّ بداخله، واضبط ذلك الإطار على تمرير للوصول إليه ورأسيًا — تلتفّ الكلمات.

ومقدار ما تراه في المرّة الواحدة هو الحجم الذي رسمتَ به الإطار. وتطويل كائن النصّ لا يغيّر شيئًا ممّا تراه، لأن الإطار هو ما يمسك المشهد. ونافذة التفاصيل في نموذج مكتب الدعم هي هذا بالضبط، فوق حقل ملاحظات من ألفَي حرف.

أمران يستحقّان أن تفعلهما في الوقت نفسه:

  • ثبّت الصندوق أعلى وأسفل في القيود، لتُظهر النافذة الأطول صفوفًا أكثر لا فراغًا أكثر تحتها.
  • أبقِ الترويسة خارج الصندوق. ترويسة مرسومة بوصفها أول صفوف القائمة تمرّ مع الصفوف وتغيب؛ وإن رُسِمت إطارًا مستقلًّا فوقها بقيت مكانها. ولوحة نموذج مكتب الدعم تفعل هذا بالضبط.

ارسم صفًّا واحدًا واحصل على صفٍّ لكل سجل​

صفوف الجدول ليست عشرين صندوقًا رسمتها. ارسم واحدًا وقل على أيّ شيء يتكرّر:

  1. حمّل السجلات. في معالج حُمِّلت الخاص بالشاشة اكتب loadRecords("par_account", "accounts") — اسم الجدول، وحقل حالة توضع فيه الصفوف. والوسيط الثالث يقول كم على الأكثر، أو يسأل سؤالًا أوفى: { top: 20, where: { par_status: "Open" }, orderBy: "par_name" }. انظر قراءة السجلات وكتابتها.
  2. قل ما الذي يتكرّر. اختر الصفّ الذي رسمته واملأ واحد من هذه لكل بـ state.accounts.
  3. قل ما تعرضه كل خانة. اربط نصًّا داخل الصف بـ row.par_name — وrow هو ذلك السجل. وrowIndex هو موضعه، ابتداءً من الصفر.

أمران عن الصندوق المحيط بالصف:

  • عليه أن يرصّ أبناءه — شغّل التخطيط التلقائي. فكل نسخة من صندوق وضعته بنفسك تحتفظ بالموضع الذي وضعته فيه، فتقع الأربعون كلّها فوق الأولى. والحفظ يقول ذلك إن نسيت.
  • وما عدا ذلك في الصندوق يُترك كما هو. صفّ العنوان المرسوم فوق المتن لا يتكرّر، لأن التكرار على الصف لا على الصندوق.

ويمكنك تكرار أداة بنفس سهولة تكرار صندوق — مربّع اختيار لكل صف هو الطريقة التي يختار بها أحدهم عدّة سجلات، وهو مربّع اختيار عادي فيه row.id في معالجه.

وحدٌّ واحد يُستحسن معرفته قبل أن تصطدم به: لا يجوز تكرار داخل تكرار. إذ يعني row عندئذٍ شيئين مختلفين في الموضع نفسه، فيرفض الحفظُ الداخليَّ منهما ويسمّيه.

أيّ صفٍّ هو المختار​

نصفان، وليس أيٌّ منهما أكثر من سطر:

  1. قل أيّها — اربط خاصيّة مختار في كل صف بمقارنة، مثل row.id == state.picked. إنه ارتباط لا مفتاحٌ تُشغّله، وهذا ما يجعل الصفّ السابق يتوقّف عن كونه مختارًا في اللحظة نفسها: كل صفّ يعيد الإجابة عن السؤال حين تتغيّر الحالة.
  2. اكتبها عند الضغط — setState("picked", "…") في معالج ضُغِط الخاصّ بالصف.

وإن كنت قد رسمت صيغة مختار للصف، فالارتباط نفسه يُشغّلها أيضًا. هنا فكرة واحدة لـ«المختار» لا اثنتان: اللون والصيغة يقرآن الإجابة نفسها.

املأ الصف، وقائمة للهاتف​

كل عنصر داخل إطار بـتخطيط تلقائي يبقى بالطول الذي رسمته — فلا يمكن للصف أن يضيق عمّا فيه، وعلى الهاتف يخرج من الجانب. حدّد العنصر، وفي تبويب الرسومات تحت تغيير الحجم فعّل املأ الصف (أو املأ العمود): يأخذ ما يتركه الآخرون من طول، ويعيده حين يضيق المكان.

هكذا يُرسم الشريط العلوي لموقع ويب: اسم الموقع يملأ الصف، فتبقى الروابط ملاصقة للحافة الأخرى عند أي عرض.

نموذج بعرض الهاتف كله، وبطاقة على الحاسوب. حدّد إطارًا داخل تخطيط تلقائي عمودي واضبط له أقصى عرض تحت تغيير الحجم: يمدّه العمود على عرض الشاشة الضيقة، وعلى الأعرض يتوقف عند ذلك العدد من البكسلات ويتوسّط. هكذا تُرسم بطاقة تسجيل الدخول أو نموذج التواصل مرة واحدة — لا مرة لكل عرض. الفارغ يعني بلا حد.

ثلاث بطاقات متجاورة على الحاسوب، وواحدة تحت الأخرى على الهاتف. حدّد تخطيطًا تلقائيًا أفقيًا وفعّل الالتفاف إلى أسطر أخرى تحت التخطيط التلقائي. يبدأ كل عنصر في الصف بالعرض الذي رسمته؛ وحين تضيق الشاشة عنها كلها، تنتقل العناصر التي لم تعد تتسع إلى السطر التالي. أعطِ كل بطاقة املأ الصف أيضًا فتمتد على ما تبقّى من سطرها — تتقاسم ثلاث بطاقات عرض الحاسوب، ويضع الجهاز اللوحي الثالثة في سطر وحدها، ويضع الهاتف واحدة في كل سطر. تُرسم مرة واحدة: لا نسخة ثانية من البطاقات لإخفائها. يعرض اللوح السطر الواحد الذي رسمته؛ والالتفاف هو ما تفعله به الشاشة الأضيق.

للهاتف، ارسم الروابط وزر القائمة، وأعطِ كلًّا منهما ربط إظهار على عرض الصفحة:

screen.width >= 720 على الروابط
screen.width < 720 على زر القائمة

screen.width هو عرض الصندوق الذي تُعرض فيه الشاشة، ويتغيّر مع تغيّر النافذة. ضع زر القائمة في بداية الشريط واجعله يشغّل openStartDrawer("Site menu")، حيث Site menu بطاقة منبثقة فيها الروابط نفسها — فتُفتح القائمة من الجهة التي فيها زرها (اليسار بالإنجليزية، واليمين بالعربية والفارسية). أعطِ المختار في كل رابط screen.name == "Home"، وأعطِ الصف الذي هو فيه لون الإشارة والمختار، فتدلّ القائمة على مكانك. نموذج portal-pages-and-navigation يرسم واحدة لك.

ارسم الشريط مرة واحدة. الشريط الذي على كل شاشة مكوِّن: ارسمه، واجعله مكوّنًا، وضع منه نسخة على كل شاشة — غيّر الأصل فتتبعه الصفحات كلها. ولأن الرابط يقرأ screen.name، لا حاجة لإخبار النسخة بأي صفحة هي عليها.

الإطار داخل إطار يدوي (التخطيط التلقائي متوقف) له القيود بدلًا من ذلك — ثبّته على الحواف فيحافظ على بُعده عنها حين يتغيّر حجم الإطار. أما داخل التخطيط التلقائي فالتخطيط هو من يقرّر مكان كل شيء، فيبقى تغيير الحجم السؤال الوحيد.

توليد الشاشات بالذكاء الاصطناعي​

اضغط AI، وصِف التطبيق في جملة أو فقرة، واضغط Generate (أو Ctrl/⌘+Enter). مثلًا: «تطبيق طلبات فيه شاشة رئيسية وقائمة بالطلبات ونموذج طلب جديد، تتشارك كلها شريطًا علويًا وقائمة جانبية.» ما يعود يُضاف إلى اللوحة، ولا يُستبدل شيء رسمته.

ما تحصل عليه تطبيق، لا صورة عن تطبيق:

  • الشاشات إطارات موسومة بأنها شاشات ومسمّاة بالكلمات، فتعمل الأزرار التي تنقل بينها في المعاينة.
  • العناصر هي الحقيقية. مربع النص هو مربع نص المنصة، والتاريخ هو منتقي التاريخ، لا مستطيلات عليها كلمات.
  • تحدث الأشياء. للأزرار معالجات نقر، ومربع النص يكتب في حالة الشاشة، والقائمة تستطيع تحميل السجلات حين تُفتح شاشتها.
  • كل ما يظهر على أكثر من شاشة مكوِّن. الشريط العلوي أو القائمة الجانبية أو التذييل يُرسم مرة واحدة، على الرف تحت الشاشات، ويوضع على كل شاشة نسخةً منه. غيّر الأصل فتتبعه الشاشات كلها. وإن رسم الردّ الشريط نفسه على شاشتين رغم ذلك، يجعله المصمّم مكوّنًا واحدًا عنك، وتقول النافذة أيّ جزء وحّدت.

اطلب «مكوّن بطاقة» فتحصل على ذلك تمامًا: مكوّن على الرف، جاهز للوضع من Components.

يُرسم التطبيق لسطح المكتب ما لم تقل هاتفًا. اطلب تطبيق هاتف فتأتي شاشاته بمقاس الهاتف. وفي شريطه العلوي زرّ قائمة يفتح التنقّل في درج، أما شاشة التفاصيل فلها سهم رجوع بدلًا منه.

سمِّ الجدول، فيستعمل الذكاء الاصطناعي أعمدته الحقيقية. في Parsware for Power Apps، حين يسمّي وصفك جدولًا، باسمه (expenses) أو باسمه المنطقي (par_expense)، تُبلَّغ أعمدة ذلك الجدول إلى الذكاء الاصطناعي قبل أن يرسم. فتعرض القائمة الأعمدة التي يملكها الجدول فعلًا بدل أعمدة مخمَّنة.

بعد ذلك، تحقّق مما لم يكن للذكاء الاصطناعي أن يعرفه: أسماء الجداول التي تحمّل منها القوائم، والكلمات على الشاشات. وتسمّي النافذة كل ما وجدته غير مكتمل، كزرّ لا يفعل نقره شيئًا بعد أو قائمة لا يحمّلها شيء. ثم اضغط معاينة. الشاشة المولَّدة نقطة بداية تعدّلها كأي رسم آخر.

يصحّح نفسه قبل أن يستسلم، كما في التقرير. حين لا يعود شيء صالح، يُعاد الردّ إلى النموذج مع تسمية المشكلة، حتى ثلاث مرات. والردّ الذي ليس إلا صورة، بلا شاشة ولا مكوّن، لا يُعدّ صالحًا.

إن لم يكن هناك زر AI، فالذكاء الاصطناعي غير مُعدّ هنا. في المنصة، يوصل المسؤول مزوّد ذكاء اصطناعي مرة واحدة (وصل مزوّد ذكاء اصطناعي). وفي Parsware for Power Apps، يستخدم الزر أرصدة AI Builder في بيئتك نفسها.

ما يفعله لك التطبيق المولَّد. يأخذ عنوان الشريط العلوي المساحة، فتستقر أزراره في نهاية الشريط أيًّا كان عرضه حيث وُضع، حتى بجوار قائمة جانبية. تتمرّر القائمة داخل نفسها تحت الشريط بدلًا من تمرير الشاشة كلها، وعلى سطح المكتب تُقرأ صفوفها كجدول. تُختار الأيقونات من مجموعة المنصّة بأسمائها، فيحمل زر الأيقونة الأيقونة الحقيقية في وسطه، بلا حدود، مع حقل أيقونة لتغييرها. ويعلن كل مكوّن كل خاصية يقرؤها.

ويرتّب أيضًا ما رسمه الذكاء الاصطناعي. الأجزاء المرسومة بجوار بعضها في عمود تصير صفًّا داخله، فتحتفظ البطاقة بحشوتها وبالمسافات بين أجزائها. صفوف القائمة على سطح المكتب مربّعة الزوايا بلا حدود خاصة بها: القائمة تلوّنها صفًّا بعد صف وتُضيء الصف الذي تحت المؤشر. النصوص أو عناصر التحكم الموضوعة تحت الشريط مباشرة تُوضع في جسم بحشوة. والنموذج على سطح المكتب عمود مقروء، لا بعرض النافذة. والزر في شريط مشترك لا تستعمله إحدى الشاشات، مثل «رجوع» في الشاشة الأولى، يُخفى في تلك الشاشة. وللصورة استدارة الزوايا في خصائصها، وتُظهره اللوحة: الصورة الرمزية دائرية لأن نصف قطرها نصف حجمها.

لا يُغلق مربع الحوار إلا بزر «إغلاق» الخاص به. لم تعد نقرة بجواره أو مفتاح Escape تُضيّع وصفك.

الشاشة التي تنتظر بياناتها تُظهر ذلك. بينما تُحمَّل قائمة أو يُحفظ سجل، تدور دائرة في وسط الشاشة. وفي Parsware لـ Power Apps، يظهر ما لم تستطع الشاشة فعله رسالةً تطفو فوقها ثم تختفي، بدلًا من شريط يدفع التطبيق إلى الأسفل.

ما ليس هنا بعد​

عن قصد، وكل واحد في إصداره:

  • العروض المحفوظة، وأجزاء المرشِّح التي ليست سطرًا واحدًا. الشاشة تسمّي جدولًا، بأزواج مساواة وأزواج «يحتوي» وترتيب وصفحة — انظر اعرض القائمة صفحةً صفحة. ولا تستطيع أن تسمّي عرضًا محفوظًا من عروض المنصّة، فالمرشِّح الذي رسمته هناك يُرسَم هنا من جديد. ولا يوجد أو ولا مدى ولا تعشيش: هناك يكفّ المرشِّح عن كونه سطرًا في معالج ويصير مصمّم الاستعلام.
  • المجاميع والمتوسّطات. الشاشة تعدّ الصفوف — وهذا ما تفعله بطاقات نموذج لوحة المعلومات — لكنها لا تجمع عمودًا ولا تجمّع عليه.
  • أداة باحث السجلات. أمّا البقية فقد وصلت: الشبكة والنموذج السريع هما أداة عرض جدول أو نموذج (ضع لوحة معلومات على شاشة مرسومة)، والحوار بطاقة تراكب، والتبويبات قيمة مختارة وربط ظهور لكل لوحة، والانتقال بين الشاشات هو navigate. وما لا أداة له بعد هو منتقي السجل — في مكتبة المكوّنات واحد مرسوم، يضعه نموذج مكتب الدعم ويعطيه حالته الخاصة.
  • الفتحات (slots). المكوّن يأخذ خصائص ويرفع أحداثًا؛ وما لا يستطيعه بعد هو أن يترك فراغًا تملؤه الشاشة التي تضعه.
  • لوحة المفاتيح، وأي شيء على مؤقّت. هناك ثمانية أحداث، وواحد فقط منها عن حياة الشاشة نفسها: التحميل.

لا يعرض التبويب إلا ما له معنى اليوم. وعنصر تحكّم لا يفعل شيئًا يعلّمك حركة لا تفعل شيئًا.

استكشاف الأخطاء​

  • يقول تبويب الشاشة إن كائني جزء من الرسم. — الخطوط والأشكال والمسارات لا معنى لها تعطيه. الأُطُر والنصوص والصور هي ما يمكنك الإجابة عنه.
  • «الشاشة نفسها» غير معروضة. — لديك كائن نصّي أو صورة محدّدة. الإطار وحده يمكن أن يكون الشاشة.
  • أداتي لا تشبه الصندوق الذي رسمته إطلاقًا. — وهذا هو المقصود: الأداة تأتي بشكلها الخاص، ولا يأتي من رسمك إلا موضعها وحجمها. وإن كنت تريد الألوان التي اخترتها فاتركه صندوقًا وأعطه عنصر زر بدلًا من ذلك.
  • اختفى «ارسم حالة». — الكائن أداة، والأداة تعرف أصلًا كيف تبدو في كل حالة.
  • زر الحفظ باهت. — لم يتغيّر شيء منذ آخر حفظ.
  • المعاينة فارغة. — لا شيء معيَّن كالشاشة، أو إطار الشاشة لا يحوي شيئًا. ارسم إطارًا وعيّنه كالشاشة وضع فيه شيئًا.
  • حالتي لا تفعل شيئًا. — إمّا أن النسخة مطابقة للأصل (فلا اختلاف يُحفظ)، أو أنك نقلتها فحسب وهو ما تتجاهله الحالة عمدًا. غيّر لونًا.
  • الحفظ يقول إن الحالة تغيّر البنية. — في النسخة كائنات أكثر أو أقل من الأصل. انظر أعلاه.
  • الكائن الذي نسخت عنه اختفى. — الحفظ يقول ذلك: حالة بلا ما تكون حالةً له لا ترسم شيئًا. احذف النسخة، أو ارسم الكائن من جديد.
  • شاشتي لا تظهر في تطبيق. — يجب وضع الشاشة في تطبيق؛ انظر فتح شاشة استوديو في تطبيق.
  • رسمي يبدو صحيحًا لكن الشاشة تبدو بسيطة. — راجع ما عُيّن له كل كائن. الكائن المتروك فارغًا جزء من الرسم؛ يُرسم، لكنه لا يقول شيئًا عمّا تحويه الشاشة.

سيناريوهات ذات صلة​