5th
Май

Электронный учебник с помощью компонентов Treeview и Webbrowser, реализация поиска

Posted by Chas under Пост-обзор

nursak:
Поиск по TWebBrowser с подсветкой символов нашел.

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, SHDocVw, StdCtrls, ExtCtrls, MSHTML, ActiveX;

type
TForm1 = class(TForm)
Edit1: TEdit;
Panel1: TPanel;
WebBrowser1: TWebBrowser;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
function InvokeCMD(WB: TWebbrowser; nCmdID: DWORD): Boolean; overload;
function InvokeCMD(WB: TWebbrowser; InvokeIE: Boolean; Value1, Value2: Integer; var vaIn, vaOut: OleVariant): Boolean; overload;
public
{ Public declarations }
end;

const
CGID_WebBrowser: TGUID = '{ED016940-BD5B-11cf-BA4E-00C04FD70816}';

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate( 'http://forum.a42.ru/programmirovanie/delphi-poisk-v-webbrowser-t21644.html' );
end;

procedure TForm1.Button1Click(Sender: TObject);
var
vaIn, vaOut: OleVariant;
begin
InvokeCMD( WebBrowser1, 1 );
end;

function TForm1.InvokeCMD(WB: TWebbrowser; nCmdID: DWORD): Boolean;
var
vaIn, vaOut: OleVariant;
begin
Result := InvokeCMD(WB, True, nCmdID, 0{unassigned}, vaIn, vaOut);
end;

function TForm1.InvokeCMD(WB: TWebbrowser; InvokeIE: Boolean; Value1,
Value2: Integer; var vaIn, vaOut: OleVariant): Boolean;
var
CmdTarget: IOleCommandTarget;
PtrGUID: PGUID;
begin
New(PtrGUID);
if InvokeIE then
PtrGUID^ := CGID_WebBrowser
else
PtrGuid := PGUID(nil);
if WB.Document <> nil then
try
WB.Document.QueryInterface(IOleCommandTarget, CmdTarget);
if CmdTarget <> nil then
try
CmdTarget.Exec(PtrGuid, Value1, Value2, vaIn, vaOut);
finally
CmdTarget._Release;
end;
except end;
Dispose(PtrGUID);

end;

end.

HOOCH94:
В своём эл учебнике я использую вот такой код поиска по Webbrowser;

uses MSHTML;

procedure WBFindText(Browser: TWebBrowser; const Direction: Boolean; const FText: String;
const SearchScope, Flags: Integer);
var
Doc: IHTMLDocument2;
SelObj: IHTMLSelectionObject;
SelRange: IHtmlTxtRange;
begin
Doc := Browser.Document as IHTMLDocument2;
SelObj := Doc.Selection;
SelRange := SelObj.CreateRange as IHTMLTxtRange;
SelRange.Collapse(Direction);
if SelRange.FindText(FText, SearchScope, Flags) then
begin
SelRange.Select;
SelRange.ScrollIntoView(True);
end
else MessageBox(Handle, 'По Вашему запросу ничего не найдено', 'Поиск текста', MB_ICONINFORMATION);
end;

{
WBFindText(MyCoolBrowser, False, 'MyCoolText', 1, 0); // Найти вперед

WBFindText(MyCoolBrowser, False, 'MyCoolText', 1, 0 or 4); // Найти вперед + чуствительность к регистру

WBFindText(MyCoolBrowser, True, 'MyCoolText', - 1, 1); // Найти назад

WBFindText(MyCoolBrowser, True, 'MyCoolText', - 1, 1 or 4); // Найти назад + чуствительность к регистру } (c)RaIDeR

тема на форуме

Похожие статьи

Теги: | |