assez tard, je sais, mais je vais essayer de répondre à cette question car il est une bonne question et puisque même la version actuelle du TEmbeddedWB
ne pas avoir cette fonctionnalité mise en œuvre.
Cependant, vous pouvez ajouter votre propre fonction pour ce faire; Dans l'exemple suivant j'utilise la classe interposée de TEmbeddedWB
où j'ai surchargé la fonction FillForm
avec la version qui supporte la case à cocher et le remplissage des boutons radio.
Si vous souhaitez définir la case à cocher ou sélectionnez une appel bouton radio cette version de la fonction, où:
- FieldName (string) - est le nom de l'élément
- Value (string) - valeur de l'élément (peut être vide, mais dans ce cas, le premier élément du FieldName sera défini, les développeurs web doivent utiliser des paires de noms IMHO)
- Select (Boolean) - si True, case à cocher est cochée ou radio bouton sélectionné
Voici le code:
uses
EmbeddedWB, MSHTML;
type
TEmbeddedWB = class(EmbeddedWB.TEmbeddedWB)
public
function FillForm(const FieldName, Value: string;
Select: Boolean): Boolean; overload;
end;
implementation
function TEmbeddedWB.FillForm(const FieldName, Value: string;
Select: Boolean): Boolean;
var
I: Integer;
Element: IHTMLElement;
InputElement: IHTMLInputElement;
ElementCollection: IHTMLElementCollection;
begin
Result := False;
ElementCollection := (Document as IHTMLDocument3).getElementsByName(FieldName);
if Assigned(ElementCollection) then
for I := 0 to ElementCollection.length - 1 do
begin
Element := ElementCollection.item(I, '') as IHTMLElement;
if Assigned(Element) then
begin
if UpperCase(Element.tagName) = 'INPUT' then
begin
InputElement := (Element as IHTMLInputElement);
if ((InputElement.type_ = 'checkbox') or (InputElement.type_ = 'radio')) and
((Value = '') or (InputElement.value = Value)) then
begin
Result := True;
InputElement.checked := Select;
Break;
end;
end;
end;
end;
end;
Et voici un exemple d'utilisation basique:
procedure TForm1.Button1Click(Sender: TObject);
var
WebBrowser: TEmbeddedWB;
begin
WebBrowser := TEmbeddedWB.Create(Self);
WebBrowser.Parent := Self;
WebBrowser.Align := alClient;
WebBrowser.Navigate('http://www.w3schools.com/html/html_forms.asp');
if WebBrowser.WaitWhileBusy(15000) then
begin
if not WebBrowser.FillForm('sex', 'male', True) then
ShowMessage('Error while form filling occured...');
if not WebBrowser.FillForm('vehicle', 'Bike', True) then
ShowMessage('Error while form filling occured...');
if not WebBrowser.FillForm('vehicle', 'Car', True) then
ShowMessage('Error while form filling occured...');
end;
end;
D'où vient votre 'FillForm' vient? Je ne me souviens pas de cela comme une caractéristique Delphi standard. Dans quelle unité/bibliothèque add-on? –
Embedded Webbrowser: http://www.bsalsa.com – Kermia