事件方法必须是类的方法

我的本意是想在一个通用 unit 单元中定义一个通用的查询函数,在这个通用查询函数中调用字段的ongettext方法来解析值为代码的字段(如:表的性别字段存储的是代码, '1' :男, '2' 女),在DBGridEh中性别显示的是名称男或女,而表中字段存储的是 '1' '2'
由于想尽可能做的通用,不希望用联合查询,要用Ongettext
难道要在每个TADOQuery控件中写Ongettext事件,可是所有的TADOQuery都放在了datamodule1中,查询sql是在不同窗体中写的
要怎么做?
我的本意是想在一个通用unit单元中定义一个通用的查询函数,在这个通用查询函数中调用字段的ongettext方法来解析值为代码的字段(如:表的性别字段存储的是代码,'1':男,'2'女),在DBGridEh中性别显示的是名称男或女,而表中字段存储的是'1'或'2'
由于想尽可能做的通用,不希望用联合查询,要用Ongettext
难道要在每个TADOQuery控件中写Ongettext事件,可是所有的TADOQuery都放在了datamodule1中,查询sql是在不同窗体中写的
要怎么做?
 
type
   TEventHandlers = class { 建一个虚拟类}
       procedure GetName(Sender: TField; var Text: String; DisplayText: Boolean);
   end;
  
...
var
  EvHandler:TEventHandlers;
  
implementation
  
{方法实现}
procedure TEventHandlers.GetName(Sender: TField; var Text: String; DisplayText: Boolean);
begin
    with datamodule1.query1 do
    begin
        close;
        sql.Clear;
        sql.Add('select [name] from [sex] where [code]=:x');
        Parameters[0].Value:=Sender.Value;
        open;
        Text:=Fields[0].AsString;
    end;
end;
  
  
  
{使用}
datamodule1.query1.FieldByName('XB').OnGetText:= EvHandler.GetName;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值