تعبئة / إرسال النماذج باستخدام "TWebBrowser" في دلفي

ال TWebBrowser يوفر التحكم في Delphi الوصول إلى وظيفة مستعرض الويب من تطبيقات Delphi الخاصة بك - للسماح لك بإنشاء موقع ويب مخصص تطبيق التصفح أو لإضافة الإنترنت ، وتصفح الملفات والشبكات ، وعرض المستندات ، وتنزيل البيانات إلى قدراتك التطبيقات.

نماذج الويب

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

يمكن أن يتكون أبسط نموذج ويب من نموذج عنصر الإدخال (تحرير السيطرة) و إرسال زر. تستخدم معظم محركات البحث على الويب (مثل Google) نموذج الويب هذا للسماح لك بالبحث في الإنترنت.

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

سيتضمن كل نموذج زرًا - زر إرسال - يخبر المستعرض باتخاذ إجراء على نموذج الويب (عادةً لإرساله إلى خادم ويب للمعالجة).

نشر نماذج الويب برمجياً

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

instagram viewer

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

لمتابعة الأمثلة بسهولة ، دعنا نقول أن هناك عنصر تحكم TWebBrowser المسمى "WebBrowser1" في نموذج دلفي (Windows قياسي).

ملاحظة: يجب أن تضيف مشتمل إلى جملة الاستخدامات الخاصة بك من أجل تجميع الأساليب المذكورة هنا.

قائمة أسماء نماذج الويب ، احصل على نموذج ويب بواسطة الفهرس

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

وظيفة WebFormNames (مقدار ثابت المستند: IHTMLDocument2): TStringList؛ فار النماذج: IHTMLElementCollection؛ النموذج: IHTMLFormElement؛ idx: عدد صحيح ابدأ النماذج: = المستند. أشكال مثل IHTMLElementCollection ؛ النتيجة: = TStringList. خلق؛ إلى عن على idx: = 0 إلى -1 + forms.length فعلابدأ form: = forms.item (idx، 0) as IHTMLFormElement؛ نتيجة. إضافة (form.name) ؛ النهاية; النهاية; 

استخدام بسيط لعرض قائمة أسماء نماذج الويب في TMemo:

فار أشكال: TStringList ؛ ابدأ النماذج: = WebFormNames (WebBrowser1.Document مثل IHTMLDocument2) ؛ محاولة memo1.Lines. تعيين (النماذج) ؛ أخيرا نماذج. مجانا؛ النهاية; النهاية; 

إليك كيفية القيام بذلك الحصول على مثيل لنموذج الويب بالفهرس. بالنسبة لصفحة نموذج واحدة ، سيكون الفهرس 0 (صفر).

وظيفة WebFormGet (مقدار ثابت formNumber: عدد صحيح مقدار ثابت المستند: IHTMLDocument2): IHTMLFormElement؛ فار النماذج: IHTMLElementCollection؛ ابدأ النماذج: = المستند. نماذج مثل IHTMLElementCollection ؛ النتيجة: = الأشكال. العنصر (formNumber ، '') مثل IHTMLFormElement. النهاية; 

بمجرد الحصول على نموذج الويب ، يمكنك ذلك قائمة بجميع عناصر إدخال HTML باسمهم، تستطيع الحصول على أو تعيين القيمة لكل حقلوأخيرا ، يمكنك ذلك تقديم نموذج الويب.

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

بمجرد الحصول على نموذج الويب ، يمكنك ذلك قائمة بجميع عناصر إدخال HTML باسمهم:

وظيفة WebFormFields (مقدار ثابت المستند: IHTMLDocument2؛ مقدار ثابت اسم النموذج: خيط): TStringList ؛ فار النموذج: IHTMLFormElement؛ الحقل: IHTMLElement؛ fName: سلسلة ؛ idx: عدد صحيح ابدأ النموذج: = WebFormGet (0 ، WebBrowser1.Document مثل IHTMLDocument2) ؛ النتيجة: = TStringList. خلق؛ إلى عن على idx: = 0 إلى -1 + form.length فعل start field: = form.item (idx، '') as IHTMLElement؛ إذا المجال = لا شيء إذن استمر؛ fName: = field.id؛ إذا field.tagName = 'INPUT' ثم fName: = (الحقل مثل IHTMLInputElement) .name؛ إذا field.tagName = 'SELECT' ثم fName: = (الحقل مثل IHTMLSelectElement) .name؛ إذا field.tagName = 'TEXTAREA' ثم fName: = (الحقل مثل IHTMLTextAreaElement) .name؛ نتيجة. إضافة (fName) ؛ النهاية; النهاية;

