Foxtable(狐表)用户栏目专家坐堂 → 窗口中的Table,如何禁用 “Ctrl+鼠标单击表头”排序的功能?


  共有21268人关注过本帖树形打印复制链接

主题:窗口中的Table,如何禁用 “Ctrl+鼠标单击表头”排序的功能?

帅哥哟,离线,有人找我吗?
cpayinyuan
  21楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2010/6/9 9:55:00 [只看该作者]

以下是引用狐狸爸爸在2010-6-9 9:49:00的发言:

我在告诉你正确的方法,你自己想得太多。

 

你可以同时根据日期和_Identify设计流水账,日期优先,_identify次之。

 

在没有插入行功能的时候,就是这么处理的。

[此贴子已经被作者于2010-6-9 9:49:11编辑过]

   不知贺老师认真看19楼的最后一段话了吗?明白我的意思没有?

 

   要是我还没有说明白,要不这样:贺老师拿您自己以前做的例子(没有用插入行之前的),随便输入几条记录,但日期先后顺序与_Identify顺序不要完全一致(即不要完全按照日期先后增加行),你看一下在显示流水账时如果不排序到底会是什么样子?

 

    我已经说了几次了,计算工出正确的结果,与显示出正确的结果,完全是两码事。我的流水账就是仿照您的例子做的,计算结果非常正确,但流水账在显示是必须按照日期和_Identify排序,这也是必须的!两者并无任何矛盾。

 

    再强调一遍,我只是需要一个功能:禁用Table中的鼠标单击排序,这与您流水账的设计无任何矛盾之处。您的流水账设计也非常经典,这一点无须多讲,但这并不影响在很多时候,非常有必要增加一个:禁用Table中的鼠标单击排序的功能。

[此贴子已经被作者于2010-6-9 9:58:26编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  22楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47480 积分:251289 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/6/9 9:56:00 [只看该作者]

你没看到我20楼后面还有一段话吗?

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  23楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2010/6/9 10:04:00 [只看该作者]

以下是引用狐狸爸爸在2010-6-9 9:56:00的发言:
你没看到我20楼后面还有一段话吗?

 

     刚才的确没看到,现在看了。但我在21楼后面也补充了一段话,也希望您认真看一下。

 

     贺老师是软件专家,是我们大家都非常尊敬的老师,这一点不容置疑。但贺老师在其他专业方面未必是专家,我想强调的是:在财务账中(与流水账类似,但会计制度对会计账要求更严格),账目是必须100%的禁止用鼠标排序的。如果不能禁止,会让用户感觉设计项目的人完全不懂财务!

 

     再次重复一遍,我的要求很简单:在Table中禁止鼠标单击排序,这不是为我一个人提供方便,而是在很多时候都有这样的需求,希望贺老师解决一下!


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  24楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47480 积分:251289 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/6/9 10:08:00 [只看该作者]

你可以自己禁止排序,SystemIdle事件:

 

If Tables("XXX").Sort <> "日期"  Then

   Tables("XXX").Sort = "日期"

End If

 

这样XXX表永远按照日期排序。

 


 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  25楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2010/6/9 10:18:00 [只看该作者]

以下是引用狐狸爸爸在2010-6-9 10:08:00的发言:

你可以自己禁止排序,SystemIdle事件:

 

If Tables("XXX").Sort <> "日期"  Then

   Tables("XXX").Sort = "日期"

End If

 

这样XXX表永远按照日期排序。

 

    这样可以解决,但好像不是一个很好的办法。因为在财务系统中,账目是最主要的功能,一方面对账目管理的要求比较高(例如必须禁止用户单击排序,还有一些其他的要求),另一方面,与账目相关的表非常多,如果都用这种方式处理,估计会影响系统执行的效率。而且,如果这样设计,即使不在窗口打开Table时,账目数据的变更也可能会造成重排序,但不在窗口显示时这样的排序可能是毫无意义的,但却会更加大了系统的负担,影响效率。所以,我认为加在SystemIdle中不是一个很完美的解决办法。

 

    建议采用以下两种解决方案之一,望贺老师考虑:

 

   (1)Table增加一个鼠性:是否允许鼠标单击排序(当禁用时,无论加不加Ctrl键,都不允许鼠标单击表头排序)。

   (2)采用以前DataList的解决办法,窗口Table增加有关鼠标的几件事件。当时您一直说Table控件可以完全替代DataList没问题的,经过认真分析,DataList的其他功能都可以替代,而且功能更增强。唯独DataList的鼠标相关事件,给丢掉了(不知是有意的还是无意的)。让人觉得很是遗憾!在有时候,这几个事件还是挺有用的!

 

 

[此贴子已经被作者于2010-6-9 10:19:59编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  26楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47480 积分:251289 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/6/9 10:23:00 [只看该作者]

24楼代码对效率没有任何影响。


 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  27楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2010/6/9 10:36:00 [只看该作者]

以下是引用狐狸爸爸在2010-6-9 10:23:00的发言:

24楼代码对效率没有任何影响。

 

     还存在一个问题不好解决。就是在实际应用中,主表Table和窗口中的Table,甚至不同窗口中基于同一个表的Table,可能对表顺序需要完全不同的设置。我主要是想禁用某些窗口中Table的单击排序,主表中的Table、或者另外一些窗口中的Table,可能并不想禁用。如果加在SystemIdle事件中,就非常的不灵活!另外,在财务系统中,账目相关的报非常多(账务处理是财务系统的最主要功能了),在SystemIdle事件中对所有账目相关的表都设置一个顺序,总感觉非常不灵活,也不是一个好办法。

   

    我在25楼提的建议,既灵活又方便,又不影响系统效率,难道不好吗?

[此贴子已经被作者于2010-6-9 10:36:08编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  28楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47480 积分:251289 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/6/9 10:44:00 [只看该作者]

单单禁止某几个Table也是很灵活的,还是SystemIdle事件。

 

例如:

 

For Each t As Table In Tables

     Select Case t.Name

        Case  "窗口1_Table1","窗口2_Table2{", "表A"  '这些表始终按日期排序

            If t.Sort <> "日期" Then

                   t.Sort = "日期"

            End If

        Case  "窗口1_Table2","窗口3_Table1“, "表B"  '这些表始终不排序

            If t.Sort > "" Then

                   t.Sort = ""

            End If

    End Select

Next

[此贴子已经被作者于2010-6-9 10:44:26编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  29楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2010/6/9 10:48:00 [只看该作者]

     原来DataList中的与鼠标有关的事件,有时候也是很有用的,如果难度不大,又能为用户提供方便,为什么不能加上呢?
[此贴子已经被作者于2010-6-9 10:49:58编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  30楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/6/9 10:56:00 [只看该作者]

以下是引用cpayinyuan在2010-6-9 10:04:00的发言:

 

     刚才的确没看到,现在看了。但我在21楼后面也补充了一段话,也希望您认真看一下。

 

     贺老师是软件专家,是我们大家都非常尊敬的老师,这一点不容置疑。但贺老师在其他专业方面未必是专家,我想强调的是:在财务账中(与流水账类似,但会计制度对会计账要求更严格),账目是必须100%的禁止用鼠标排序的。如果不能禁止,会让用户感觉设计项目的人完全不懂财务!

 

     再次重复一遍,我的要求很简单:在Table中禁止鼠标单击排序,这不是为我一个人提供方便,而是在很多时候都有这样的需求,希望贺老师解决一下!

这个不是有嘛:

 


图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看

 回到顶部
总数 47 上一页 1 2 3 4 5 下一页