Delphi و FireMonkey و All-Access ومفاجآت سارة أخرى. دلفي و FireMonkey و All-Access ومفاجآت سارة أخرى أشياء يجب مراعاتها

فايبر أوت 31.10.2021
فايبر أوت

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

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

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

يجب أن أقول أنني بدأت في استخدام دلفي على Windows 3.1 ، أي من الإصدار الأول. ومنذ ذلك الحين وأنا أدرس VCL. درس في الأصل ، إذا جاز التعبير. تمت مراقبتها ومعالجتها وتتبع رموز المصدر. مرة بعد مرة.

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

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

من حيث المبدأ ، أنا أفهم هذا التوافق. تم أخذ دورة لمنصات متعددة ، والأهم من ذلك ، عبر منصات. بعد كل شيء ، ما هو VCL؟ مكتبة المكونات المرئية. مكتبة المكونات المرئية. قد لا توافق على هذا. على سبيل المثال ، لقد فكرت دائمًا في الكثير من المكونات غير المرئية ، وليس المكونات ، ولكن مجرد فئات ، وجزء لا يتجزأ من VCL ، وعدد كبير من فئات ومكونات الطرف الثالث - استمرار ، امتداد لـ VCL . حسنًا ، لا يمكنني اعتبار ورثة TDataset جزءًا من VCL. على الرغم من أن مصطلح مكتبة DBExpress ، على سبيل المثال ، يشير إلى أنها ، كما كانت ، ليست VCL. على ما يبدو ، يقسم Embarcadero حقًا المتجانسة ، من وجهة نظري ، VCL إلى عدد من المكتبات المنفصلة. لا ، بالطبع ، ليست منفصلة تمامًا ، ولكن مع ذلك. وإذا كنت تأخذ وجهة النظر هذه ، فإن FireMonkey يهدف إلى استبدال الجزء المرئي من VCL (كيف يمكنني استدعاء مكتبة الفئات والمكونات الكاملة ، ربما Borland Component Library؟).

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

هذا هو بالضبط ما يحاول FireMonkey القيام به. إنهم يحاولون إنشاء بنية تحتية تستند إلى الآليات الأساسية التي تدعمها أنظمة التشغيل المختلفة التي يمكن أن تحل محل الخدمة التي تقدمها أنظمة التشغيل نفسها.

يتذكر الكثيرون أنهم حاولوا القيام بذلكعبر النظام الأساسي ليس فقط المكتبة ، ولكن دلفي نفسها. بالتوازي مع Delphi 6 ، تم إطلاق منتج Kylix ومكتبة CLX. تم كل هذا من أجل التمكن من التطوير لنظام Linux. ومع ذلك ، لا يحتوي Linux على العديد من مفاهيم نوافذ واجهة المستخدم الرسومية الأساسية التي يستخدمها Windows. لا تعد واجهة النافذة لنظام Linux بشكل عام ظاهرة محلية. هذا تطبيق اختياري. وكان علي أن أكتب نوعًا من المكتبات التركيبية. بفضل مساعدتها ، كان من الممكن كتابة برنامج لكل من Windows و Linux. ومع ذلك ، ما زلت أتذكر ذلك الشعور ، ليس بخيبة الأمل ، بدلاً من الإزعاج المزعج ، الذي شعرت به عندما حاولت استخدام نظائر المكونات المرئية من CLX. بدأت أفتقد الكثير. ما اعتدت فعله دون التفكير عند التطوير باستخدام VCL كان صعبًا أو مختلفًا تمامًا أو ببساطة مستحيلًا باستخدام CLX.

شعرت بنفس الشيء عند التحول من BDE إلى DBExpress. قديم ، مألوف من Field Test-a BDE (استخدمه Borland بالفعل في Quattro Pro لنظام التشغيل Windows وفي Paradox لنظام التشغيل Windows ، وكان يسمى ODAPI ، ثم IDAPI ، وكان قطعًا أعلاه ، في رأيي ، Microsoft ODBC) كان أعلن عن تقنية عفا عليها الزمن ، والتي ينبغي أن تفسح المجال في مشاريع جديدة لمكتبة جديدة. كنت دائمًا أفتقد شيئًا ما في DBExpress في البداية ، خاصة المعرفة.

