В данной статье мы рассмотрим, как программно выбрать элемент списка в HTML-форме, используя компонент TWebBrowser в среде разработки Delphi. Разберемся, как выбрать элемент option по атрибуту value в выпадающем списке select.
Описание проблемы
В вашем приложении Delphi вы используете компонент TWebBrowser для отображения HTML-документов. В одном из таких документов присутствует элемент select (выпадающий список) с несколькими элементами option (пунктами списка). Вам необходимо программно выбрать элемент списка, значение которого соответствует thirdvalue.
Для решения задачи можно использовать интерфейс IHTMLSelectElement и его свойство selectedIndex. Ниже представлена функция SelectOptionByValue, которая позволяет найти и выбрать элемент списка по значению атрибута value.
Функция SelectOptionByValue
Функция принимает три параметра:
ADocument - интерфейс к входному HTML-документу
AElementID - идентификатор элемента select (ID выпадающего списка)
AOptionValue - искомое значение атрибута элемента option (значение пункта списка)
Функция возвращает индекс найденного элемента списка, или -1, если элемент не найден.
Пример кода на Object Pascal:
function SelectOptionByValue(const ADocument: IDispatch; const AElementID,
AOptionValue: WideString): Integer;
var
HTMLDocument: IHTMLDocument3;
HTMLElement: IHTMLSelectElement;
function IndexOfValue(const AHTMLElement: IHTMLSelectElement;
const AValue: WideString): Integer;
var
I: Integer;
begin
Result := -1;
for I := 0 to AHTMLElement.length - 1 do
if (AHTMLElement.item(I, I) as IHTMLOptionElement).value = AValue then
begin
Result := I;
Break;
end;
end;
begin
Result := -1;
if Supports(ADocument, IID_IHTMLDocument3, HTMLDocument) then
begin
if Supports(HTMLDocument.getElementById(AElementID), IID_IHTMLSelectElement,
HTMLElement) then
begin
Result := IndexOfValue(HTMLElement, AOptionValue);
HTMLElement.selectedIndex := Result;
end;
end;
end;
Пример использования
Чтобы выбрать элемент со значением thirdvalue в выпадающем списке из HTML-документа, используйте следующий код:
procedure TForm1.Button1Click(Sender: TObject);
var
Index: Integer;
begin
Index := SelectOptionByValue(WebBrowser1.Document, 'ComboBox', 'thirdvalue');
if Index <> -1 then
ShowMessage('Option was found and selected on index: ' + IntToStr(Index))
else
ShowMessage('Option was not found or the function failed (probably due to ' +
'invalid input document)!');
end;
Этот код предполагает, что в компоненте WebBrowser1 уже загружен HTML-документ, содержащий выпадающий список.
Заключение
Используя интерфейс IHTMLSelectElement и его свойства, вы можете программно управлять элементами HTML-форм внутри TWebBrowser в вашем приложении Delphi. Обратите внимание на проверку типов интерфейсов с помощью Supports, чтобы обеспечить корректную работу с элементами формы.
Статья посвящена программному выбору элемента списка в HTML-форме с использованием компонента `TWebBrowser` в среде разработки Delphi.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.