----- في برامج الشبكة، غالبًا ما نواجه مواقف حيث يُطلب من المستخدمين إدخال عناوين IP. ومع ذلك، لا توفر لنا دلفي عنصر تحكم يمكن استخدامه لإدخال سلسلة IP، لذلك يتعين علينا استخدام عنصر تحكم Tedit (مربع نص ذو سطر واحد) لقبول سلسلة IP التي أدخلها المستخدم. ومع ذلك، فإن استخدام Tedit لإدخال سلسلة IP ليس فكرة جيدة لأنه من غير المناسب التعامل معه. في الواقع، يوجد بجانبنا عنصر تحكم Windows مخصص لإدخال سلاسل IP، كما هو موضح في الشكل. سيرفض عنصر تحكم IP سلاسل IP غير القانونية (يمكن إدخال أرقام تتراوح بين 0..255 فقط في كل جزء)؛ فهو يتيح لك بسهولة الحصول على قيمة IP (عدد صحيح 32 بت) المطابق لسلسلة IP في عنصر التحكم يوفر عليك عناء التحويل بين سلاسل IP وقيم IP؛ بالإضافة إلى ذلك، يمكنك أيضًا تحديد نطاق عناوين IP التي يمكن إدخالها في عنصر تحكم IP. في هذه المقالة، سأقدم لك كيفية استخدام عناصر تحكم Windows IP في برامج دلفي الخاصة بنا.
---- هناك مكتبتان مهمتان جدًا للارتباطات الديناميكية في Windows: commctrl.dll وcomctl32.dll، وهما مكتبات التحكم المخصصة في Windows (عناصر التحكم العامة في Windows). تحتوي مكتبة التحكم المخصصة على العديد من عناصر تحكم Windows شائعة الاستخدام، مثل شريط الحالة، وCoolbar، وHotKey، وما إلى ذلك؛ وفي دلفي، تم تجميع معظم عناصر التحكم هذه كعناصر تحكم مرئية. بعد أن قامت Microsoft بإطلاق Internet Explorer 3، تمت إضافة بعض عناصر التحكم الجديدة إلى مكتبة التحكم المخصصة، بما في ذلك عنصر تحكم Windows IP (التحكم في تحرير عنوان IP).
---- تهيئة مكتبة التحكم المخصصة لنظام Windows
---- يوفر Windows وظيفتين لواجهة برمجة التطبيقات (API)، InitCommonControls وInitCommonControlsEx، لتهيئة مكتبات التحكم المخصصة. من خلال الأسماء، ليس من الصعب رؤية العلاقة بين هاتين الوظيفتين لواجهة برمجة التطبيقات: فالأخيرة عبارة عن تعزيز للأولى. إذا كنت تريد استخدام عناصر تحكم IP في برنامجك، فيجب عليك استخدام InitCommonControlsEx لإكمال تهيئة مكتبات وفئات التحكم المخصصة. النموذج الأولي للوظيفة InitCommonControlsEx كما يلي (بناء جملة باسكال):
----...
---- إنشاء تحكم IP
----...
---- استخدم التحكم IP. نقوم في البرنامج بالتواصل مع جهاز التحكم IP عن طريق إرسال رسائل إليه. يمكن لعنصر التحكم IP الرد على الرسائل الستة التالية ومعانيها موضحة في الجدول أدناه:
----...
---- إذا كنت ترغب في الحصول على قيمة IP المقابلة لسلسلة IP في عنصر تحكم IP، فيجب عليك إرسال رسالة IPM_GETADDRESS إلى عنصر تحكم IP، وتحتاج إلى استخدام عنوان عدد صحيح 32 بت كمعلمة أخيرة لـ SendMessage .
----...
---- رسالة إعلام للتحكم في IP
---- عندما يتم تغيير سلسلة IP أو نقل تركيز الإدخال، سيرسل عنصر تحكم IP رسالة الإعلام IPN_FIELDCHANGED إلى نافذته الأصلية. في معظم الحالات، يمكننا تجاهل رسالة الإشعار هذه. ما يلي هو مثال للتعامل مع رسالة الإعلام IPN_FIELDCHANGED:
PROcedure Tform1.WndProc(var Msg: TMessage);var p:PNMHDR;begininherited; إذا كان Msg.Msg=WM_NOTIFYثم يبدأ p:=Pointer(Msg.lParam); إذا كان p^.code=IPN_FIELDCHANGED ثم يبدأ{...معالجة يتحكم IP في رسالة الإشعارات IPN_FIELDCHANGED...} end;end;end;