Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];

Вниз

Поиск в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.014 c
14-1122266581
WondeRu
2005-07-25 08:43
2005.08.14
DELPHI DIAGRAM PORTFOLIO(*.ddp) -абсолютно бесполезная штуковина?


1-1122102560
Gon
2005-07-23 11:09
2005.08.14
2 вопроса в одном


8-1113201914
Fokin111
2005-04-11 10:45
2005.08.14
TMediaPlayer


1-1122272734
tttyu
2005-07-25 10:25
2005.08.14
Проблемы с запуском Delphi


1-1122377298
scarface
2005-07-26 15:28
2005.08.14
Podskazhi kak prezapisat JPG file?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский