FThread : TThreadItem;
FLastSize : Integer;
FRepaint : Boolean;
- FMovement : string; ///< \83X\83N\83\8d\81[\83\8b\90æ\83A\83\93\83J\81[
+ //FMovement : string; ///< \83X\83N\83\8d\81[\83\8b\90æ\83A\83\93\83J\81[
public
destructor Destroy; override;
property Event : THTMLDocumentEventSink read FEvent write FEvent;
property Thread : TThreadItem read FThread write FThread;
property LastSize : Integer read FLastSize write FLastSize;
property Repaint : Boolean read FRepaint write FRepaint;
- property Movement : string read FMovement write FMovement;
+ //property Movement : string read FMovement write FMovement;
+ procedure Move(const AName: string); overload;
+ procedure Move(scroll: Integer); overload;
+ procedure IDAnchorPopup(Abody :string);
+ procedure OpenFindDialog;
end;
// BrowserRecord\82É\82Â\82¢\82Ä\82¢\82éFBrowser\82ð\8aO\82·
procedure ReleaseBrowser( BRecord: TBrowserRecord);
implementation
+
+uses
+ Forms, SysUtils;
+
// *************************************************************************
//! BrowserRecord\82É\82Â\82¢\82Ä\82¢\82éFBrowser\82ð\8aO\82·
// *************************************************************************
Self.Thread.ScrollTop := doc.Body.ScrollTop;
end;
end;
- //TOleControl(Self.FBrowser).Visible := false;
ShowWindow(Self.FBrowser.Handle, SW_HIDE);
end;
end;
+// *************************************************************************
+//! \83u\83\89\83E\83U\82ð\83X\83N\83\8d\81[\83\8b\82³\82¹\82é
+// *************************************************************************
+procedure TBrowserRecord.Move(const AName: string);
+var
+ top: Integer;
+ item: OleVariant;
+begin
+ //\83u\83\89\83E\83U\82ª\95t\82¢\82Ä\82é\82Æ\82«\82¾\82¯\8f\88\97\9d\82·\82é
+ if (Self.Browser <> nil) then begin
+ //\83u\83\89\83E\83U\82ª\83f\81[\83^\82Ì\93Ç\82Ý\8d\9e\82Ý\92\86\82Ì\8e\9e\82Í\93Ç\82Ý\8d\9e\82Ý\82ð\91Ò\82Â
+ while (Self.Browser.ReadyState <> READYSTATE_COMPLETE) and
+ (Self.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
+ Sleep(1);
+ Application.ProcessMessages;
+ end;
+
+ try
+ top := 0;
+ item := OleVariant( Self.Browser.Document as IHTMLDocument2)
+ .anchors.item(OleVariant(AName));
+ item.focus();
+ repeat
+ top := top + item.offsetTop;
+ item := item.offsetParent;
+ until AnsiCompareText(item.tagName, 'body' ) = 0;
+ OleVariant(Self.Browser.Document as IHTMLDocument2).body.scrollTop := top;
+ except
+ end;
+ end;
+end;
+// *************************************************************************
+//! \83u\83\89\83E\83U\82ð\83X\83N\83\8d\81[\83\8b\82³\82¹\82é
+// *************************************************************************
+procedure TBrowserRecord.Move(scroll: Integer);
+begin
+ //\83u\83\89\83E\83U\82ª\95t\82¢\82Ä\82é\82Æ\82«\82¾\82¯\8f\88\97\9d\82·\82é
+ if (Self.Browser <> nil) then begin
+ //\83u\83\89\83E\83U\82ª\83f\81[\83^\82Ì\93Ç\82Ý\8d\9e\82Ý\92\86\82Ì\8e\9e\82Í\93Ç\82Ý\8d\9e\82Ý\82ð\91Ò\82Â
+ while (Self.Browser.ReadyState <> READYSTATE_COMPLETE) and
+ (Self.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
+ Sleep(1);
+ Application.ProcessMessages;
+ end;
+
+ try
+ OleVariant(Self.Browser.Document as IHTMLDocument2).body.scrollTop
+ := OleVariant(Self.Browser.Document as IHTMLDocument2).body.scrollTop
+ + scroll;
+ except
+ end;
+ end;
+end;
+//ID\83A\83\93\83J\81[\92Ç\89Á
+procedure TBrowserRecord.IDAnchorPopup(Abody :string);
+const
+ OUTER_HTML = '<p id="idSearch"></p>';
+ HIDDEN = 'hidden';
+var
+ firstElement: IHTMLElement;
+ document: IHTMLDocument2;
+ docAll: IHTMLElementCollection;
+ doc : Variant;
+ nCSS : string;
+begin
+ if Self.Browser <> nil then begin
+ try
+ document := Self.Browser.Document as IHTMLDocument2;
+
+ if Assigned(document) then begin
+ docAll := document.all;
+ firstElement := docAll.item('idSearch', 0) as IHTMLElement;
+ if (Assigned(firstElement)) then begin
+ if Length(Abody) > 0 then begin
+ doc := Idispatch( olevariant(Self.Browser.ControlInterface).Document) as IHTMLDocument2;
+ nCSS := '<p id="idSearch" style="position:absolute;top:' + IntToStr(doc.Body.ScrollTop + 10) + 'px;right:5px;' //
+ + 'background-color:window; border:outset 1px infobackground; z-index:10; overflow-y:auto; border-top:none">'
+ + Abody + '</p>';
+ firstElement.outerHTML := nCSS;
+ firstElement.style.visibility := 'visible';
+ end else begin
+ firstElement.outerHTML := OUTER_HTML;
+ firstElement.style.visibility := HIDDEN;
+ end;
+ end else if (Assigned(firstElement)) then begin
+ firstElement.outerHTML := OUTER_HTML;
+ firstElement.style.visibility := HIDDEN;
+ end;
+ end;
+ except
+ end;
+ end;
+end;
+{
+\brief \8c\9f\8dõ\83_\83C\83A\83\8d\83O\8cÄ\82Ñ\8fo\82µ
+}
+procedure TBrowserRecord.OpenFindDialog();
+const
+ CGID_WebBrowser: TGUID = '{ED016940-BD5B-11cf-BA4E-00C04FD70816}';
+ HTMLID_FIND = 1;
+var
+ CmdTarget : IOleCommandTarget;
+ vaIn, vaOut: OleVariant;
+ PtrGUID: PGUID;
+begin
+ if (Self.Browser <> nil) and (Self.Browser.Document <> nil) then begin
+ //\83u\83\89\83E\83U\82ª\83f\81[\83^\82Ì\93Ç\82Ý\8d\9e\82Ý\92\86\82Ì\8e\9e\82Í\93Ç\82Ý\8d\9e\82Ý\82ð\91Ò\82Â
+ while (Self.Browser.ReadyState <> READYSTATE_COMPLETE) and
+ (Self.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
+ Sleep(1);
+ Application.ProcessMessages;
+ end;
+ vaIn := 0;
+ vaOut := 0;
+ New(PtrGUID);
+ PtrGUID^ := CGID_WebBrowser;
+ try
+ try
+ if Self.Browser.Document
+ .QueryInterface(IOleCommandTarget, CmdTarget)
+ = S_OK then begin
+ if CmdTarget <> nil then begin
+ try
+ CmdTarget.Exec(PtrGUID, HTMLID_FIND, 0, vaIn, vaOut);
+ finally
+ CmdTarget._Release;
+ end;
+ end;
+ end;
+ except
+ end;
+ finally
+ Dispose(PtrGUID);
+ end;
+ end;
+end;
end.