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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Формы vs браузер 
V
    Опции темы
Borland_Delphi_6
  Дата 11.2.2007, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


LoneLINEss
****


Профиль
Группа: Участник Клуба
Сообщений: 2509
Регистрация: 5.11.2002
Где: in fortune dreams ...

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



Ситуация: в браузер загружена страничка с формой. Можно ли сделать так, чтобы при клике или выделении эл-та формы (поля ввода, текстбокса и т.д.) программе передавалось HTML-имя этого эл-та? 

P.S. TEbmbWB. Если уже было нечто похожее - наставьте на путь истинный  smile 


--------------------
Blind Guardian Fan :: BMSTU Student :: A polar bear is a rectangular bear after a coordinate transform.

Мои фотографии
PM MAIL WWW   Вверх
December
Дата 11.2.2007, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

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



можно ловить mouseup и вычислять элемент по адресу клика


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
Borland_Delphi_6
Дата 13.2.2007, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


LoneLINEss
****


Профиль
Группа: Участник Клуба
Сообщений: 2509
Регистрация: 5.11.2002
Где: in fortune dreams ...

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



Поднимал тут темки похожие, заинтересовал режим DesignMode. Может кто в курсе, как при выделении эл-та в этом режиме получить его имя? И заодно проверить, является ли этот эл-т эл-том формы?


--------------------
Blind Guardian Fan :: BMSTU Student :: A polar bear is a rectangular bear after a coordinate transform.

Мои фотографии
PM MAIL WWW   Вверх
Alexeyt
Дата 18.2.2007, 02:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 15.9.2006
Где: около Москвы

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



Borland_Delphi_6, 
смотри на torry.net "Mini Webbrowser demo".
Там есть design mode.

PM WWW   Вверх
Borland_Delphi_6
Дата 27.2.2007, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


LoneLINEss
****


Профиль
Группа: Участник Клуба
Сообщений: 2509
Регистрация: 5.11.2002
Где: in fortune dreams ...

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



Спасибо, пример интересный, но то, что мне нужно, я так и не смог подчерпнуть smile Вот, что я оттуда выбрал:

Код

procedure TForm1.Timer1Timer(Sender: TObject);
var
  MausPos: TPoint;
  Element: IHTMLElement;
  x, y: Integer;
  Doc: IHTMLDocument2;
  CurrentWB: TWebbrowser;
begin
    begin
      CurrentWB := WB1;
      if Assigned(CurrentWB) then
      begin
        Doc := CurrentWB.Document as IHTMLDocument2;
        if Assigned(doc) then
        begin
          // Get Current Mouse Position
          GetCursorPos(MausPos);
          // Convert the screen coordinates to client coordinates
          mauspos := CurrentWB.ScreenToClient(mauspos);
          x := MausPos.x;
          y := MausPos.y;
          // Get the element under the mouse cursor
          Element := GetElementAtPos(doc, x, y);
          if Assigned(Element) then
          begin
            // element properties
            edElementTag.Text := Element.tagName;
            //edElementId.Text := Element.lang;
            edElementinnerText.Text := Element.innerText;
            edElementinnerHTML.Text := Element.innerHTML;
            edElementclassName.Text := Element.className;

          end;
        end;
      end;
    end;

end;


Но эта процедура не выдает мне имя элемента, она выдает лишь имя тега smile Я искал среди свойств Element'a, но ничего подходящего не углядел. Может быть, посоветуtnt что-нибудь еще?


--------------------
Blind Guardian Fan :: BMSTU Student :: A polar bear is a rectangular bear after a coordinate transform.

Мои фотографии
PM MAIL WWW   Вверх
December
Дата 1.3.2007, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

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



Откастуй элемент к нужному интерфейсу из плеяды IHTML*, и ты получишь доступ ко всем возможным атрибутам.


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
Borland_Delphi_6
Дата 3.3.2007, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


LoneLINEss
****


Профиль
Группа: Участник Клуба
Сообщений: 2509
Регистрация: 5.11.2002
Где: in fortune dreams ...

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



Ни слова не понял :'( 


--------------------
Blind Guardian Fan :: BMSTU Student :: A polar bear is a rectangular bear after a coordinate transform.

Мои фотографии
PM MAIL WWW   Вверх
December
Дата 3.3.2007, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

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



smile
Открой MSDN, найди в нём интерфейс IHTMLElement
Синхронизируйся с содержанием, рядом там увидишь ещё много-много IHTMLxxx интерфейсов
Каждый из них репрезентует какой-нить конкретный тэг
допустим, у тебя есть <input name="mytext1" value="lala" />
получать его как IHTMLElement ты уже умеешь. осталось только сделать следующее:
Код
inputEl:=myElement as IHTMLInputElement;
и ты сможешь доступаться к разнообразным пропертям.


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
Borland_Delphi_6
Дата 8.1.2008, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


LoneLINEss
****


Профиль
Группа: Участник Клуба
Сообщений: 2509
Регистрация: 5.11.2002
Где: in fortune dreams ...

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



December, уф, сколько времени я откладывал решение этой своей проблемы, наконец-то до нее руки дошли. 

Добавил в код выше всего две строчки:

Код

           inputEl:=Element as IHTMLInputElement;
           Edit1.Text:=inputEl.name;


Все работает, если наводить мышку на INPUT, а если на BODY, то получаем Interface Not Supported, что, в общем-то, неудивительно smile Как избежать этой ошибки, где if поставит, или еще что?


--------------------
Blind Guardian Fan :: BMSTU Student :: A polar bear is a rectangular bear after a coordinate transform.

Мои фотографии
PM MAIL WWW   Вверх
December
Дата 9.1.2008, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

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



Для того, чтобы проверить, поддерживает ли элемент какой-то интерфейс,  можно использовать функцию Supports. Можно и просто try..except. В твоём случае будет разумно написать так: 
Код
if Supports(Element,IHTMLInputElement,inputEl) Edit1.Text:=inputEl.name;

(за синтаксис не ручаюсь)


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
MetalFan
Дата 9.1.2008, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


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

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



а можно и просто QueryInterface


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Borland_Delphi_6
Дата 29.1.2008, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


LoneLINEss
****


Профиль
Группа: Участник Клуба
Сообщений: 2509
Регистрация: 5.11.2002
Где: in fortune dreams ...

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



December, все заработало, спасибо! И отдельное спасибо за этот пост (жалко репу нельзя два раза за день менять smile ). Но очередная проблема с TextArea - с этим тегом не работает, поскольку 

Код

Supports(Element,IHTMLInputElement,inputEl)


возвращает False. Я так понимаю, необходимо заменить IHTMLInputElement на что-то другое? На что? Поиск по интернету и MSDN в частности не пренес своих плодов (не там искал?..  smile ) Или может быть существует какой-то более универсальный вариант определения параметра "NAME" тега?

Добавлено через 4 минуты и 31 секунду
О, на MSDN-таки нашел список интерфейсов, изучаю. Но вопрос пока еще актуален smile

Добавлено через 6 минут и 44 секунды
Хех smile IHTMLTextAreaElement  smile 


--------------------
Blind Guardian Fan :: BMSTU Student :: A polar bear is a rectangular bear after a coordinate transform.

Мои фотографии
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0530 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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