في الوقت نفسه ، لا أريد بأي حال تأنيب أو انتقاد المكتبات المذكورة أعلاه ، أو القرارات التي أدت إلى ظهورها. إنه يتعلق فقط بانطباعاتي ، وأحيانًا انطباعاتي الأولى.

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

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

حسنًا ، فارق بسيط آخر مهم. ما نوع المشاريع التي يجب القيام بها عادة في العمل ، إذا كان (العمل) لا يتعلق بكتابة المجمعين ، أو أنظمة النمذجة ، أو أي شيء آخر علمي للغاية؟ أعتقد أن الأمر يتعلق في الغالب بتطوير شيء يتضمن استخدام قواعد البيانات. علاوة على ذلك ، يمكن لشيء علمي للغاية استخدام الخدمات التي يقدمها نظام إدارة قواعد البيانات (DBMS).

هنا انتظرني كمين آخر. لسبب ما ، عندما تصادف عمليًا أن FireMonkey لا يحتوي على عناصر تركز على العمل مع البيانات المخزنة في قاعدة البيانات ، فأنت لست مستعدًا تمامًا لذلك (بعبارة ملطفة). على الرغم من أنني قرأت بالفعل عن هذا عدة مرات وأنت تعرف (نظريًا) ما يجب عليك استخدامه. يتعلق الأمر بـ Live Bindings.

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

هذا يختتم بعد انطباعاتي الأولى. التالي في السطر قصص حول ماذا وكيف تغلبوا أثناء العمل في المشروع.

صدر في سبتمبر الماضي دلفي XE2 يحتوي على عدد قياسي من الابتكارات.
تم بالفعل نشر مراجعات موجزة لميزات Delphi XE2 على Habré. ولكن ، من الواضح أن منصة FireMonkey أصبحت الابتكار الأكثر لفتًا للانتباه ، وهنا أود أن أهتم بها قليلاً.
لقد قمت بتحديد مجموعة صغيرة من الروابط إلى المواد التي آمل أن تساعدك في الحصول على فكرة مناسبة إلى حد ما عن هذه المنصة. لكن أولاً ، بالنسبة لأولئك الذين ليسوا على دراية ، سوف أصف بإيجاز ما هو FireMonkey.
تقوم Embarcadero Technologies بوضع FireMonkey كمنصة لإنشاء تطبيقات أعمال كاملة الميزات لأنظمة Windows و Mac و iOS. في الوقت نفسه ، يعد هذا النظام الأساسي أصليًا لكل من أنظمة التشغيل ، أي عند تشغيل تطبيق تم إنشاؤه باستخدام FireMonkey ، لا يتم استخدام أي وظائف إضافية.
يرتبط FireMonkey مباشرة بمكتبة رسومات أصلية (OS-wise) مثل OpenGL أو DirectX. وبالتالي ، يُقترح الحل الأفضل من وجهة نظر وحدة معالجة الرسومات.
جوهر بنية FireMonkey هو مكتبة فصولية قوية (بما في ذلك المكونات المرئية).
يتم تحديد النظام الأساسي المستهدف أثناء التجميع.
يدعم الإصدار الأول من FireMonkey فقط Win32 و Win64 و MacOSX و iOS ، وتخطط Embarcadero لنقله إلى العديد من الأنظمة الأساسية الأخرى في المستقبل.

ما الذي يجب مراعاته؟

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

آمل أن تساعدك الروابط أدناه في فهم الميزات الرئيسية للمنصة الجديدة.
صفحة المنتج الرسمية على موقع Embarcadero الإلكتروني (بالروسية)

