在ActiveForm上添加属性问题(200分)

  • 主题发起人 主题发起人 jiangxk
  • 开始时间 开始时间
J

jiangxk

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一个ActiveForm上添加了一个Conn属性
HRESULT _stdcall Conn([out, retval] BSTR * Value );
HRESULT _stdcall Conn([in] BSTR Value );

我在
function TActiveFormX.Get_Conn: WideString;
begin

end;
里面添加了 Result:=Conn;代码

可是编译得时候Result:=Conn总是报
[Error] ActiveFormImpl1.pas(357): Undeclared identifier: 'Conn'
得错
请问怎么解决这个问题
 
function TActiveFormX.Get_Conn: WideString;
begin
Result := Conn
?????
end;
这不是死循环吗?
因为你Conn取值的时候就是通过Get_Conn来取得的。
先不管你为什么报那种错误, 这样写是不行的。
 
对就是
function TActiveFormX.Get_Conn: WideString;
begin
Result := Conn
?????
end;
 
要申明Conn(全局)
 
在你的Impl单元中根本就没有Conn这个变量,因为这是在类型库中声明的一个属性,在Impl中
只能自定义一个变量维护从set_Conn中得到的Value。
 
你设置的Conn属性 是ActiveX对外的接口,对于ActiveX内部而言,
只是两个函数而以
function TActiveFormX.Get_Conn;
在外部获取该属性的值时触发

procedure TActiveFormX.Set_Conn;
在外部设置该属性的值时触发

你可以在ActiveForm中定义一个全局变量,用于做为该属性对内的接口
当然如果你定义的变量名与属性的名字相同也不会有冲突[8D]
 
你没明白属性与数据域的关系,
属性是访问数据的接口,数据域中存储着真正的数据.
 
哪位能发给我一个完整的简单的例子,多谢
jiangxk@sina.com
 
应该先替activexform窗口添加一个公开属性conn

property conn: string read GetConn write SetConn;

然后再在类型库中添加相同的属性
这样就可以用
function TActiveFormX.Get_Conn: WideString;
begin
result:=widestring(conn)
end;



 
ActiveForm中添加属性用
property conn: string read GetConn write SetConn;
好象是不行的。
你添加一个FConn的私有变量。
function TActiveFormX.Get_Conn: WideString;
begin
Result:=FConn
end;
 
添加一个全局变量,
然后添加一个property conn:widestring read GetConn write SetConn
就可以了
 
后退
顶部