Hallo,
ich habe ein Problem, vielleicht weiss jemand weiter.
Ich lade eine Webseite in ein TWebBrowser. Auf der geladenen Seite gibt es zwei ComboBoxen. Dabei reagiert die zweite ComboBox auf die Änderungen, die mit der ersten ComboBox vorgenommen werden. Wenn mann in der ersten ComboBox etwas auswählt, werden entsprechende Optionen in die zweite ComboBo geladen. Die Seite wird dabei nich aktualisiert. Aus der Quellcode der Seite sehe ich, dass es ein JavaScript ausgeführt wird (OnChange), wenn man eine Option aus der ersten ComboBox wählt. Soweit klar.
Nun möchte ich die Auswahl einer Option in der ersten ComboBox simulieren. Dabei führe ich mithilfe der Funktion ExecuteScript den JavaScript aus, das im normalen Fall bei der Auswahl einer Option ausgeführt wird. Dann möchte ich die in die zweite ComboBox geladenen Optionen in einer Schleife auslesen.
Leider ist das Problem, dass nicht immer die Richtige Option der zweiten KomboBox für die entsprechende Option der ersten KomboBox in meine TStringListe geschrieben werden.
Delphi-Quellcode:
var
i, iMax, s, fMax, f: integer;
strNameOption, strValue: string;
TempDocument: IHTMLDocument2;
begin
iMax := Form1.webBrowser1.OleObject.Document.Forms.Item(1).Elements.Item(WideString('makeVariant1.makeId')).Length;
for i := 1 to iMax - 1 do
begin
strNameOption:= Form1.webBrowser1.OleObject.Document.Forms.Item(1).Elements.Item(WideString('makeVariant1.makeId')).Item(i).Text;
strValue := Form1.webBrowser1.OleObject.Document.Forms.Item(1).Elements.Item(WideString('makeVariant1.makeId')).Item(i).value;
Form1.webBrowser1.OleObject.Document.Forms.Item(1).Elements.Item(WideString('makeVariant1.makeId')).value := strValue;
TempDocument := Form1.webBrowser1.Document as IHTMLDocument2;
ExecuteScript(TempDocument, 'retrieveOption(' + strValue + ', "1")', 'JavaScript');
Application.ProcessMessages;
fMax := Form1.webBrowser1.OleObject.Document.Forms.Item(1).Elements.Item(WideString('makeVariant1.variantId')).Length;
for f := 0 to fMax - 1 do
strNameOption:= strNameOption+ ',' + Form1.webBrowser1.OleObject.Document.Forms.Item(1).Elements.Item(WideString('makeVariant1.variantId')).Item(f).Text;
vlstListe.Add(strNameOption);
end;
vlstListe.SaveToFile('C:\test.txt');
showMessage('wurde gespeichert....');
end;
Vielen Dank schon mal im Vorraus für eure Hilfe...