Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.14;
Скачать: CL | DM;

Вниз

Поиск в WebBrowser   Найти похожие ветки 

 
N!tro ©   (2005-07-23 08:14) [0]

Подскажите, как можно сделать поиск в WebBrowser (чтобы найденное слово выделялось) без вызова окна поиска (фраза для поиска берётся из Edit1, например).


 
palva ©   (2005-07-23 11:32) [1]

Следующий код на JavaScript (не знаю, правильно ли отобразится) делает поиск и выделяет результат.

<HTML><BODY>
Leonardo da Vinci was one of the great masters of the High
Renaissance, especially in painting, sculpture, architecture,
engineering, and science.
</BODY>
</HTML>

<SCRIPT>
  var oRange = document.body.createTextRange();
  oRange.findText("sculpture", 1000000, 2);
  oRange.select();
</SCRIPT>

Наверно то же самое нетрудно сделать из Delphi


 
N!tro ©   (2005-07-23 12:49) [2]

Делаю так:
procedure TForm1.Button1Click(Sender: TObject);
begin
 WebBrowser1.OleObject.Document.Body.createTextRange();
 WebBrowser1.OleObject.Document.Body.oRange.findText("Windows", 1000000, 2);
 WebBrowser1.OleObject.Document.Body.oRange.select();
end;

и не получается :(


 
N!tro ©   (2005-07-23 15:27) [3]

Если делать просто скрипт
<SCRIPT>
 function TextRangeSelect(){
 var oRange = document.body.createTextRange();
 oRange.findText("sculpture", 1000000, 2);
 oRange.select();
 }
</SCRIPT>

то ищется только первое слово.
Неужели никто не знает?


 
Viktop   (2005-07-23 16:31) [4]

Держи:
procedure TForm1.TextHight(Text:string);
var
i:integer;
Doc, T:Variant;
begin
Doc:=Web.Document;
T:= Doc.body.createTextRange;
i:=0;
if T.FindText(Text)=false then
   begin
   ShowMessage("Извините,здесь мы ничего не нашли");

   exit;
   end;
While Text > "" do
 begin
   T.FindText(Text);
   T.execCommand("BackColor","","yellow");
   T.execCommand("ForeColor","","red");
   T.execCommand("Bold");
   T.ScrollInToView;
   T.collapse(false);
   i:=i+1;
   if T.FindText(Text)=false then
     begin
       ShowMessage(" найдено: "+IntToStr(i)+" упоминаний");
       exit;
     end;
 end;
end;


 
palva ©   (2005-07-23 16:46) [5]

Вот поиск второго слова:

uses ..., MSHTML;

...

procedure TForm1.Button1Click(Sender: TObject);
var
 document: IHTMLDocument2;
 selectionRange: IHtmlTxtRange;
begin
 document := WebBrowser1.Document as IHTMLDocument2;
 selectionRange := (document.body as IHTMLBodyElement)
   .СreateTextRange as IHtmlTxtRange;
 selectionRange.findText("слово", 1000000, 2);
 selectionRange.collapse(False);
 selectionRange.findText("слово", 1000000, 2);
 selectionRange.select;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 WebBrowser1.OleObject.Navigate2("D:\C\html\select.htm");
end;


Почитайте примеры работы с WebBrowser напр. здесь:
http://www.cryer.co.uk/brian/delphi/twebbrowser/twebbrowser_oleobject.htm


 
Viktop   (2005-07-23 19:38) [6]

А что значит поиск второго слова?


 
palva ©   (2005-07-23 19:47) [7]

Ну типа... В документе, загруженном в браузер, слово "слово" попадается несколько раз. Мы нашли первое вхождение, потом пропустили и начали искать дальше, а вот второе вхождение слова выделили. Я понял, что это я ответил на вопрос N!tro, который посетовал, что "ищется только первое слово". Может, я его неправильно понял...


 
Viktop   (2005-07-24 08:00) [8]

В моём примере на странице выделяются сразу все строки (TextHight("слово")). Выделить сразу все слова. Ему решать [N!tro]



Страницы: 1 вся ветка

Текущий архив: 2005.08.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.063 c
5-1092222402
far
2004-08-11 15:06
2005.08.14
Перехват изменения набора полей DataSet-а в design-time (2)


3-1120470697
Zhekson
2005-07-04 13:51
2005.08.14
Распечатка DBGrid_a


6-1098815250
Kallega
2004-10-26 22:27
2005.08.14
Как отправить СМС через HTTP www.kyivstar.net


1-1122039081
Dr. Genius
2005-07-22 17:31
2005.08.14
Форма как модальное окно


14-1122031149
Андрей Жук
2005-07-22 15:19
2005.08.14
Аттачменты из аутглюка...