起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 227|回复: 7

【结贴】V3002关于Sender转换的问题**

[复制链接]
发表于 2008-2-27 10:36:27 | 显示全部楼层 |阅读模式
目的:TDataGrid的右键删除。
在2603版本里做了如下实现,ActionList中添加了一个Action(Name为ActionDel),其OnExecute代码如下:
procedure TTMPIORDERINFOADDFD.ActionDelExecute(Sender: TObject);
var lvDestDs:TDataSet;
begin
lvDestDs:=TDataSet(TBizDataSetAction(Sender).CurrentDataSource.DataSet);
if lvDestDS = nil then exit;
if lvDestDS.IsEmpty then exit;
...
lvDestDS.delete;
end;
某个PopupMenu(Name为PMenuDel)的一个子菜单项的Action引用ActionDel,然后某个DataGrid(Name为DGrid1)的PopupMenu属性引用PMenuDel。
上面这实现在V2603运行后,对DGrid1的某条数据右键删除,不会提示错误, 但在3002版本就运行不通过了,提示如下图的异常,出错位置是 lvDestDs:=TDataSet(TBizDataSetAction(Sender).CurrentDataSource.DataSet) ,

sender1q.jpg

15.79 KB, 下载次数: 159

回复

使用道具 举报

 楼主| 发表于 2008-2-27 15:44:47 | 显示全部楼层
人呢?大侠们,指点一下了
回复 支持 反对

使用道具 举报

发表于 2008-2-28 09:39:53 | 显示全部楼层
不要对sender操作,直接对当前datagrid的dataset操作。
回复 支持 反对

使用道具 举报

发表于 2008-2-28 09:48:18 | 显示全部楼层
TBizDataSetAction(Sender).CurrentDataSource 是空的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-28 09:52:43 | 显示全部楼层
由于有多个DataGrid都有同样的引用PMenuDel需要,才直接对sender进行操作的。现在问题是1)lvDestDs:=TDataSet(TBizDataSetAction(Sender).CurrentDataSource.DataSet) 这一个在V2603里运行是OK的,在V3002里为什么就不行了?
另注:在V3002里,我把lvDestDs:=TDataSet(TBizDataSetAction(Sender).CurrentDataSource.DataSet) 换成lvDestDs:=TDataSet(TDataGrid(TPopupMenu(TMenuItem(Sender).getparentcomponent).popupcomponent).DataSource.DataSet)就可以了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-28 09:55:36 | 显示全部楼层
最初由 yancm 发布
[B]TBizDataSetAction(Sender).CurrentDataSource 是空的 [/B]


是空的知道,我有跟踪过,但在2603是可以的,在3002就不行了,为什么呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-29 16:45:50 | 显示全部楼层
这问题你们重现出来了么?
回复 支持 反对

使用道具 举报

发表于 2008-5-13 14:43:51 | 显示全部楼层
可以重现,可以用TBizDataSetAction,选上自动侦测属性
procedure TMainForm.BizDataSetAction1Execute(Sender: TObject);
var
  lvDestDs:TDataSet;
begin
  lvDestDs := TDataSet(BizDataSetAction1.CurrentDataSource.DataSet);
  if lvDestDS = nil then exit;
  if lvDestDS.IsEmpty then exit;
  lvDestDS.delete;
end;

procedure TMainForm.BizDataSetAction1Update(Sender: TObject);
begin
  (Sender as TBizDataSetAction).Enabled := True;
end;


先结帖了,有问题请发新帖。
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-12 17:30 , Processed in 0.046579 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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