من بين المواد باللغة الإنجليزية أود أن أسلط الضوء على سلسلة (الإنجليزية)

ماذا تريد ان تشاهد؟

بالنسبة إلى أحدث إصدار من Delphi ، هناك أكثر من أي وقت مضى الكثير من مواد الفيديو المخصصة لميزات المنتج وطرق العمل معه. كلاهما مسؤول ، من Embarcadero ، ومن مطورين مستقلين. يوجد الكثير من مقاطع الفيديو على YouTube حول FireMonkey ، يمكنك فقط استخدام البحث. من بين هذه الوفرة من المواد ، سوف أفرد سلسلة من ثلاثة مقاطع فيديو من Marco Cantu - RAD in Action.

03/06/2013 12:46 مساء

لقد عانيت كثيرًا بسبب عدم وجود مكون متصفح في FireMonkey. تضمن مشروع Delphi Chromium Embedded الشهير دعم FMX في أحدث إصدار. ولكن على الرغم من مرور الكثير من الوقت ، فإن المؤلف ليس في عجلة من أمره لإضافة دعم FMX2. في النهاية ، كان علي أن أتولى زمام الأمور بنفسي.

يعمل مكون TChromiumFMX من التجميع الرسمي بشكل جيد في FireMonkey (في XE2) ، لكنه لا يتم تجميعه في FMX2. كان علي أن أعرف قليلاً كيف يعمل وإصلاحه. لحسن الحظ ، لم تكن هناك حاجة إلى تغييرات كبيرة.

في FMX2 ، تغير شيئان يحتاجهما المكون.

أولاً ، لم يعد لدى TBitmap خصائص ScanLine و StartLine. تمت إعادة تصميم الوصول المباشر إلى محتوى TBitmap (أتساءل لماذا؟) وهو متاح الآن من خلال فئة TBitmapData ، التي تُرجع طريقة TBitmap.Map.

حسنًا ، الثانية ، الأكثر شهرة - النظام الأساسي. * لم تعد موجودة ، الآن تحتاج إلى الحصول على الواجهة المطلوبة من خلال TPlatformServices.GetPlatformService. كل شيء واضح ومباشر هنا ولا توجد مشاكل.

لم أختبره ببراعة خاصة ، لكن المكون مناسب تمامًا لأغراضي - يمكنك عرض المواقع من خلاله. تنزيله. ومع ذلك ، ربما سأرسل تعديلاتي إلى المؤلف ، وربما يعتبر أنه من الضروري إضافتها إلى النسخة الرسمية.

30/07/2012 2:43 صباحا

يقترح Jason Southwell تطوير مجموعة من أغلفة FireMonkey لعناصر تحكم Windows / OSX الأصلية وجمع الأموال لهذا الغرض. يخطط لجمع 20000 دولار في البداية.

الفكرة واضحة. يتم رسم مكونات FireMonkey الحالية باستخدام أدوات دلفي تقريبًا من نقطة الصفر ، والتي من ناحية ، تضمن إلى حد كبير تقاطع النظام الأساسي الخاص بها ، ولكن من ناحية أخرى ، ونتيجة لذلك ، نحصل على مكونات لا تبدو طبيعية تمامًا في التشغيل المدعوم حاليًا الأنظمة. وهذا ليس سيئًا للغاية - بالإضافة إلى المظهر ، عليك تطوير منطق هذه المكونات بشكل مستقل. على سبيل المثال ، يعد RichEdit معقدًا للغاية ، وتكرار منطقه داخل FireMonkey ليس مهمة تافهة. لم يخترع كل من VCL و CLX دراجات ، لكنهما استخدما دراجات جاهزة.

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

المساعدة صامتة ، كما أنني لم أجد أي شيء في الكود. حقا بأي حال من الأحوال؟ سيكون هذا مزعج للغاية.

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

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

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

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

