Форум: "Основная";
Текущий архив: 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