起步软件技术论坛-X3

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

【结】[问题]DataGrid右键bug?**

[复制链接]
发表于 2008-6-16 14:19:29 | 显示全部楼层 |阅读模式
功能一 用代码自定义了DataGrid的右键菜单,如第一张图
问题是只要打开这个功能,所有别的功能的DataGrid的右键菜单都和功能一一样,关闭功能一后就又都恢复了。见图2和3

1.jpg

119.94 KB, 下载次数: 82

回复

使用道具 举报

 楼主| 发表于 2008-6-16 14:20:13 | 显示全部楼层
图2

2.jpg

97.19 KB, 下载次数: 80

回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-16 14:20:47 | 显示全部楼层
图3

3.jpg

120.51 KB, 下载次数: 78

回复 支持 反对

使用道具 举报

发表于 2008-6-16 14:24:57 | 显示全部楼层
楼主是怎么设置的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-16 14:32:55 | 显示全部楼层
图1是通过代码来的。
procedure TLBCX.DataGrid1PopupMenu(const Sender: TPopupMenu; var UseDefault, Handled: Boolean);
var
  NDeal,NBreak1,NDetail,NBreak2: TMenuItem;
  i: integer;
begin
if DataSetBroker1.DataSet.RecordCount <> 0 then
begin
  if  not (Sender.Items.Items[0].Caption = '处理(&D)') then
  begin
   NDeal:= TMenuItem.Create(self);
   NBreak1:= TMenuItem.Create(self);
   NDetail:= TMenuItem.Create(self);
   NBreak2:= TMenuItem.Create(self);
   NDeal.Caption:= '处理(&D)';
   NBreak1.Caption:= '-';
   NDetail.Caption:= '详细(&V)';
   NBreak2.Caption:= '-';
   Sender.Items.Insert(0,NBreak2);
   Sender.Items.Insert(0,NDetail);
   Sender.Items.Insert(0,NBreak1);
   Sender.Items.Insert(0,NDeal);
   NDetail.OnClick:= ShowDetail;
   NDeal.OnClick:= RunProcFunc;
  end;

  if NeedProcess then
    Sender.Items.Items[0].Enabled:= True
  else
    Sender.Items.Items[0].Enabled:= False;
end
else
begin
  if Sender.Items.Items[0].Caption = '处理(&D)' then
   for i:=1 to 4 do
     Sender.Items.Delete[0];
end;
  UseDefault:= True;
end;

其他的datagrid都是默认的,没改
回复 支持 反对

使用道具 举报

发表于 2008-6-16 15:37:09 | 显示全部楼层
DataGrid使用的默认右键菜单是一个全局的公共对象,你在功能1中修改后,会影响其他功能DataGrid。

在切换功能时,需要用代码把它还原成默认方式。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-16 15:40:00 | 显示全部楼层
这个要如何判断啊
给个提示吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-16 15:41:59 | 显示全部楼层
结吧,知道怎么做了
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-18 00:22 , Processed in 0.041303 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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