Delphi 编写ActiveX控件(OCX控件)的知识和样例
2、在ActiveX控件中添加一个属性和实现的方法:
现在为这个ActiveX控件添加一个BRowSelect属性,这个属性本来是TStringGrid的Options属性的子属性,控制Grid是否处于行选中状态。在StringGridXControl1项目里打开ActiveX实现文件StringGridImp1.pas,选择【Edit】菜单里的【Add To Interface】命令(注意:只有打开了实现文件,这个命令才能使用),Delphi将弹出增加接口对话框。在对话框里的Interface项选择Properties/Methods-IStringGridX,然后在Declaration里写入BRowSelect属性的声明(如果你选中了对话框里的Syntax Helper选项,Delphi将随时提示你应该输入的内容):Property BRowSelect:WordBool;点击OK后,这个属性的相关信息将自动加入到控件的实现文件、类型库文件和对应的Pascal文件中。因为控件的接口是双向的,所以在Pascal文件里使用了读和写两个方法来实现控件的属性。
1>、Delphi自动在类型库里加入了以下声明:
property BRowSelect: WordBool read Get_BRowSelect write Set_BRowSelect; 这说明了:对于BRowSelect这个属性,有一个读方法Get_BRowSelect,一个写方法Set_BRowSelect。Delphi自动在控件的实现文件里加入了对BRowSelect属性的读和写访问方法的声明和实现:
function Get_BRowSelect: WordBool; safecall;
procedure Set_BRowSelect(Value: WordBool); safecall;
这时候这两个方法的实现体是空的,必须得自己填入具体实现的代码:
2>、在实现文件中编写代码
function TStringGridX.Get_BRowSelect: WordBool;
begin
//以下代码由自己根据需要编写,获得现在是否处于行选中状态
with FDelphiControl do
Result := goRowSelect in Options ;
end;
procedure TStringGridX.Set_BRowSelect(Value: WordBool);
begin
//以下代码由自己根据需要编写,设置行选中状态