uses mshtml_tlb, ActiveX; function TriggerEvent(WB: TWebbrowser; Element: OleVariant; EventName: WideString): Boolean; var Doc4: IHTMLDocument4; Doc2: IHTMLDocument2; EventObj: IHTMLEventObj; varEventObj, pEventObject: OleVariant; begin Result := False; if (Succeeded(WB.Document.QueryInterface(IID_IHTMLDocument4, Doc4))) then begin // TVariantArg(ret).vt := VT_UINT; // TVariantArg(ret).lVal := 0; varEventObj := Unassigned; EventObj := Doc4.CreateEventObject(varEventObj); if (Succeeded(WB.Document.QueryInterface(IID_IHTMLDocument2, Doc2))) then begin pEventObject := EventObj; try Result := Element.fireEvent(EventName, pEventObject); except Result := False; end; end; end; end; function WB_select_SelectItem(WB: TWebbrowser; SelectName, ItemName: string; TriggerOnChangeEvent: Boolean): boolean; var iForms, iFormItems, iSelectItems: Word; FormItem: OleVariant; begin Result := False; for iForms := 0 to WB.OleObject.Document.forms.Length - 1 do begin FormItem := WB.OleObject.Document.forms.Item(iForms); for iFormItems := 0 to FormItem.Length - 1 do begin if (FormItem.Item(iFormItems).type = 'select-one') and (FormItem.Item(iFormItems).Name = SelectName) then begin for iSelectItems := 0 to FormItem.Item(iFormItems).Options.Length - 1 do begin if SameText(FormItem.Item(iFormItems).Options.Item(iSelectItems).Text, ItemName) then begin FormItem.Item(iFormItems).SelectedIndex := iSelectItems; // The onchange event does not fire when the selected option of // the select object is changed programatically // http://msdn.microsoft.com/en-us/library/ms536912(VS.85).aspx if TriggerOnChangeEvent then // Trigger OnChange event: TriggerEvent(WB, FormItem.Item(iFormItems), 'onchange'); Result := True; Break; end; end; end; end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin WB_select_SelectItem(Webbrowser1,'url','Germany', True); end; procedure TForm1.FormCreate(Sender: TObject); begin Webbrowser1.Navigate('http://www.mathworks.com/company/worldwide/'); end;