وبطبيعة الحال ، يستخدم Sphere الميزة الرئيسية قرد النار- عبر منصة. الآن التطبيق متاح في إصدارات Windows و MacOS. إصدار Android متوقع في أي يوم.

ومع ذلك ، بالنسبة لي ، فإن SphereLive مثير للاهتمام ، أولاً وقبل كل شيء ، كمنتج مبتكر مع مجموعة كاملة من الحلول الأصلية. في بعض الأحيان على مستوى "... واو ، كيف فعلت ذلك؟" بالمناسبة ، أحد مطوري Sphere يشارك بنشاط في المناقشات حول منتدى FireMonkey. في حد ذاته ، يمكن أن يكون هذا سببًا لتنزيل التطبيق ومناقشة المشكلات الفنية مباشرةً مع المؤلف. صدقني ، هناك شيء يجب رؤيته ، هناك شيء لتعلمه.

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

الاختلافات الرئيسية بين TListView و TListBox هي:

  1. TListBoxItem- مراقبة، TListViewItem- رقم
  2. في TListBoxItemيمكنك إضافة أي عناصر تحكم باستخدام الأصل. في العنصر- رقم.
  3. العنصريخزن فقط عرض البيانات
  4. العنصريقوم بنفسه بتقديم البيانات المخزنة من خلال الطريقة يجعل
  5. نظرًا للعرض اليدوي الفعلي في TListVIewItem ، يتم تحقيق زيادة في السرعة واستهلاك منخفض للذاكرة (تخزين البيانات الفعلية فقط)
  6. لإنشاء الخاصة بك TListViewItem، تحتاج إلى إنشاء فئة العنصر الخاصة بك ، وتنفيذ البيانات المطلوبة فيه (على سبيل المثال ، الوقت) وإنشاء محرر موضعي لتعديل الوقت وتسجيله وما إلى ذلك.

في حد ذاته ، تعد حقيقة تحسين الأداء وتقليل استهلاك الذاكرة حجة قوية لصالح الاستخدام TListView. لكن هناك أيضًا شيء آخر.

في كثير ذكري المظهرالتطبيقات ، لقد رأيت تنفيذ القوائم التالية. عند النقر فوق عنصر قائمة (عنصر ، إذا التزمت بالمصطلحات المختارة) ، يتم تنفيذ إجراء معين. عادة ما يتم استدعاء نموذج جديد لتحرير البيانات. ولكن عند الضغط مع الاستمرار على (Long Tap) ، يتم تنفيذ إجراء مختلف تمامًا. وهذه الأحداث لا تتقاطع. بمعنى آخر ، يمكن لتطبيقات Android التمييز بوضوح بين "الضغط لفترة طويلة" و "الضغط العادي". علاوة على ذلك ، لا يتم تشغيل أي من هذه الأحداث عند تمرير القائمة. وخير مثال على ذلك هو قائمة الحروف في Yandex Mail.

بادئ ذي بدء ، أود أن أهنئ جميع قراء المدونة في الأعياد الماضية وأتمنى لكم كل التوفيق في العام المقبل.

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

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

قبل متابعة القصة عن الموقت - خبران.

أولاً ، تم إصدار أول تحديث لـ XE7. حسب التقاليد ، فهو متاح للمستخدمين المسجلين. يمكنك العثور على قائمة بالأخطاء الثابتة. أردت أن أرى كيف يتصرف التطبيق في البيئة المحدثة. في الواقع ، لم يكن هناك حاجة لإجراء أي تصحيحات ، على الرغم من بقاء مجال التجارب.

الخبر الثاني. مددت عروض Embarcadero الخاصة حتى نهاية العام:

حسنًا ، الآن مباشرة إلى موضوع المنشور. من حيث المبدأ ، كل ما تبقى لنا هو محاولة تشغيل تطبيق تم إنشاؤه بالفعل لنظام Android. لهذا نستخدم ما كتبته في المشاركات السابقة. وهي الجديدة. لقد قمت بتصحيح هذا التطبيق في نيكزس 7وفقًا لذلك ، تمت إضافة عرض Android 7 Tablet. كان لابد من "تعديل" التصميم قليلاً.

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

