一个功能要实现这样,delphi中有这样一个函数吗?

解决方案 »

  1.   

    >>求救:如何才能判断用户执行的是form1中的dbgrid的ondblclick事件还是form2中的dbgrid的ondblclick事件? 檢查 sender 的 parent 就可
      

  2.   

    是啊,事件中传过来的sender往往很有用的,特别是你需要多个控件使用一个事件处理的时候
      

  3.   

    同aiirii(ari-爱的眼睛),檢查 Sender 的 Owner 更好
      

  4.   

    if Sender = from1.DBGrid1 then
    begin
      //
    end
    else
    if Sender = from2.DBGrid1 then
    begin
      //
    end;
      

  5.   

    在事件里sender是一个参数名啊。。看看你的事件函数的参数
    然后判断sender.owner是不是form1    if (sender as TDBGrid).Owner=form1 then
        begin
          showmessage('form1');
        end;
      

  6.   

    我是这样做的,可还是不对呀?
    if sender = form2.dbgrid1 then
        begin
        str_zgid:= dbgrid1.DataSource.DataSet.FieldValues['zg_id'];
        end
        else
        if (sender = BaseQueryForm.dbgrid1 then
        begin
        str_zgid:=query_in_zgid ;//全局变量赋值
        end;
    ...........//对数据库进行数据库的update操作
      

  7.   

    各位这样编译是通过了,可执行操作时出错,出错信息是:invalid class typecast 不知为什么
      

  8.   

    我是如你说的那样的,可执行时出错如上面的信息
    if  (sender as TDBGrid).Owner=form2.DBGrid1 then
        begin
        str_zgid:= dbgrid1.DataSource.DataSet.FieldValues['zg_id'];
        end
        else
        if (sender as TDBGrid).Owner=BaseQueryForm.DBGrid1 then
        begin
        str_zgid:=query_in_zgid ;
        end;
      

  9.   

    aiirii(ari-爱的眼睛) ( ) 说的不全面:
      如果dbGrid控件放在Tframe中然后放在form上呢
      fucntion fnGetOwner(sender:TComponent):Tform;
      begin
        Result:=Sender;
        while Result.Owner<>Tform do
        begin
          Result:=Result.Owner;
        end;
      end;
      //
      if fnGetOwner(Owner) then.Owner= from1.DBGrid1 then
    .....
      

  10.   

    我是如你说的那样的,可执行时出错如上面的信息
    if  (sender as TDBGrid).Owner=form2.DBGrid1 then //这里不对
        begin
        str_zgid:= dbgrid1.DataSource.DataSet.FieldValues['zg_id'];
        end
        else
        if (sender as TDBGrid).Owner=BaseQueryForm.DBGrid1 then
        begin
        str_zgid:=query_in_zgid ;    end;--------------------------------------------------------
    改成if  (sender as TDBGrid).Owner=form2 then //这里不对
        begin
        str_zgid:= dbgrid1.DataSource.DataSet.FieldValues['zg_id'];
        end
        else
        if (sender as TDBGrid).Owner=BaseQueryForm.DBGrid1 then
        begin
        str_zgid:=query_in_zgid ;
        end
    楼上说得也有道理...