| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: ActiveX/СОМ/CORBA > Webbrowser выделение элементов |
| Автор: KAMIKAZE 24.1.2010, 19:56 |
| Помогите реализовать подобную функцию как в опере: Даже не знаю, в какую сторону копать, можно ведь если искать просто текст и выделять его, но если имеется одинаковый текст в коде, выделение тогда сработает на первом попавшемся найденном слове. http://img24.imageshack.us/i/35663313.jpg/ |
| Автор: ZVano 14.2.2010, 16:36 |
| Нужно используя DOM найти нужный элемент "<li> Действия модераторов ... </li>" и назначить ему свойство border="2px solid black". Должно получиться: <li border="2px solid black"> Действия модераторов ... </li> |
| Автор: KAMIKAZE 14.2.2010, 23:14 |
| Первый вопрос: как? Второй - а что если текст будет встречаться? Например: <b>bla bla<b>blabla<b> - пользователь выделяет "bla" в случае где написано слитно "blabla" - как выделить именно этот текст ? И еще - должно ведь быть взаимное выделение т.е. когда в коде выделил - подсветится в браузере и наоборот. |
| Автор: ZVano 15.2.2010, 10:31 | ||||
| Поиск текста при помощи парсинга. Если выделить нужно часть текста, то заключаеш его в DIV или SPAN, которому назначаеш стиль.
Ищем 1234. Получаем
Т.е. заменяем содержимое контейнера <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". |
| Автор: KAMIKAZE 16.2.2010, 01:42 | ||
Это понятно, но как правильно искать если есть дубликаты?
|
| Автор: ZVano 16.2.2010, 10:29 | ||
Думал, что тебе нужно сделать подсветку всех вхождений искомого текста (как в Opera AC и Mozilla). А оказалось, нужно подсветить именно выделеный пользователем фрагмент. Точного ответа у меня нет. Знаю лиш, что сам выделеный текст доступен через range = Document.Selection.createRange() range типа TextRange Отсюда и надо копать. Посмотри в справочнике информацию о TextRange. |
| Автор: KAMIKAZE 16.2.2010, 11:59 |
| Попробую поискать, спс. А вот еще интересный вопрос: когда в Opera включается режим Developer tools, то клики по ссылкам не работают т.е. не выполняется любая навигация, это чем то похоже на режим редактирования в Webbrowser1. Как перевести в такой режим Webbrowser1? |
| Автор: ZVano 17.2.2010, 17:05 | ||||
У WebBrowser есть событие "BeforeNavigate2". Его и нужно обрабатывать.
PS: Скачай полную базу знаний с http://drkb.ru/ В ней есть ответы на большую часть вопросов. |
| Автор: KAMIKAZE 18.2.2010, 01:36 |
| Я так уже делал. Навигейтим на сайт _http://www.yandex.ua/ затем ставим флаг на cancel - ссылки не пашут, но если кликнуть по картинке http://img716.imageshack.us/i/90948586.jpg/ то будет выполнена навигация. Нужно больше "кенселить"... но вот что и как? |