procedure TForm1.Button1Click(Sender: TObject);
beginif Webbrowser1.OleObject.Document.Selection.type = 'Control' thenbeginif Webbrowser1.OleObject.Document.Selection.CreateRange.CommonParentElement.tagName =
'IMAGE' then
ShowMessage('An Image is selected');
endelsebeginif Webbrowser1.OleObject.Document.Selection.createRange.Text = '' then
ShowMessage('Nothing is selected - ');
end;
end;
Here's the translation of the provided content into Russian:
Код, который вы предоставили, - это процедура в Delphi, которая запускается при клике по кнопке Button1. Эта процедура проверяет, выбран ли объект в контролле TWebBrowser, и если да, то она проверяет тип выбранного объекта.
Вот разбивка того, что код делает:
if Webbrowser1.OleObject.Document.Selection.Type = 'Control' then: эта строка проверяет, является ли выборка в веб-браузере контролем. Выборка может быть текстом, таблицей, изображением и т.д.
if Webbrowser1.OleObject.Document.Selection.CreateRange.CommonParentElement.tagName = 'IMAGE' then: если выборка - это контролл и его тип равен 'Control', эта строка проверяет, является ли этот контрол изображением. Она делает это, сравнивая tagName общего родительского элемента созданного диапазона, который содержит выбранное текст или контрол.
ShowMessage('An Image is selected');: если выбранный объект - это действительно изображение, она отображает сообщение с текстом 'An Image is selected'.
else if Webbrowser1.OleObject.Document.Selection.CreateRange.Text = '' then: если выборка не является изображением, эта строка проверяет, есть ли выбранное текст. Она делает это, сравнивая свойство Text созданного диапазона.
ShowMessage('Nothing is selected');: если нет выбранного текста, она отображает сообщение с текстом 'Nothing is selected'.
Вот предложенная альтернативная решение:
procedure TForm1.Button1Click(Sender: TObject);
begin
if Webbrowser1.OleObject.Document.Selection.Type = vsHTMLSelectionTypeControl then
if GetSelectedElement(Webbrowser1.OleObject.Document) = 'IMG' then
ShowMessage('An Image is selected')
else
ShowMessage('Something else is selected');
else
if Trim(Webbrowser1.OleObject.Document.Selection.CreateRange.Text) <> '' then
ShowMessage('Some text is selected')
else
ShowMessage('Nothing is selected');
end;
function TForm1.GetSelectedElement(Document: IHTMLDocument2): string;
var
Selection: IHTMLSelectionObject;
Element: IHTMLElement;
begin
Selection := Document.Selection;
Element := Selection.CreateRange.CommonAncestor as IHTMLElement;
Result := Element.tagName;
end;
В этом альтернативном решении логику разделяют на две процедуры. Функция GetSelectedElement проверяет, какой тип элемента выбран и возвращает его tagName. Основная процедура использует эту функцию для проверки, является ли изображением или текстом выбранный объект, и отображает сообщение соответственно.
В статье описывается процедура, которая позволяет получить выделенные объекты из TWebBrowser и отображать сообщение в зависимости от типа выбранного объекта или отсутствия выделения.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.