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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Webbrowser выделение элементов, аналогия функци в Opera -Developer tools 
:(
    Опции темы
KAMIKAZE
Дата 24.1.2010, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Помогите реализовать подобную функцию как в опере: 
Даже не знаю, в какую сторону копать, можно ведь если искать просто текст и выделять его, но если имеется одинаковый текст в коде, выделение тогда сработает на первом попавшемся найденном слове.
user posted image

Это сообщение отредактировал(а) KAMIKAZE - 27.1.2010, 01:10
PM MAIL   Вверх
ZVano
Дата 14.2.2010, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Нужно используя DOM найти нужный элемент "<li> Действия модераторов ... </li>" и назначить ему свойство border="2px solid black". 
Должно получиться:
<li border="2px solid black"> Действия модераторов ... </li>


--------------------
НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению.
Гуглим "Как правильно задавать вопросы"
PM MAIL Skype   Вверх
KAMIKAZE
Дата 14.2.2010, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Первый вопрос: как? Второй - а что если текст будет встречаться? Например: <b>bla bla<b>blabla<b>  - пользователь выделяет "bla" в случае где написано слитно "blabla" - как выделить именно этот текст ?

И еще - должно ведь быть взаимное выделение т.е. когда  в коде выделил - подсветится в браузере и наоборот.

Это сообщение отредактировал(а) KAMIKAZE - 14.2.2010, 23:15
PM MAIL   Вверх
ZVano
Дата 15.2.2010, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Поиск текста при помощи парсинга. 
Если выделить нужно часть текста, то заключаеш его в DIV или SPAN, которому назначаеш стиль.
Код

<body>
<table>
<tr>
<td>
  <b>123 123<b>123124<b>
</td>
</tr>
<tr>
<td>
   1234567890 -1234 12 34
</td>
</tr>
</table>
</body>


Ищем 1234. Получаем
Код

<body>
<table>
<tr>
<td>
  <b>123 123<b>123124<b>
</td>
</tr>
<tr>
<td>
   <SPAN border="2px solid black">1234</SPAN>567890 -1234 12 34
</td>
</tr>
</table>
</body>


Т.е. заменяем содержимое контейнера <td>
<td>1234567890 -1234 12 34</td>
на 
<td><SPAN border="2px solid black">1234</SPAN>567890 -1234 12 34</td>


Если нужно снимать выделение, то нужно запомнить что и где подменяли. 
А можно назначить свой атрибут-флаг:
<td><SPAN border="2px solid black" MyAttribute="TemporaryContainer">1234</SPAN>567890 -1234 12 34</td>
Затем пройтись по всем контейнерам и проверить наличие атрибута "MyAttribute".


--------------------
НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению.
Гуглим "Как правильно задавать вопросы"
PM MAIL Skype   Вверх
KAMIKAZE
Дата 16.2.2010, 01:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Это понятно, но как правильно искать если есть дубликаты? 
Код

<body>
<table>
<tr>
<td>
  <b>bla bla 123 123<b>123124<b>
</td>
</tr>
<tr>
<td>
  <b>123 bla bla 123 <b>вапвапвапвап<b>    -  // пользователь выделяет именно этот текст в браузере, я к чему клоню - можно ли как то получить точный указатель на выделенный текст, по другому будут проблемы с дубликатами...
</td>
</tr>
<tr>
<td>
   1234567890 -1234 12 34
</td>
</tr>
</table>
</body>


PM MAIL   Вверх
ZVano
Дата 16.2.2010, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

// пользователь выделяет именно этот текст в браузере, я к чему клоню - можно ли как то получить точный указатель на выделенный текст, по другому будут проблемы с дубликатами...

Думал, что тебе нужно сделать подсветку всех вхождений искомого текста (как в Opera AC и Mozilla).
А оказалось, нужно подсветить именно выделеный пользователем фрагмент.
Точного ответа у меня нет. 
Знаю лиш, что сам выделеный текст доступен через
range = Document.Selection.createRange() 
range типа TextRange

Отсюда и надо копать. Посмотри в справочнике информацию о TextRange.


--------------------
НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению.
Гуглим "Как правильно задавать вопросы"
PM MAIL Skype   Вверх
KAMIKAZE
Дата 16.2.2010, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Попробую поискать, спс. А вот еще интересный вопрос: когда  в Opera включается режим Developer tools, то клики по ссылкам не работают т.е. не выполняется любая навигация, это чем то похоже на режим редактирования в Webbrowser1. Как перевести в такой режим Webbrowser1?
PM MAIL   Вверх
ZVano
Дата 17.2.2010, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

Как перевести в такой режим Webbrowser1?


У WebBrowser есть событие "BeforeNavigate2". Его и нужно обрабатывать.
Код

procedure TForm2.WebBrowser1BeforeNavigate2(ASender: TObject; const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant;
  var Cancel: WordBool);
begin
  if (Условие, проверяющее на прерывание навигации) then begin
    Cancel := True;
    Exit;
  end;
end;


PS: Скачай полную базу знаний с http://drkb.ru/ В ней есть ответы на большую часть вопросов.

Это сообщение отредактировал(а) ZVano - 17.2.2010, 17:13


--------------------
НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению.
Гуглим "Как правильно задавать вопросы"
PM MAIL Skype   Вверх
KAMIKAZE
Дата 18.2.2010, 01:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я так уже делал. 
Навигейтим на сайт _http://www.yandex.ua/ затем ставим флаг на cancel - ссылки не пашут, но если кликнуть по картинке

user posted image

то будет выполнена навигация. Нужно больше "кенселить"... но вот что и как?

Это сообщение отредактировал(а) KAMIKAZE - 18.2.2010, 01:37
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.0469 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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