Модераторы: MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение формы, которой принадлежит данное поле, Получение названия или номера 
:(
    Опции темы
SeoGhost
  Дата 26.11.2011, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 26.11.2011

Репутация: нет
Всего: нет



День добрый. Возникла необходимость определения формы, к которой относится INPUT поле. То есть на странице может находиться несколько форм. Пользователь кликает по одному полю, например, а мне необходимо определить к какой форме это относится.
В данный момент я определяю поле следующим образом:
Код

var
  ItemTagName, ItemType: string;
  Item: IHTMLElement;
begin
  Item := Webbrowser1.Doc2.elementFromPoint(X, Y) as IHTMLElement;
  if Button = mbRight then
  begin
    ItemTagName := lowercase(Item.tagName);
    if (ItemTagName = 'input') then
      ItemType := lowercase(string(Item.getAttribute('type', 0)));
  end;
end.

Соответствнно мне необходимо определить к какой форме относится Item (либо название либо порядковый номер формы).
В какую сторону копать? Что можно сделать? Можно ли какими то другими путями найти форму? 
Заранее благодарю
PM MAIL   Вверх
volvo877
Дата 27.11.2011, 02:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 5
Всего: 116



Зачем же привязываться к позиции мыши? У IHTMLDocument2 есть свойство activeElement. Соответственно,

Код
var
   Doc : IHTMLDocument2;
   ActElement : IHTMLElement;
   Frms : IHTMLElementCollection;
   f : IHTMLFormElement;
   i : integer;
begin
   Doc := WebBrowser1.Document as IHTMLDocument2;

   ActElement := Doc.activeElement as IHTMLElement; // Получил элемент, который имеет фокус

   // Я проверял на TEXTAREA, поэтому IHTMLTextAreaElement
   Memo1.Lines.Add('ActiveElement : ' + (ActElement as IHTMLTextAreaElement).name);

   // Вообще-то есть также и parentElement, но нельзя привести activeElement.parentElement
   // к IHTMLFormElement - вылетает 'Interface not supported'. Поэтому пойдем наоборот:

   // Список всех форм документа
   Frms := Doc.forms;
   for i := 0 to Frms.length - 1 do
   begin
      f := frms.item(i, 0) as IHTMLFormElement;
      if (f as IHTMLElement).contains(ActElement) then // и находим ту, которая содержит искомый эл-т...
         Memo1.Lines.Add('Form : ' + f.name);
   end;
end;

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0388 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.