عندما تعرف أسماء الحقول الموجودة في نموذج ويب ، يمكنك برمجيًا الحصول على القيمة لحقل HTML واحد:

وظيفة WebFormFieldValue ( مقدار ثابت المستند: IHTMLDocument2؛ مقدار ثابت formNumber: عدد صحيح مقدار ثابت اسم الحقل: خيط): خيط; فار النموذج: IHTMLFormElement؛ الحقل: IHTMLElement؛ ابدأ form: = WebFormGet (formNumber ، WebBrowser1.Document مثل IHTMLDocument2) ؛ الحقل: = النموذج. العنصر (اسم الحقل ، '') كـ IHTMLElement ؛ إذا المجال = لا شيء إذن خروج؛ إذا field.tagName = 'INPUT' ثم النتيجة: = (الحقل مثل IHTMLInputElement) .value؛ إذا field.tagName = 'SELECT' ثم النتيجة: = (الحقل مثل IHTMLSelectElement) .value؛ إذا field.tagName = 'TEXTAREA' ثم النتيجة: = (الحقل مثل IHTMLTextAreaElement) .value؛ النهاية;

مثال للاستخدام للحصول على قيمة حقل الإدخال المسمى "URL":

مقدار ثابت FIELDNAME = 'url'؛ فار doc: IHTMLDocument2؛ قيمة الحقل: خيط; ابدأ doc: = WebBrowser1.Document مثل IHTMLDocument2؛ fieldValue: = WebFormFieldValue (doc، 0، FIELDNAME)؛ memo1.Lines. إضافة ("الحقل:" URL "، القيمة: '+ fieldValue) ؛النهاية;

الفكرة بأكملها لن يكون لها أي قيمة إذا لم تتمكن من ذلك ملء عناصر نموذج الويب:

إجراء نموذج الويب SetFieldValue (مقدار ثابت المستند: IHTMLDocument2؛ مقدار ثابت formNumber: عدد صحيح مقدار ثابت اسم الحقل ، القيمة الجديدة: خيط); فار النموذج: IHTMLFormElement؛ الحقل: IHTMLElement؛ ابدأ form: = WebFormGet (formNumber ، WebBrowser1.Document مثل IHTMLDocument2) ؛ الحقل: = النموذج. العنصر (اسم الحقل ، '') مثل IHTMLElement إذا المجال = لا شيء إذن خروج؛ إذا field.tagName = 'INPUT' ثم (حقل مثل IHTMLInputElement) .value: = newValue؛ إذا field.tagName = 'SELECT' ثم (حقل مثل IHTMLSelectElement): = newValue؛ إذا field.tagName = 'TEXTAREA' ثم (حقل مثل IHTMLTextAreaElement): = newValue؛ النهاية;

تقديم نموذج ويب

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

الداخلي WebFormSubmit ( مقدار ثابت المستند: IHTMLDocument2؛ مقدار ثابت formNumber: عدد صحيح) ؛ فار النموذج: IHTMLFormElement؛ الحقل: IHTMLElement؛ ابدأ form: = WebFormGet (formNumber ، WebBrowser1.Document مثل IHTMLDocument2) ؛ نموذج. النهاية;

ليست جميع نماذج الويب "منفتح الذهن"

قد تستضيف بعض نماذج الويب صورة captcha لمنع معالجة صفحات الويب بطريقة برمجية.

قد لا يتم تقديم بعض نماذج الويب عندما تنقر فوق "زر الإرسال". تقوم بعض نماذج الويب بتنفيذ JavaScript أو يتم تنفيذ بعض الإجراءات الأخرى بواسطة حدث "onsubmit" لنموذج الويب.

في أي حال ، يمكن التحكم في صفحات الويب بطريقة برمجية ، والسؤال الوحيد هو "إلى أي مدى أنت مستعد للذهاب؟"

instagram story viewer