首页  编辑  

使ActiveForm获取网页中参数

Tags: /超级猛料/OS.操作系统/IE.扩展/Com扩展、接口/   Date Created:
我在Borland新闻组中找到如何使ActiveForm获取网页中参数的方法:
Hmmm.  I followed an example from one of these newsgroups and got it working without a hitch.  Did you declare support for IPersistPropertyBag in the class definition?
Here is what mine looks like, with non-essentials removed:
interface

type
    TMyActiveForm = class(TActiveForm, IMyActiveForm, IPersistPropertyBag)
    protected
        // IPersistPropertyBag
        function IPersistPropertyBag.GetClassID = PersistPropertyBagGetClassID;
        function IPersistPropertyBag.InitNew = PersistPropertyBagInitNew;
        function IPersistPropertyBag.Load = PersistPropertyBagLoad;
        function IPersistPropertyBag.Save = PersistPropertyBagSave;
        function PersistPropertyBagInitNew: HResult; stdcall;
        function PersistPropertyBagGetClassID(out classID: TCLSID): HResult; stdcall;
        function PersistPropertyBagLoad(const pPropBag: IPropertyBag; const pErrorLog: IErrorLog): HResult; stdcall;
        function PersistPropertyBagSave(const pPropBag: IPropertyBag; fClearDirty: BOOL; fSaveAllProperties: BOOL): HResult; stdcall;
    end;

implementation

(*
  * IPersistPropertyBag
*)
function TMyActiveForm.PersistPropertyBagLoad(const pPropBag: IPropertyBag; const pErrorLog: IErrorLog): HResult;
var
    v: OleVariant;
begin
    if pPropBag.Read('ShowLegend', v, pErrorLog) = S_OK then
        Set_ShowLegend(v);
    if pPropBag.Read('XMLDSOID', v, pErrorLog) = S_OK then
        Set_XMLDSOID(v);
    result := S_OK;
end;

function TMyActiveForm .. PersistPropertyBagSave(const pPropBag: IPropertyBag;
    fClearDirty, fSaveAllProperties: BOOL): HResult;
var
    v: OleVariant;
begin
    v := FShowLegend;
    pPropBag.Write('ShowLegend', v);
    v := FXMLDSOID;
    pPropBag.Write('XMLDSOID', v);
    result := S_OK;
end;

function TMyActiveForm .. PersistPropertyBagGetClassID(out classID: TCLSID): HResult;
begin
    try
        classID := Class_MyActiveForm;
        result := S_OK;
    except
    end;
end;

function TMyActiveForm.PersistPropertyBagInitNew: HResult;
begin
    try
        result := S_OK;
    except
    end;
end;

end.