ο TWebBrowser Ο έλεγχος Delphi παρέχει πρόσβαση στη λειτουργικότητα του προγράμματος περιήγησης Web από τις εφαρμογές Delphi - για να μπορείτε να δημιουργήσετε έναν προσαρμοσμένο ιστό να περιηγηθείτε στην εφαρμογή ή να προσθέσετε δυνατότητες περιήγησης στο Internet, αρχείων και δικτύων, προβολή εγγράφων και δυνατότητες λήψης δεδομένων εφαρμογών.
Διαδικτυακές φόρμες
ΕΝΑ φόρμα web ή α μορφή σε μια ιστοσελίδα επιτρέπει σε έναν επισκέπτη της ιστοσελίδας να εισάγει δεδομένα τα οποία, στις περισσότερες περιπτώσεις, αποστέλλονται στον διακομιστή για επεξεργασία.
Η απλούστερη φόρμα ιστού μπορεί να αποτελείται από ένα στοιχείο εισόδου (έλεγχος επεξεργασίας) και a υποβάλλουν κουμπί. Οι περισσότερες μηχανές αναζήτησης ιστού (όπως η Google) χρησιμοποιούν μια τέτοια φόρμα ιστού για να σας επιτρέψουν να κάνετε αναζήτηση στο διαδίκτυο.
Πιο σύνθετες φόρμες ιστού θα περιλαμβάνουν λίστες με αναπτυσσόμενα στοιχεία, πλαίσια ελέγχου, κουμπιά επιλογής κ.λπ. Μια φόρμα ιστού μοιάζει πολύ με μια τυποποιημένη μορφή παραθύρων με ρυθμίσεις εισαγωγής κειμένου και επιλογής.
Κάθε φόρμα θα περιλάμβανε ένα κουμπί - ένα κουμπί υποβολής - το οποίο λέει στο πρόγραμμα περιήγησης να λάβει μέτρα στη φόρμα ιστού (συνήθως για να το στείλει σε έναν διακομιστή ιστού για επεξεργασία).
Προγραμματισμένη Φόρμες Ιστού
Αν στην εφαρμογή της επιφάνειας εργασίας χρησιμοποιείτε το TWebBrowser για την προβολή ιστοσελίδων, μπορείτε να ελέγξετε με προγραμματισμό μορφές ιστού: χειριστείτε, αλλάξτε, γεμίστε, πληκτρολογήστε πεδία μιας φόρμας ιστού και την υποβάλετε.
Ακολουθεί μια συλλογή από προσαρμοσμένες λειτουργίες Delphi που μπορείτε να χρησιμοποιήσετε για να καταχωρίσετε όλες τις φόρμες ιστού σε μια ιστοσελίδα, να ανακτήσετε στοιχεία εισόδου, να συμπληρώσετε με προγραμματισμό πεδία και να υποβάλετε τελικά τη φόρμα.
Για να ακολουθήσετε πιο εύκολα τα παραδείγματα, ας υποθέσουμε ότι υπάρχει ένα στοιχείο ελέγχου TWebBrowser που ονομάζεται "WebBrowser1" σε μια φόρμα Delphi (τυπικά Windows).
Σημείωση: πρέπει να προσθέσετε mshtml στη ρήτρα χρήσης σας, προκειμένου να συντάξετε τις μεθόδους που αναφέρονται εδώ.
Καταχωρίστε ονόματα φόρμας ιστού, αποκτήστε μια φόρμα ιστού ανά ευρετήριο
Μια ιστοσελίδα θα είχε στις περισσότερες περιπτώσεις μόνο μία φόρμα ιστού, αλλά ορισμένες ιστοσελίδες ενδέχεται να έχουν περισσότερες από μία φόρμα ιστού. Δείτε πώς μπορείτε να βρείτε τα ονόματα όλων των εντύπων ιστού σε μια ιστοσελίδα:
λειτουργία WebFormNames (const έγγραφο: IHTMLDocument2): TStringList; var μορφές: IHTMLElementCollection; μορφή: IHTMLFormElement; idx: ακέραιο; ξεκινήσει μορφές: = έγγραφο. Έντυπα ως IHTMlelementCollection; αποτέλεσμα: = TStringList. Δημιουργώ; Για idx: = 0 προς το -1 + forms.length κάνωξεκινήσει μορφή: = forms.item (idx, 0) ως IHTMLFormElement; αποτέλεσμα. Προσθήκη (form.name); τέλος; τέλος;
Μια απλή χρήση για την εμφάνιση της λίστας των ονομάτων φόρμας ιστού σε ένα TMemo:
var μορφές: TStringList; ξεκινήσει φόρμες: = WebFormNames (WebBrowser1.Document ΟΠΩΣ ΚΑΙ IHTMLDocument2); δοκιμάστε memo1.Lines. Εκχώρηση (φόρμες); τελικά μορφές. Ελεύθερος; τέλος; τέλος;
Εδώ είναι πώς να πάρτε την εμφάνιση μιας φόρμας ιστού με ευρετήριο. Για μια σελίδα μίας φόρμας ο δείκτης θα είναι 0 (μηδέν).
λειτουργία WebFormGet (const formNumber: ακέραιο; const έγγραφο: IHTMLDocument2): IHTMLFormElement; var μορφές: IHTMLElementCollection; ξεκινήσει μορφές: = έγγραφο. Έντυπα όπως και IHTMlelementCollection; αποτέλεσμα: = έντυπα. Στοιχείο (formNumber, '') όπως και IHTMLFormElement. τέλος;
Μόλις έχετε τη φόρμα ιστού, μπορείτε λίστα όλων των στοιχείων εισόδου HTML με το όνομά τους, μπορείς πάρτε ή ρυθμίστε την τιμή για κάθε ένα από τα πεδία, και τέλος, μπορείτε υποβάλετε τη φόρμα web.
Οι ιστοσελίδες μπορούν να φιλοξενήσουν φόρμες ιστού με στοιχεία εισόδου, όπως κουτιά επεξεργασίας και αναπτυσσόμενες λίστες, τις οποίες μπορείτε να ελέγξετε και να επεξεργαστείτε προγραμματικά από τον κώδικα Delphi.
Μόλις έχετε τη φόρμα ιστού, μπορείτε λίστα όλων των στοιχείων εισόδου HTML με το όνομά τους:
λειτουργία WebFormFields (const έγγραφο: IHTMLDocument2; const formName: σειρά): TStringList; var μορφή: IHTMLFormElement; πεδίο: IHTMLElement; fName: string; idx: ακέραιο; ξεκινήσει μορφή: = WebFormGet (0, WebBrowser1.Document ΟΠΩΣ ΚΑΙ IHTMLDocument2); αποτέλεσμα: = TStringList. Δημιουργώ; Για idx: = 0 προς το -1 + form.length κάνω ξεκινήστε το πεδίο: = form.item (idx, '') ως IHTMLElement. αν πεδίο = nil τότε Να συνεχίσει; fName: = field.id; αν field.tagName = 'INPUT' έπειτα fName: = (πεδίο όπως και IHTMLInputElement) .name; αν field.tagName = 'SELECT' έπειτα fName: = (πεδίο όπως και IHTMLSelectElement) .name; αν field.tagName = 'TEXTAREA' έπειτα fName: = (πεδίο όπως και IHTMLTextAreaElement) .name; αποτέλεσμα. Προσθέστε (fName); τέλος; τέλος;
Όταν γνωρίζετε τα ονόματα των πεδίων σε μια φόρμα ιστού, μπορείτε να προγραμματιστεί πάρτε την αξία για ένα μόνο πεδίο HTML:
λειτουργία WebFormFieldValue ( const έγγραφο: IHTMLDocument2; const formNumber: ακέραιο; const όνομα πεδίου: σειρά): σειρά; var μορφή: IHTMLFormElement; πεδίο: IHTMLElement; ξεκινήσει μορφή: = WebFormGet (formNumber, WebBrowser1.Document ΟΠΩΣ ΚΑΙ IHTMLDocument2); πεδίο: = μορφή. Στοιχείο (fieldName, '') ως IHTMLElement. αν πεδίο = nil τότε Εξοδος; αν field.tagName = 'INPUT' έπειτα αποτέλεσμα: = (πεδίο όπως και IHTMLInputElement) .value; αν field.tagName = 'SELECT' έπειτα αποτέλεσμα: = (πεδίο όπως και IHTMLSelectElement) .value; αν field.tagName = 'TEXTAREA' έπειτα αποτέλεσμα: = (πεδίο όπως και IHTMLTextAreaElement) .value; τέλος;
Ένα παράδειγμα χρήσης για να αποκτήσετε την τιμή ενός πεδίου εισαγωγής που ονομάζεται "URL":
const FIELDNAME = 'url'; var doc: IHTMLDocument2; fieldValue: σειρά; ξεκινήσει doc: = WebBrowser1.Document ΟΠΩΣ ΚΑΙ IHTMLDocument2; fieldValue: = WebFormFieldValue (doc, 0, FIELDNAME); memo1.Lines. Προσθήκη ('Πεδίο: "URL", τιμή:' + fieldValue);τέλος;
Όλη η ιδέα δεν θα είχε αξία αν δεν θα μπορούσατε συμπληρώστε τα στοιχεία φόρμας ιστού:
διαδικασία WebFormSetFieldValue (const έγγραφο: IHTMLDocument2; const formNumber: ακέραιο; const fieldName, newValue: σειρά); var μορφή: IHTMLFormElement; πεδίο: IHTMLElement; ξεκινήσει μορφή: = WebFormGet (formNumber, WebBrowser1.Document ΟΠΩΣ ΚΑΙ IHTMLDocument2); πεδίο: = μορφή. Στοιχείο (fieldName, '') όπως και IHTMLElement; αν πεδίο = nil τότε Εξοδος; αν field.tagName = 'INPUT' έπειτα (πεδίο όπως και IHTMLInputElement) .value: = newValue; αν field.tagName = 'SELECT' έπειτα (πεδίο όπως και IHTMLSelectElement): = newValue; αν field.tagName = 'TEXTAREA' έπειτα (πεδίο όπως και IHTMLTextAreaElement): = newValue; τέλος;
Υποβάλετε μια φόρμα στο Web
Τέλος, όταν χειριστείτε όλα τα πεδία, ίσως θέλετε να υποβάλετε τη φόρμα ιστού από τον κώδικα Delphi. Δείτε πώς:
διαδικασία WebFormSubmit ( const έγγραφο: IHTMLDocument2; const formNumber: ακέραιο); var μορφή: IHTMLFormElement; πεδίο: IHTMLElement; ξεκινήσει μορφή: = WebFormGet (formNumber, WebBrowser1.Document ΟΠΩΣ ΚΑΙ IHTMLDocument2); form.submit; τέλος;
Όχι όλες οι μορφές ιστού είναι "ανοιχτές"
Ορισμένες φόρμες ιστού ενδέχεται να φιλοξενούν μια εικόνα captcha για να εμποδίσουν την προγραμματισμένη επεξεργασία ιστοσελίδων.
Ορισμένες φόρμες ιστού ενδέχεται να μην υποβάλλονται όταν κάνετε κλικ στο κουμπί "Υποβολή". Ορισμένες φόρμες ιστού εκτελούν JavaScript ή κάποια άλλη διαδικασία εκτελείται εκτελείται από το συμβάν "onsubmit" της φόρμας ιστού.
Σε κάθε περίπτωση, οι ιστοσελίδες μπορούν να ελέγχονται προγραμματικά, το μόνο ερώτημα είναι "πόσο μακριά είστε έτοιμοι να πάτε;"