WebbrowserEx

vložil Radek Červinka 12. února 2014 22:17

Někdy bych si fakt lištil. Pár hodin se snažím vylepšit TWebBrowser za pomocí implementace různých interface, TLB a dalších MS úchylností a pak mi najednou vyvstane na mysli, že v rámci porovnávání co nového bylo změněno v aktuální verzi jsem zaregistroval nějaký soubor WebBrowserEx.pas. Kouknu do adresáře source\internet a fakt tam něco je a světe div se - je to ve starších verzích (nejméně v Delphi XE).

Tato jednotka (i další v tom adresáří jsou zajímavé) je v podstatě vlhkým snem programátora používajícího TWebBrowser. Po jejím objevení jsem z našeho projektu odstranil několik jednotek. Neříkám, že je to vše spasující, ale rozhodně to řeší většinu problémů co jsem měl.

Jedná se o následníka TWebBrowser implementujícího různé interface:

  TWebBrowserEx = class(TWebBrowser, IUnknown, IDispatch, 
    IDocHostUIHandler, IDocHostUIHandler2,
    IDocHostShowUI, IServiceProvider, IOleCommandTarget, IHTMLChangeSink)

Třída publikuje např. (modří již vědí)

    procedure DoCommand(const Cmd: TOleEnum; InParam: OleVariant;
      OutParam: OleVariant); overload;
    procedure ForceSelectionChange;
    procedure Bold;
    function Focused: Boolean; override;
    procedure Italic;
    procedure Underline;
    procedure CutToClipBoard;
    procedure CopyToClipBoard;
    procedure PasteFromClipBoard;
    procedure Delete;
    procedure Undo;
    procedure Redo;
    procedure SelectAll;

    procedure Clear;
    function SelLength: Integer;
    function Selection: IHTMLSelectionObject;
    procedure CreateBookmark;
    procedure Overwrite;
    function GetViewLinkDocuments(CmdId: TOleEnum): IInterfaceList;
    function GetElementOfViewLinkDocument(ADocument: IHTMLDocument): IHTMLElement;
    function GetIsEditableElement(AElement: IHTMLElement; AFlags: TElementEditableFlags): Boolean;
    function GetIsContentPage: Boolean;

    { Print Operations }
    procedure Print;
    procedure PageSetup;
    procedure PrintPreview;

    { File Operations }
    procedure ClearDirtyFlag;
    procedure LoadFromStream(S: TStream);
    procedure LoadFromFile(const FileName: string); virtual;
    procedure SaveToStream(S: TStream);
    procedure SaveToFile(const FileName: string); virtual;

    property Document2: IHTMLDocument2 read GetDocument2;
    property Document3: IHTMLDocument3 read GetDocument3;
    property Document4: IHTMLDocument4 read GetDocument4;

    property CurrentElement: IHTMLElement read GetCurrentElement;
    property CurrentElementType: TCurrentElementType read GetCurrentElementType;

a další včetně tuny událostí.

Tohle opravdu bolelo.

facepalm

Tagy:

Novinky v Delphi

Komentáře

13.2.2014 9:41:49 #

daks

Jen pro informaci - unitu jsem našel i v D2006.

daks

Komentování ukončeno

Naše nabídka

MVP
Ing. Radek Červinka - Embarcadero MVP
profil na linkedin, Twitter:@delphicz

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj speciálního software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy).

love Delphi

O Delphi.cz

Delphi je moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64, Mac OSX, Linux a na iPhone a Android.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Poslední komentáře

Comment RSS

Dle měsíců