Hallo,
ich möchte in meinem Programm folgenden Code verwenden, um die Items eines DropDown Menüs zu ermitteln und zu setzen.
Ich habe ihn hier gefunden:
...Listbox Items eines TWebBrowser Documents auflisten?
Delphi-Quellcode:
uses
MSHTML;
function IsSelectElement(eleElement: IHTMLElement): Boolean;
var
selElement: IHTMLSelectElement;
begin
Result := False;
try
selElement := eleElement as IHTMLSelectElement;
except
Exit;
end;
Result := True;
end;
procedure GetListBoxOptions(Web1: TWebBrowser;
strListBoxName: string;
intInstance: Integer;
tslLines: TStrings;
out intSelected: Integer);
var
eleChild: IHTMLElement;
eleElement: IHTMLElement;
colGrandParents: IHTMLElementCollection;
colParents: IHTMLElementCollection;
selElement: IHTMLSelectElement;
intCount: Integer;
intG: Integer;
intGMax: Integer;
intP: Integer;
intPMax: Integer;
Document: IHTMLDocument2;
begin
tslLines.Clear;
intSelected := -1;
intCount := -1;
Document := Web1.Document as IHTMLDocument2;
if Document = nil then Exit;
colGrandParents := Document.All;
if colGrandParents = nil then Exit;
intGMax := colGrandParents.Length - 1;
for intG := 0 to intGMax do
begin
eleElement := colGrandParents.Item(intG, '') as IHTMLElement;
// Hier kommt der Fehler
if IsSelectElement(eleElement) then
begin
selElement := eleElement as IHTMLSelectElement;
if selElement.Name = strListBoxName then
begin
Inc(intCount);
if intCount = intInstance then
begin
intSelected := selElement.selectedIndex;
colParents := eleElement.children as IHTMLElementCollection;
intPMax := colParents.Length - 1;
for intP := 0 to intPMax do
begin
eleChild := colParents.Item(intP, '') as IHTMLElement;
tslLines.Add(eleChild.InnerText);
end;
end;
end;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate('http://www.swissdelphicenter.ch/torry');
end;
procedure TForm1.Button2Click(Sender: TObject);
var
intSelected: Integer;
begin
ComboBox1.Text := '';
GetListBoxOptions(WebBrowser1, 'select', 0, ComboBox1.Items, intSelected);
if intSelected > -1 then
begin
ComboBox1.Text := ComboBox1.Items[intSelected];
end;
end;
An der oben, im Source bezeichneten Stelle kommt der Fehler: "EIntfCastError: Schnittstelle nicht unterstützt"
Ich hab keine Ahnung was das bedeutet bzw. wie ich das Problem löse. Kann mir jemand helfen?
MfG
MuTzE
A8N32-SLI Deluxe | AMD 64 X2 3800+ @ 2700 MHz | Corsair TWINX1024-3200XL @ 270 MHz | ASUS EN7800GTX @ 490/1300 | Samsung SP2504C | Plextor PX-712SA | Logitech UltraX Media Keyboard | Razer Copperhead Chaos Green | Razer eXactMat | Sennheiser PC150