起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 544|回复: 1

【分享】有关利用资源集实现公共过程或方法的说明

[复制链接]
发表于 2004-6-29 13:33:51 | 显示全部楼层 |阅读模式
资源集是一种特殊的业务单元,可以将它看成一个DLL文件,当其他的对象使用这个资源集的时候,

就是在调用这个DLL。

资源集包括窗体、图标、位图、页眉页脚四种形式,我们这里主要讲解如何利用资源集创建一个静态

的过程或方法,便于其他的功能或信息调用。

比如我们在资源集里创建一个调用存储过程数据集的过程,这样其他功能就可以直接调用这个过程,

实现一个公共方法的目的。

1、创建一个资源集,在资源集中声明静态过程
    static procedure CallStoredProc(Owner: TForm);

方法实现代码:
static procedure TZYJ2.CallStoredProc(Owner: TForm);
var
  lDataParam1, lDataParam2: TDataParam;
  ResultMessage: string;
  DataSetCCGCSJJ2: TStoredProcDataSet;
begin
  DataSetCCGCSJJ2 := TStoredProcDataSet.Create(Owner);
  try
    DataSetCCGCSJJ2.ConnectionString := 'DATABASEURL=Biz:\LSCS\SJK1.Database';
    DataSetCCGCSJJ2.StoredProcName := 'dbo.test1';
    DataSetCCGCSJJ2.Params.Clear;
    lDataParam1 := DataSetCCGCSJJ2.Params.CreateParam(TFieldType.ftInteger, 'Result',

TParamType.ptResult);
    lDataParam1 := DataSetCCGCSJJ2.Params.CreateParam(TFieldType.ftString, '@input11',

TParamType.ptInput);
    lDataParam1.AsString := 'my name is input1';
    lDataParam2 := DataSetCCGCSJJ2.Params.CreateParam(TFieldType.ftString, '@output11',

TParamType.ptOutput);
    DataSetCCGCSJJ2.Open;
  finally
    lDataParam1.Free;
    lDataParam2.Free;
    DataSetCCGCSJJ2.Free;
  end;
end;

这样我们就实现了一个公共的方法调用存储过程。
在其他的功能中引用上面创建的数据集,即可直接调用此方法。

procedure TMainForm.Button2Click(Sender: TObject);
begin
  TZYJ2.CallStoredProc(self);
end;

2、如果在功能或者信息成直接调用这个方法是实现不通的,因为上面的方法参数是TForm,所以只能

在窗体中调用。
可以声明方法:
    static procedure CallStoredProc(Owner: TBizObject);
代码同上一样。

3、在一个资源集中使用了2个同名的方法,就需要使用overload重载就行声明了。
    static procedure CallStoredProc(Owner: TBizObject); overload;
    static procedure CallStoredProc(Owner: TForm); overload;

以上过程就利用资源集中的方法实现了静态的公共方法。
回复

使用道具 举报

发表于 2004-6-29 14:10:42 | 显示全部楼层
在任何对象的静态方法中,不能使用Self
因为静态方法是不需要创建对象的,那么也就不会有对象自身self了。

如果在资源集中不使用静态方法,就可以使用self了,但是前提是一定要Create这个资源集才可以。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-3-29 17:32 , Processed in 0.039246 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表