Блог по программированию в среде Delphi

Поиск по блогу

Есть идея по созданию интересной программы?

Опиши тут и я по возможности постараюсь это реализовать специально для тебя! Без $ ))
Показаны сообщения с ярлыком TWebBrowser. Показать все сообщения
Показаны сообщения с ярлыком TWebBrowser. Показать все сообщения

понедельник, 23 апреля 2012 г.

OnClick WebBrowser

Автор: James D. Rofka
 
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, SHDocVw;

type
  TForm1 = class(TForm)
    WebBrowser1: TWebBrowser;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  protected
    procedure MyMessages(var Msg: TMsg; var Handled: Boolean);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnMessage := MyMessages;
end;

procedure TForm1.MyMessages(var Msg: TMsg; var Handled: Boolean);
var
  X, Y: Integer;
  document, E: OleVariant;
begin
  Handled := False;
  if (WebBrowser1 = nil) or (Msg.message <> WM_LBUTTONDOWN) then
    Exit;

  Handled := IsDialogMessage(WebBrowser1.Handle, Msg);

  if (Handled) then
  begin
    case (Msg.message) of
      WM_LBUTTONDOWN:
        begin
          X := LOWORD(Msg.lParam);
          Y := HIWORD(Msg.lParam);
//          document := WebBrowser1.document;
//          E := document.elementFromPoint(X, Y);
          ShowMessage('You clicked on:' + #10);// + E.outerHTML);
        end;
    end;
  end;
end;

воскресенье, 26 сентября 2010 г.

Диалоговое окно WebBrowser ошибка сценария

Избавляемся от окна путем установки значения свойства Silent:=True

WebBrowser1.Silent:=True;

Свойство Silent запрет демонстрации ошибок сценария на сайте

Этот документ был изменен. Сохранить изменения?

Это диалоговое окно возникает только когда  WebBrowser находиться в режиме редактора и происходит загрузка другого документа, а в документ который был первоначально загружен были произведены изменения.
Чтобы избавиться от этого диалогового окна следует отключить режим редактора в WebBrowser и загрузить документ после чего снова включить режим редактора.
Включения редактора в WebBrowser я повесил на событие возникающие по окончанию загрузки документа в WebBrowser NavigateComplite.
.....
WebBrowser1.OnNavigateComplete2: = NavigateComplite;
(WebBrowser1.Document as IHTMLDocument2).designMode := 'off';
WebBrowser1.Navigate('Документ');
 .....
procedure NavigateComplite (ASender: TObject; const pDisp: IDispatch; var URL: OleVariant);
begin
  (WebBrowser1.Document as IHTMLDocument2).designMode := 'On';

end;

воскресенье, 2 мая 2010 г.

Вставка HTML кода в TWebBrowser Delphi 7

procedure TextToWebBrowser(Text: string; var WB: TWebBrowser);
var
  Document: IHTMLDocument2;
  V: OleVariant;
begin
  // Документ необходимо создать только один раз за текущую сессию работы
  if WB.Document = nil then
    WB.Navigate('about:blank');
  // Ожидаем создания документа и позволяем обрабатывать все сообщения
  while WB.Document = nil do
    Application.ProcessMessages;
  Document := WB.Document as IHtmlDocument2;
  // Вставляем текст (до 2Гб)
  {следующие строчки внесены недавно - старый вариант функции не работал под XP}
  V := VarArrayCreate([0, 0], varVariant);
  V[0] := Text;
  Document.Write(PSafeArray(TVarData(v).VArray));
  Document.Close;
end;

пятница, 12 марта 2010 г.

Получить весь HTML из TWebBrowser

Нашел на просторах интернета функцию с использованием DOM которая позволяет получить исходный текст страницы из  WebBrowser'а не используя особых ухищрений


//получить весь html
function THTMLEditor.html_GetFullHTML:string;
var
  wbEll : IHTMLElement;
begin
   Result:='';
   if Assigned(WebBrowser1.Document) then
   begin
     wbEll := (WebBrowser1.Document AS IHTMLDocument2).body;
     while wbEll.parentElement <> nil do
     begin
       wbEll := wbEll.parentElement;
     end;
     Result := wbEll.outerHTML;
   end;
end;

функция рабочая только необходимо добавить в uses ...... MSHTML;