Hallo Leute,
ich hoffe, ich kann meine Frage verständlich formulieren. Ich möchte auf ein Textfeld in einem
html-Document zugreifen. Das geht ja so:
wb.OleObject.Document.All.Item('ItemName').Value := 'Test';
Nun habe ich das Problem, dass ich nicht direkt über das BrowserControl zugreife sondern den Container Components nach dem Element durchsuche.
Und jetzt wirds kurz kompliziert. Warum nicht direkt. Ich benutze die TEmbeddedWb-Komponente. Binde ich EmbeddedWB in die uses ein, so bekomme ich eine Fehlermeldung des Compilers bei der Benutzung von Laufzeitbibliotheken. Das war so ne Sache mit zu vielen Pfaden, Zweigen? in der
BPL-Nutzung. Ist schon ne' Zeit her, als ich mich darum gekümmert habe. Punkt ist, ich kann in der
Unit EmbeddedWB nicht einbinden.
Jetzt dachte ich, egal, OleObject sollte durch einen Vorfahren implementiert werden und hab in einer kleinen Testanwendung mal mit Code-Folding geschaut wo das denn ist. Der Aufruf geht direkt zu TOleControl.OleObjekt. Na, dachte mir nichts leichter als das, da haben wir ja die Vererbung incl. Typ-Konvertierung.
TOleControl(Components[i]).OleObject.Document.All.Item('ItemName').Value := 'Test';
sollte die Lösung sein.
Nichts ist. Bis Item werden gültige Adressen angezeigt, dann ist Schluss.
Exception mit Zugriff auf 0000.
Ich denke mal, die Typkonvertierung ist hier falsch. Vielleicht wird OleObject auch durch ein Interface eingebunden. Bin bei der ganzen Sache aber leider nicht fitt. Kann mir einer einen Weg zeigen wie ich das hinbekomme?
Das soll es aber nicht sein:
TEmbeddedWB(Components[i]).OleObject.Document.All.Item('ItemName').Value := 'Test';
Ich dank schon mal im Voraus,
Gruß oki