Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Получить доступ к радио кнопкам в TWebBrowser

Delphi , Интернет и Сети , Браузер

Получить доступ к радио кнопкам в TWebBrowser

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

uses
   MSHTML;

 procedure TForm1.Button1Click(Sender: TObject);
 var
   Document: IHTMLDocument2;
   rbTestList: IHTMLElementCollection;
   rbTest: IHTMLOptionButtonElement;
   I: Integer;
 begin
   // Get a reference to the document 
  // Referenz auf Dokument 
  Document := WebBrowser1.Document as IHTMLDocument2;

   // Get a reference to input-control (Radiobutton) 
  // Referenz auf Eingabe-Control-Element (Radiobutton) 
  rbTestList := Document.all.item('rating', EmptyParam) as IHTMLElementCollection;

   // Get current values. 
  // Aktuellen Wert auslesen 
  for I := 0 to rbTestList.Length - 1 do
   begin
     // reference to the i. RadioButton 
    // Referenz auf i. RadioButton 
    rbTest := rbTestList.item(I, EmptyParam) as IHTMLOptionButtonElement;

     // Show a message if radiobutton is checked 
    // Anzeigen, wenn dieser RadioButton ausgewahlt 
    if rbTest.Checked then
       ShowMessageFmt('Der RadioButton mit dem Wert %s' +
         ' ist ausgewahlt!', [rbTest.Value]);
   end;

   // Set new values 
  // Neuen Wert setzen 
  for I := 0 to rbTestList.Length - 1 do
   begin
     // reference to the i. RadioButton 
    // Referenz auf i. RadioButton 
    rbTest := rbTestList.item(I, EmptyParam) as IHTMLOptionButtonElement;

     // check radiobutton with value 3. 
    // Wir mochten den RadioButton mit dem Wert "3" aktivieren 
    if rbTest.Value = '3' then
       rbTest.Checked := True;
   end;
 end;

Here's the translation of the content into Russian:

Код, предоставленный ниже, написан на Delphi и используется для взаимодействия с веб-страницей, загруженной в компонент TWebBrowser. Цель кода - получить доступ к радио-кнопкам на странице, проверить их текущее состояние и установить новое значение для одной из них.

Вот шаг за шагом, что делает код:

  1. Он получает ссылку на документ (IHTMLDocument2), загруженный в компонент TWebBrowser.
  2. Он получает ссылку на коллекцию радио-кнопок с именем "rating" с помощью метода item и параметра EmptyParam.
  3. Он проходит по каждой радио-кнопке в коллекции, проверяет ее текущее состояние (проверено или нет) и отображает сообщение об ошибке, если она проверена.
  4. Затем он устанавливает состояние проверки для конкретной радио-кнопки (с значением "3") в True.

Вот несколько предложений:

  1. Вместо использования EmptyParam при вызове item, можно использовать актуальное имя элемента, которое в этом случае - "rating".
  2. Могло бы быть полезно добавить обработку ошибок, если радио-кнопки с именем "rating" не существуют или если код не может получить ссылку на них.
  3. Код только проверяет и устанавливает значение для одной конкретной радио-кнопки. Если вам нужно взаимодействовать с несколькими радио-кнопками, вам придется изменить код соответствующим образом.

Вот пример, как можно улучшить код:

procedure TForm1.Button1Click(Sender: TObject);
var
  Document: IHTMLDocument2;
  rbTestList: IHTMLElementCollection;
  rbTest: IHTMLOptionButtonElement;
  I: Integer;
begin
   // Получаем ссылку на документ
  Document := WebBrowser1.Document as IHTMLDocument2;

   // Получаем ссылку на input-control (Radiobutton)
  rbTestList := Document.getElementById('rating') as IHTMLElementCollection;

  if Assigned(rbTestList) then
  begin
    for I := 0 to rbTestList.Length - 1 do
    begin
       // Получаем текущие значения.
      rbTest := rbTestList.item(I, EmptyParam) as IHTMLOptionButtonElement;

       // Показываем сообщение, если радиокнопка выбрана
      if rbTest.Checked then
        ShowMessageFmt('Радиокнопка с значением %s выбрана!', [rbTest.Value]);

       // Устанавливаем новые значения
      if rbTest.Value = '3' then
        rbTest.Checked := True;
    end;
  end;
end;

Замечание: я заменил item на getElementById, который является более конкретным и эффективным способом получения ссылки на элемент по его id. Я также добавил обработку ошибок, чтобы код не падал, если радио-кнопки не существуют или если есть другой вопрос.

В статье описывается, как получить доступ к радио кнопкам в TWebBrowser, используя Interop-компоненту MSHTML и Delphi-язык программирования.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Браузер ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-10-12 16:40:16/0.0040161609649658/0