سنقوم بتطوير المؤقت بالضبط بالمعنى الإنجليزي لهذا المصطلح. أي أن الشاشة ستعرض قرصًا وأربعة أزرار - "ابدأ" و "إيقاف مؤقت" و "إيقاف" و "إلغاء". سيكون العد التنازلي للأمام (أي أن الوقت سيزيد). يسمى الخيار الذي يتم فيه ضبط الوقت والعد التنازلي في المصطلحات الإنجليزية باسم Stop Watch ، وربما سأحاول تنفيذه لاحقًا. التطبيق الذي سنتعامل معه أقرب في وظائفه إلى ساعة توقيت.

يسمح لنا Delphi XE7 بتبسيط عملية التطوير بشكل كبير ، نظرًا لحقيقة أنه يمكننا الآن إنشاء وتصحيح تطبيق حقيقي لـ Win32 ، ثم ببساطة إضافة طرق عرض للأجهزة المحمولة الضرورية ، مع القليل من التعديل ، الحصول على هاتف محمول يعمل طلب. يبدو جيدا جدا ليكون صحيحا؟ يمكن. لكني أريد أيضًا التحقق من هذا البيان من خلال إدراك المهمة.

كلما سألت زملائي في المحادثات الخاصة بشكل متكرر عما إذا كان من الممكن تطوير تطبيقات الجوال في قرد النارأم أنه نموذج أولي وليس حل إنتاجي؟

أعتقد ، الآن يمكنني ضمان حتى المتشككين المتعصبين.

أخبرني صديقي وزميلي في حضن تاغير يوماغوزين عن المشروع الذي شارك فيه منذ فترة طويلة. الآن ، عندما يكون هذا المشروع في حالة ما قبل الإصدار ، قررنا أن هذا الوصف سيكون مثيرًا للاهتمام لمجتمع دلفي. في جوهره ، هذا مشروع كبير حقًا تم تنفيذه في FM. نحن نتحدث عن مشروع Sphere Live. تم نشر مقال صغير مخصص لهذا المشروع مؤخرًا في Habrahabr.ru وافق Alexey Glyzin ، رئيس قسم "التطوير" على إخبار المزيد عن المشروع مع مراعاة جمهور مدونتي.

أ.- أليكسي بشكل عام ما هو مشروعك؟

أ.ج.: - الفكرة لم تظهر دفعة واحدة وفورية. قبل مشروع "Sphere" ، كان فريقنا يعمل في المشروع حيث تم تنفيذ تقنيات البث الصوتي / المرئي. في وقت لاحق ، أنشأنا برنامجنا الخاص الذي كان قادرًا على توصيل تدفقات الوسائط المتعددة إلى عدد غير محدود من المستخدمين بما في ذلك التعليقات. لكننا احتجنا إلى تضمين ميزة الفوترة.
يجب أن يتوافق التطبيق مع العديد من المتطلبات. أولاً ، التنظيم المبسط إلى أقصى حد للمؤتمرات أو الإرسال إلى المشاركين وهو المبلغ الذي لا يمكننا التنبؤ به. ثانيًا ، الأهم ، هو منح عملائنا فرصة لكسب من خلال تطبيقنا وتقليل تعقيد النظام ، كمية الأدوات اللازمة لاستخدامها للوصول إلى الهدف. سهولة تنظيم الدورات أو الندوة عبر الإنترنت أو مجرد استشارة.

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

