:: MVP ::
|
|
:: RSS ::
|
|
|
Как сделать TWebBrowser плоским вместо 3D?
uses
{...,} MSHTML;
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
const
Make_Flat = true;
var
Doc: IHTMLDocument2;
Element: IHTMLElement;
begin
Doc := IHTMLDocument2( TWebBrowser( Sender ).Document );
if Doc = nil then
Exit;
Element := Doc.body;
if Element = nil then
Exit;
case Make_Flat of
true : Element.style.borderStyle := 'none';
false : Element.style.borderStyle := '';
end;
end;
|
Как скрыть контекстное меню у TWebBrowser?
var
Form1: TForm1;
HookID: THandle;
function MouseProc( nCode: Integer; wParam, lParam: Longint ): Longint; stdcall;
const
IE_NAME = 'Internet Explorer_Server';
var
szClassName: array[0..255] of Char;
begin
case nCode < 0 of
true: Result := CallNextHookEx( HookID, nCode, wParam, lParam )
else
case wParam of
WM_RBUTTONDOWN, WM_RBUTTONUP:
begin
GetClassName( PMOUSEHOOKSTRUCT( lParam )^.HWND, szClassName,
SizeOf( szClassName ) );
if lstrcmp( @szClassName[0], @IE_NAME[1] ) = 0 then
Result := HC_SKIP
else
Result := CallNextHookEx( HookID, nCode, wParam, lParam );
end
else
Result := CallNextHookEx( HookID, nCode, wParam, lParam );
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate( 'http://decoding.dax.ru' );
HookID := SetWindowsHookEx( WH_MOUSE, MouseProc, 0, GetCurrentThreadId );
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if HookID <> 0 then
UnHookWindowsHookEx( HookID );
end;
|
Как сохранить исходник HTML из TWebBrowser.Document на диск?
// Способ первый
uses
{...,} ActiveX;
procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate( 'http://decoding.dax.ru' );
end;
procedure TForm1.SaveHTMLSourceToFile( FileName: string; WB: TWebBrowser );
var
PersistStream: IPersistStreamInit;
FileStream: TFileStream;
Stream: IStream;
SaveResult: HRESULT;
begin
PersistStream := WB.Document as IPersistStreamInit;
FileStream := TFileStream.Create( FileName, fmCreate );
try
Stream := TStreamAdapter.Create( FileStream, soReference ) as IStream;
SaveResult := PersistStream.Save( Stream, true );
if FAILED( SaveResult ) then
MessageBox( Handle, 'Ошибка при сохранении HTML файла', 'Ошибка', 0 );
finally
FileStream.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if SaveDialog1.Execute then
SaveHTMLSourceToFile( SaveDialog1.FileName, WebBrowser1 );
end;
// Способ второй
uses
{...,} MSHTML, ActiveX;
procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate( 'http://decoding.dax.ru' );
end;
procedure TForm1.Button1Click(Sender: TObject);
var
HTMLDocument: IHTMLDocument2;
PersistFile: IPersistFile;
begin
if SaveDialog1.Execute then
begin
HTMLDocument := WebBrowser1.Document as IHTMLDocument2;
PersistFile := HTMLDocument as IPersistFile;
PersistFile.Save( StringToOleStr( SaveDialog1.FileName ), System.True );
end;
end;
// Способ третий
uses
{...,} ActiveX;
procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate( 'http://decoding.dax.ru' );
end;
function WB_SaveHTMLCode( WebBrowser: TWebBrowser; FileName: TFileName ): Boolean;
var
ps: IPersistStreamInit;
fs: TFileStream;
sa: IStream;
begin
ps := WebBrowser.Document as IPersistStreamInit;
fs := TFileStream.Create( FileName, fmCreate );
try
sa := TStreamAdapter.Create( fs, soReference ) as IStream;
Result := Succeeded( ps.Save( sa, true ) );
finally
fs.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
WB_SaveHTMLCode( WebBrowser1, 'c:\test.txt' );
end;
|
Как реализовать масштабирование страницы в TWebBrowser?
procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate( 'http://decoding.dax.ru' );
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.OleObject.Document.Body.Style.Zoom := 0.75;
end;
// Zoom = 0.25 - 25% от оригинала
// Zoom = 0.5 - 50% от оригинала
// Zoom = 0.75 - 75% от оригинала
// Zoom = 1.0 - 100% от оригинала
// Zoom = 1.5 - 150% от оригинала
// Zoom = 2.0 - 200% от оригинала
// и так далее по аналогии
|
Как получить все линки из всех фреймов в TWebBrowser?
procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate( 'http://www.rsdn.ru' );
end;
procedure TForm1.Button1Click(Sender: TObject);
var
u: variant;
v: IDispatch;
s: string;
procedure RecurseLinks( htmlDoc: variant );
var
BodyElement : variant;
ElementCo: variant;
HTMLFrames: variant;
HTMLWnd : variant;
j, i : integer;
begin
if VarIsEmpty( htmlDoc ) then
Exit;
BodyElement := htmlDoc.body;
if BodyElement.tagName = 'BODY' then
begin
ElementCo := htmlDoc.links;
j := ElementCo.Length-1;
for i := 0 to j do
begin
u := ElementCo.item( i );
s := u.href;
ListBox1.Items.Add( s );
end;
end;
HTMLFrames := htmlDoc.Frames;
j := HTMLFrames.length-1;
for i := 0 to j do
begin
HTMLWnd := HTMLFrames.Item( i );
RecurseLinks( HTMLWnd.Document );
end;
end;
begin
v := WebBrowser1.document;
ListBox1.Clear;
RecurseLinks( v );
end;
|
Как найти и подсветить текст в TWebBrowser?
// Способ первый
procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate( 'http://decoding.dax.ru' );
end;
procedure SearchAndHighlightText( WB: TWebBrowser; aText: string );
var
i: integer;
begin
for i := 0 to WB.OleObject.Document.All.Length-1 do
begin
if Pos( aText, WB.OleObject.Document.All.Item( i ).InnerText ) <> 0 then
begin
WB.OleObject.Document.All.Item( i ).Style.Color := '#FFFF00';
WB.OleObject.Document.All.Item( i ).ScrollIntoView( true );
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SearchAndHighlightText( WebBrowser1, 'some text...' );
end;
// Способ второй
uses
{...,} MSHTML;
type
TForm1 = class(TForm)
private
procedure SearchAndHighlightText(aText: string);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate( 'http://decoding.dax.ru' );
end;
procedure TForm1.SearchAndHighlightText(aText: string);
var
tr: IHTMLTxtRange;
begin
if not WebBrowser1.Busy then
begin
tr := ( ( WebBrowser1.Document as IHTMLDocument2 ).body as IHTMLBodyElement ).createTextRange;
while tr.findText( aText, 1, 0 ) do
begin
tr.pasteHTML( '<span style="background-color: Lime; font-weight: bolder;">' +
tr.htmlText + '</span>' );
tr.scrollIntoView( true );
end;
end;
end;
|
Как перевести TWebBrowser в режим редактирования?
uses
MSHTML;
procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate( 'http://decoding.dax.ru' );
end;
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var
CurrentWB: IWebBrowser;
begin
CurrentWB := pDisp as IWebBrowser;
( CurrentWB.Document as IHTMLDocument2 ).DesignMode := 'On';
end;
// Некоторые клавиши, доступные в режиме редактирования:
// Ctrl + C - Копировать
// Ctrl + X - Вырезать
// Ctrl + V - Вставить
// Ctrl + B - Жирный текст
// Ctrl + I - Наклонный текст
// Ctrl + U - Подчеркнутый текст
// Ctrl + Z - Отменить
// Ctrl + Y - Повторить
// Ctrl + K - Гиперссылка
// Ctrl + F - Найти
// Ctrl + A - Выделить всё
// Ctrl + LeftMouseButtonClick - Выделить блок
|
Как показать диалог свойств TWebBrowser?
// Способ первый
procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate( 'http://decoding.dax.ru' );
end;
procedure TForm1.Button1Click(Sender: TObject);
var
eQuery: OLECMDF;
vaIn, vaOut: OleVariant;
begin
try
eQuery := Webbrowser1.QueryStatusWB( OLECMDID_PROPERTIES );
if ( eQuery and OLECMDF_ENABLED ) = OLECMDF_ENABLED then
Webbrowser1.ExecWB( OLECMDID_PROPERTIES, OLECMDEXECOPT_PROMPTUSER, vaIn, vaOut );
except
end;
end;
// Способ второй
procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate( 'http://decoding.dax.ru' );
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
try
WebBrowser1.ExecWB( OLECMDID_PROPERTIES, OLECMDEXECOPT_PROMPTUSER );
except
end;
end;
|
При использовании материала - ссылка на сайт обязательна
|
|