يمكن لـ Windows تعيين شاشات متعددة في أجهزة سطح المكتب الافتراضية ، مما يتيح لنا استخدام هذا لتصميم تطبيقات سهلة العمل. على سبيل المثال ، تستخدم PowerPoint مزايا الشاشات المزدوجة (معظم أجهزة الكمبيوتر المحمولة تدعمها). . فكيف نطور مثل هذا التطبيق؟ ستظهر لك هذه المقالة إذا قمت بتنفيذ التطبيقات باستخدام شاشات متعددة باستخدام Delphi.
يدعم Windows أيضًا طرق العرض الاستنساخ ، ويقوم كل شاشة بإخراج نفس المحتوى ، مما يجعل بعض التطبيقات. على الرغم من أن بعض بطاقات الرسومات تدعم أيضًا شاشتين ، إلا أنهما ليسا متعددين حقًا ، ولكن أوضاع عرض عالية الدقة (مثل 2048 × 768 أو 1024 × 1536) ، والتي تعرض الشاشة على شاشتين من خلال بطاقة الرسومات. لم يتم تقديم أي من هذين الوضعين العرضين في هذه المقالة ، كما أنهما بسيط للغاية ، لذلك لن نكررهما مرة أخرى.
يدعم Windows ما يصل إلى 10 شاشات ، ويقوم Windows بتعيين جميع الشاشات في سطح مكتب افتراضي كبير. يمكن فهم الشاشة على أنها عرض جزئي لسطح المكتب. يمكن ترتيب هذه العروض بشكل تعسفي في خصائص العرض وفقًا للموقع الفعلي للعرض. إذا تم ترتيب الشاشة بشكل غير منتظم ، فقد لا يتم عرض بعض أجزاء سطح المكتب الظاهري على أي من الشاشة. لكي لا تظهر نموذجًا بين شاشتين ، يستخدم Windows شاشة كشاشة رئيسية. عند بدء تشغيل الكمبيوتر ، يتم عرض مربع حوار تسجيل الدخول في الشاشة الرئيسية. سيتم عرض معظم شاشات بدء تشغيل البرنامج في الشاشة الرئيسية.
وفقًا للمقدمة أعلاه ، ليس من الصعب العثور على العديد من المفاهيم المهمة: سطح المكتب ، الشاشة ، الشاشة الرئيسية ، إلخ. أولاً ، يجب علينا أولاً معرفة هذه المفاهيم وعلاقتها السابقة. هذا هو مفتاح إتقان طريقة تطوير تطبيق Multi-Display. بمجرد فهم هذه المفاهيم ، سيكون من السهل جدًا فهم الأجزاء الأخرى.
يشير سطح المكتب فعليًا إلى المنطقة المنطقية التي يمكن أن يعرضها Windows. في الواقع ، يمكن عرض النموذج خارج سطح المكتب. ومع ذلك ، فإن هذا لا يعني أن جميع أجزاء سطح المكتب سيتم عرضها على شاشة معينة (والسبب في ذلك المذكور من قبل) ولكن على العكس من ذلك ، يجب أن يكون المحتوى الذي يعرضه أي شاشة جزءًا من سطح المكتب.
سطح المكتب عبارة عن منطقة مستطيلة تصف حجم سطح المكتب بواسطة إحداثيات قمة الرأس (أعلى ، يسار) والعرض والارتفاع. لماذا لا تزال بحاجة إلى إحداثيات قمة الرأس؟ لأن إحداثيات Vertex لا تؤخذ أمرا مفروغا منه (0،0). إذن أين (0،0)؟ إنها قصة طويلة ، لذلك دعونا أولاً مراجعة المفهوم المذكور الآن - الشاشة الرئيسية. يريد Windows عرض البرنامج العام على الشاشة الرئيسية في البداية ، لأن الأشخاص معتادون على الانتباه إلى شاشة أقرب إليها. لا يمكن لـ Windows إجبار المستخدمين على استخدام الشاشة في أقصى اليسار كشاشة رئيسية ، بحيث تحتاج التطبيقات إلى القلق بشأن الحسابات من أجل عرض أنفسهم على الشاشة الرئيسية. ومع ذلك ، فإن معظم المستخدمين لا يملكون سوى شاشة واحدة (يشغل مراقبان مساحة كبيرة) ، ولا ترغب التطبيقات العادية في قضاء الكثير من الجهد لحساب مكان الشاشة الرئيسية وأين يجب عرضهما. لذلك يقترح Windows حلاً معقولًا: استخدم إحداثيات Vertex للعرض الرئيسي كأصل لنظام الإحداثيات. وبهذه الطريقة ، تحتاج البرامج العادية إلى النظر في مشاكل في بيئة مراقبة واحدة.
الشاشة هي عرض جزئي لسطح المكتب. يشبه النظر إلى المشهد خارج النافذة من خلال النافذة ، والوقوف أمام النوافذ المختلفة ، يمكنك رؤية صور مختلفة. وبالمثل ، فإن الشاشة هي أيضًا مساحة مستطيلة ، ويمكن أيضًا وصف أبعادها بواسطة إحداثيات Vertex (أعلى ، يسار) والعرض والارتفاع. تعتبر إحداثيات Vertex نسبة إلى أصل نظام إحداثيات سطح المكتب ، أي ، إلى رؤوس الشاشة الرئيسية.
مفهوم مساحة العمل بسيطة نسبيًا.
يوفر Windows مجموعة من واجهات برمجة التطبيقات لتطوير تطبيقات التعددية متعددة. تقوم VCL بتغليف واجهات برمجة التطبيقات هذه وتدمجها في الإطار بأكمله بشكل طبيعي للغاية ، مما يجعل من السهل للغاية تطوير تطبيقات متعددة الأطراف. فيما يلي محتوى ذي صلة.
ربما يكون VCL الأكثر دراية هو tcustomform ، وهي الفئة الأساسية لجميع الأشكال. يتم استخدام خاصية الموضع لـ Tcustomform لتعيين الموضع الفعلي للنموذج. من الشاشة الرئيسية ؛ إذا تم تعيين هذه الخاصية على PODESKTOPCENTER وتشغيل البرنامج على نظام مع شاشات متعددة ، فسيتم عرض هذه النافذة بين الشاشتين ، مما تسبب في مشكلة غير ضرورية للمستخدم. لذلك ، حتى لو لم يكن برنامجنا مصممًا للتشويش المتعدد ، فيجب التعامل مع هذه القيمة بعناية. خاصية أخرى هي الافتراضية ، والتي لها وظيفة مماثلة للموضع ، والتي تحدد أي مراقبة النافذة يتم عرضها في البداية. لديها أربع قيم بديلة: DMDesktop ، DMPrimary ، DMMainform ، و Dmactiveform. معانيهم على النحو التالي:
قيمة | معنى |
DMDESKTOP | لا علاج خاص |
dmprimary | عرض النموذج على الشاشة الأولى. هذا فخ آخر ، حرفيًا الشاشة الرئيسية ، وفي الواقع يشير إلى الشاشة. Monitor [0]. |
dmmainform | عرض النموذج على الشاشة حيث يوجد النموذج الرئيسي |
dmactiveform | اعرض النموذج على الشاشة حيث يوجد النموذج النشط على سطح المكتب |
يحتوي TCUSTOMFOR أيضًا على جهاز خاصية مشتركة للقراءة فقط (بدون نشر) ، والذي يوفر مرجعًا للوصول إلى مثيل العرض حيث توجد النموذج.
فكيف تنقل النموذج بين العروض المختلفة؟ هذا ليس صعبًا ، وربما فكرت في الأمر أيضًا. فيما يلي طريقتان:
أولاً ، يمكنك تعيين الجزء العلوي واليسرى من tcustomform لعرض النموذج في أي مكان على سطح المكتب. كما ذكرنا سابقًا ، يتكون سطح المكتب من جميع الشاشات. لديهم نظام إحداثيات مشتركة ، لذلك يمكن تحديد موضع النموذج بناءً على الموضع المنطقي للعرض. والسؤال الآن هو كيفية الحصول على الموضع المنطقي وحجم كل شاشة ، والتي سيتم تقديمها لاحقًا.
ثانياً ، يمكنك استدعاء الطريقة المذهلة لـ tcustomform لعرض النموذج بالكامل على الشاشة المحددة. يمكن استخدام هذه الطريقة لمنع النافذة من عرض جزء من كل من الشاشتين.
لقد طرحنا سؤالاً: كيف نحصل على الموضع المنطقي وحجم كل شاشة. للإجابة على هذا السؤال ، نحتاج إلى تقديم فئة أخرى: tscreen و tmonitor.
يصف Tscreen بعض المعلومات المتعلقة بأجهزة العرض ، ونحن مهتمون بشكل أساسي بالمعلومات المتعلقة بالموضع المنطقي وحجم الشاشة. يمكن العثور على جوانب أخرى في وثائق دلفي. عند تشغيل البرنامج ، يقوم VCL تلقائيًا بإنشاء مثيل TSCREEN - وهو متغير عالمي ، لذلك عادةً ما لا يحتاج البرنامج إلى إنشاء مثيل لثبات.
يحتوي Tscreen على مجموعة من الخصائص على شكل سطح مكتب*، والتي تصف حجم سطح المكتب بالكامل وإحداثيات كل قمة. هناك أيضًا عدد من الخصائص ذات الأهمية الكبيرة لتطوير تطبيقات متعددة المراقبة: MonitorCount و Monitors. من خلال هاتين الخصائص ، يمكننا تعداد جميع حالات الشاشات (tmonitors) في النظام.
من بين العديد من خصائص tscreen ، سنجد الخصائص: الارتفاع والعرض. كن حذرًا بشكل خاص من عدم الإشارة إلى حجم سطح المكتب بأكمله ، ولكن إلى ارتفاع وعرض الشاشة الرئيسية. من السهل جدًا أن يجعل الناس يشعرون بالوهم بأنهم لا يستطيعون التفكير في حجم سطح المكتب بأكمله. وبالمثل ، هناك مجموعة من الخصائص التي تشكل مثل Workarea*، والتي تصف حجم منطقة عمل الشاشة الرئيسية وإحداثيات كل قمة. هل تعتقد أن هناك شيئًا ما مفقودًا؟ لماذا لا تحصل خصائص الموضع النسبي للشاشة الرئيسية؟ السبب كما هو مذكور سابقًا: يستخدم Windows الركن الأيسر العلوي من الشاشة الرئيسية كأصل لنظام الإحداثيات ، لذلك يجب أن يكون الوضع النسبي للشاشة الرئيسية (0 ، 0).
بالإضافة إلى هذه الخصائص ، سنقدم أيضًا ثلاث وظائف أعضاء لـ TSCREEN: MonitorFrompoint ، و MonitorFromRrect و MonitorFromWindow. كما يوحي الاسم ، فهي مثيلات للشاشة حيث توجد إحداثي ومنطقة معينة ونافذة معينة. يمكن استخدامه أيضًا في التطوير الفعلي.
الأفضل ، دعنا نلقي نظرة على فئة Tmonitor. إنه يتضمن الخصائص ذات الصلة للعرض المادي-كل ذلك للقراءة فقط. يصف الجدول التالي باختصار معنى هذه الخصائص ، والتي تعد مفيدة للغاية لكتابة تطبيقات متعددة الأطراف:
ملكية | يوضح |
مقبض | احصل على مقبض Windows لهذا الشاشة |
revornum | احصل على رقم الشاشة |
أساسي | الحصول على ما إذا كانت الشاشة هي الشاشة الرئيسية. والابتدائي مع شاشة واحدة فقط صحيحة. |
قمة | احصل على الحدود العليا للشاشة |
غادر | احصل على الحدود اليسرى للشاشة |
ارتفاع | احصل على ارتفاع الشاشة |
عرض | احصل على عرض الشاشة |
الحدود | احصل على مساحة سطح المكتب المقابلة للشاشة ، والتي تعادل الخصائص الأربعة أعلاه |
الحل البديل | احصل على المنطقة المقابلة لسطح مكتب مساحة عمل الشاشة. |
بعد فهم واضح لـ tscreen و tmonitor ، سيتم حل المشكلات السابقة بشكل طبيعي. بحلول هذه النقطة ، غطت هذه المقالة جميع المعرفة اللازمة لتطوير تطبيقات متعددة اللاعبين. أعتقد أنه يمكنك استخدام هذه المعرفة لتطوير منتجات برامج عملية للغاية.
التذييل: يمكنك تنزيل عرض تجريبي للمساعدة في فهم هذه المقالة.