أثناء التحضير لحدث خاركيف كجزء من جولة RAD Studio XE5 العالمية ، واجهت مشكلة صغيرة في العمل مع سكليتيباستخدام FireDAC. إذا تم نقل قاعدة البيانات المملوءة في تطبيق Windows مع التطبيق إلى ذكري المظهر، لم تعد الأسطر السيريلية في قاعدة البيانات قابلة للقراءة (يتم عرض علامات الاستفهام بدلاً من الأحرف). ومع ذلك ، إذا قمت بملء قاعدة البيانات مباشرة على جهاز محمول ، فستتم قراءة الأحرف الروسية بشكل صحيح تمامًا. البيانات من قاعدة بيانات مملوءة في تطبيق جهة خارجية ، أو بتنسيق دلفييتم عرض تطبيق يستخدم مكونات الوصول إلى البيانات الأخرى بشكل طبيعي أيضًا. فشل الرالي في إيجاد حل ، وكان علي أن أقتبس أقوال خبير كرة قدم أوكراني معروف: "سنكتشف ذلك!"

على عكس الأخير ، تمكنت من التعامل مع المشكلة الموصوفة. بشكل افتراضي ، عند الاتصال بـ سكليتيفي FireDACيتم استخدام تنسيق سلسلة ANSI.

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

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

عادةً ما يكون محرر بيانات الجدول البسيط جزءًا من تطبيق معقد. لتحرير الجداول ، عادة ما أستخدم نموذجًا منفصلاً. لنبدأ بقائمة المنتجات. بادئ ذي بدء ، نحتاج إلى إنشاء DataSet للوصول إلى بيانات الجدول. في حالتنا ، من الممكن تمامًا استخدام المكون TADTable. دعنا نضعها في DataModule ونحدد قيمة الخاصية الإتصال. في محرر الملكية اسم الطاولةستظهر قائمة بالجداول نختار منها جدولاً منتجات. إذا فعلت كل شيء بشكل صحيح ، يمكنك تعيين الخاصية نشيطقيمة حقيقية. من الأفضل إعادة تسمية المكون على الفور (على سبيل المثال ، ADTProduct). بعد ذلك ، أقوم عادةً بإنشاء مجموعة من الحقول لمجموعة البيانات. نسمي محرر الحقل (انقر نقرًا مزدوجًا على المكون) وحدد عنصر إضافة جميع الحقول في قائمة السياق.

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

كما هو الحال مع تطبيق VCL ، سنقوم بتوصيل المكون بمجموعة البيانات TDataSource. سيوفر هذا المكون الارتباط بين مجموعة البيانات وعناصر التحكم المرئية. يجب أن تشير خاصية DataSet الخاصة بالمكون إلى مجموعة البيانات الخاصة بنا (ADTProduct). أعطي أدناه جزء من ملف سوق دبي المالي

ADTProduct: TADTable IndexFieldNames = اتصال "ID" = ADConnection UpdateOptions. UpdateTableName = "Product" TableName = "المنتج" يسار = 64 علوي = 192 كائن ADTProductID: TADAutoIncField FieldName = "ID" Origin = "ID" ProviderFlags = [pfInWhere، pfInKey] ReadOnly = كائن نهاية حقيقي ADTProductTitle: TStringField FieldName = "Title" الأصل = "العنوان" الحجم = 50 نهاية كائن dsProduct: TDataSource DataSet = ADTProduct لليسار = 120 أعلى = 192 نهاية

انتبه إلى إحدى الميزات الغريبة ، وهي أن ملف نموذج DataModule لا يتم حفظه بتنسيق FMX ، مثل نموذج FireMonkey العادي ، ولكن بتنسيق DFM ، كما هو الحال في VCL.

تتمثل الخطوة التالية في إنشاء إجراء لفتح مجموعة بيانات ، والتي سنحتاج إلى الاتصال بها في RunTime عند بدء تشغيل البرنامج. لنقم بإنشائه في نفس DataModule. رمز الإجراء بسيط للغاية:

الإجراء TDM. ConnectToDB ؛ ابدأ ADConnection. افتح()؛ منتج ADT. افتح()؛ نهاية ؛

سيتم وضع استدعاء الإجراء في معالج الأحداث OnCreate لـ DataModule.



نوصي بالقراءة

قمة