I
import
Unregistered / Unconfirmed
GUEST, unregistred user!
我在Borland新闻组中找到如何使ActiveForm获取网页中参数的方法:
Hmmm. I followed an example from one of these newsgroups and got it w
orking
without a hitch. Did you declare support for IPersistPropertyBag in t
he
class definition?
Here is what mine looks like, with non-essentials removed:
class TMyActiveForm = class(TActiveForm, IMyActiveForm,
IPersistPropertyBag)
protected:
// IPersistPropertyBag
function IPersistPropertyBag.GetClassID = PersistPropertyBagGetCla
ssID;
function IPersistPropertyBag.InitNew = PersistPropertyBagInitNew;
function IPersistPropertyBag.Load = PersistPropertyBagLoad;
function IPersistPropertyBag.Save = PersistPropertyBagSave;
function PersistPropertyBagInitNew: HResult; stdcall;
function PersistPropertyBagGetClassID(out classID: TCLSID): HResul
t;
stdcall;
function PersistPropertyBagLoad(const pPropBag: IPropertyBag; cons
t
pErrorLog: IErrorLog): HResult; stdcall;
function PersistPropertyBagSave(const pPropBag: IPropertyBag;
fClearDirty: BOOL; fSaveAllProperties: BOOL): HResult; stdcall;
end;
implementation
(*
* IPersistPropertyBag
*)
function TMyActiveForm.PersistPropertyBagLoad(const pPropBag: IPropert
yBag;
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: IProper
tyBag;
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: TCL
SID):
HResult;
begin
try
classID := Class_MyActiveForm;
Result := S_OK;
except
end;
end;
function TMyActiveForm.PersistPropertyBagInitNew: HResult;
begin
try
result := S_OK;
except
end;
end;
Hmmm. I followed an example from one of these newsgroups and got it w
orking
without a hitch. Did you declare support for IPersistPropertyBag in t
he
class definition?
Here is what mine looks like, with non-essentials removed:
class TMyActiveForm = class(TActiveForm, IMyActiveForm,
IPersistPropertyBag)
protected:
// IPersistPropertyBag
function IPersistPropertyBag.GetClassID = PersistPropertyBagGetCla
ssID;
function IPersistPropertyBag.InitNew = PersistPropertyBagInitNew;
function IPersistPropertyBag.Load = PersistPropertyBagLoad;
function IPersistPropertyBag.Save = PersistPropertyBagSave;
function PersistPropertyBagInitNew: HResult; stdcall;
function PersistPropertyBagGetClassID(out classID: TCLSID): HResul
t;
stdcall;
function PersistPropertyBagLoad(const pPropBag: IPropertyBag; cons
t
pErrorLog: IErrorLog): HResult; stdcall;
function PersistPropertyBagSave(const pPropBag: IPropertyBag;
fClearDirty: BOOL; fSaveAllProperties: BOOL): HResult; stdcall;
end;
implementation
(*
* IPersistPropertyBag
*)
function TMyActiveForm.PersistPropertyBagLoad(const pPropBag: IPropert
yBag;
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: IProper
tyBag;
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: TCL
SID):
HResult;
begin
try
classID := Class_MyActiveForm;
Result := S_OK;
except
end;
end;
function TMyActiveForm.PersistPropertyBagInitNew: HResult;
begin
try
result := S_OK;
except
end;
end;