| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5021 人关注过本帖, 1 人收藏
标题:疯狂的VFPER之点击表头排序
只看楼主 加入收藏
取消关键字高亮
秋色浪漫
Rank: 1
等 级:新手上路
威 望:1
帖 子:18
专家分:0
注 册:2008-10-21
收藏
得分:0 
下了,看不到任何代码,运行后出错误!望指教,谢谢!@
2008-11-28 15:36
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
代码在类里,运行表单demo应该可以的。
下面就是相关的代码:
If This.isSort = .F.
   Return
Endif
*!* 用Aevents函数返回呼叫这个事件的对象(同BindEvents绑定使用),也就是判断哪个Column的Header被点击
*!* 调用grd.GetFieldTag判断该字段是否已索引
Local Array laEvents[1]
Try
   Private lcSourceAlias,lcControlSource,lcField,lcTag,Ftag,lnBuffer,lcSortGrc
   Local lcSourceAlias,lcControlSource,lcField,lcTag,Ftag,lnBuffer,lcSortGrc
   Aevents(laEvents,0)   
   lcSourceAlias = laEvents[1,1].Parent.Parent.RecordSource
   lcControlSource = laEvents[1,1].Parent.ControlSource
   lcSourceAlias = Iif(!Empty(lcSourceAlias),lcSourceAlias,Substr(lcControlSource,1,At(".",lcControlSource)-1))
   lcSourceAlias = Iif(!Empty(lcSourceAlias),lcSourceAlias,Alias())
   lcField = Substr(lcControlSource,At(".",lcControlSource)+1)
   *--
   If Empty(lcSourceAlias)
      Return
   Endif
   If Empty(lcField)
      Return
   Endif

   lcTag = "SortTag"
   Ftag = This.GetFieldTag(lcSourceAlias,lcField)
   Select (lcSourceAlias)
   *--
   lnBuffer = CursorGetProp("Buffering")
   If lnBuffer > 3
      CursorSetProp("Buffering" ,3)
   Endif
   *--
   lcSortGrc = This.SortGrc
   If !Empty(This.SortGrc)
      This.&lcSortGrc..Header1.Picture=""
   Endif
   This.SortGrc= laEvents[1,1].Parent.Name
   
   Select(lcSourceAlias)
   If Empty(Ftag)
      If laEvents[1,1].Tag = "Down"
         Inde On &lcField Tag &lcTag Descending
         laEvents[1,1].Picture = Iif(File("Down.bmp"),"Down.bmp","")
         laEvents[1,1].Tag = "Up"
      Else
         Inde On &lcField Tag &lcTag Ascending
         laEvents[1,1].Picture = Iif(File("Up.bmp"),"Up.bmp","")
         laEvents[1,1].Tag = "Down"
      Endif
   Else
      If laEvents[1,1].Tag = "Down"
         Set Order To (Ftag) Descending
         laEvents[1,1].Picture = Iif(File("Down.bmp"),"Down.bmp","")
         laEvents[1,1].Tag = "Up"
      Else
         Set Order To (Ftag) Ascending
         laEvents[1,1].Picture = Iif(File("Up.bmp"),"Up.bmp","")
         laEvents[1,1].Tag = "Down"
      Endif
   Endif
   If lnBuffer > 3
      CursorSetProp("Buffering" ,lnBuffer)
   Endif
   Go Top
   This.Refresh
Catch
Endtry

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2008-11-29 10:01
freejyl
Rank: 1
等 级:新手上路
帖 子:59
专家分:3
注 册:2006-1-6
收藏
得分:0 
楼主说明一下运行环境吧,我这里也是操作类型不匹配,我的是VF6.0
2008-12-01 08:29
akun868
Rank: 2
等 级:论坛游民
帖 子:50
专家分:20
注 册:2006-2-7
收藏
得分:0 
不好意思,我的代码都是基于VFP9.0 SP2编写的,一般来说在VFP8.0上也能正确执行。

成熟进销存、财务软件,各种软件定向开发。
QQ:27720550
E-mail:akun86#
2008-12-01 08:58
wuanzhengxin
Rank: 2
等 级:论坛游民
帖 子:36
专家分:30
注 册:2010-2-20
收藏
得分:0 
我的grid是由数据源定义的,请问老师代码写在什么地方呢?因为只有grid属性。
2010-02-20 15:34
congzhendong
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2010-2-22
收藏
得分:0 
想问一下楼主
在普通表的浏览窗口内如何实现呢
2010-06-07 07:05
congzhendong
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2010-2-22
收藏
得分:0 
希望得到指点 先顶一下先
2010-06-07 07:06
Moz
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-5-27
收藏
得分:0 
今天为了实现这个点头排序,找到了这一贴,借用了楼主的几个关键字,简洁一下代码如下:
我用的是可读写的临时表,方便快速显示.
更新数据的时候需要再绑定一次,因为列数会有改变.

DEFINE CLASS grid001 as Grid
  RecordsourceType=1
  Recordsource="tmp1"
  Tag01=.T.

  PROCEDURE bindclick()
    LOCAL T1
    For Each T1 In This.Columns
        Bindevent(T1.Controls(1),"Click",This,"grhClick")
    Endfor
  ENDPROC
  PROCEDURE grhClick()
    LOCAL T1(1),T2
    Aevents(T1,0)   
    T2=T1(1,1).parent.columnorder
    this.RecordSource=""
    T2="SELECT * FROM tmp1 ORDER BY "+ALLTRIM(STR(T2))+IIF(this.tag01," ASC "," DESC ")+"INTO CURSOR tmp1 READWRITE"
    EXECSCRIPT(T2)
    this.Tag01=!this.Tag01        
    this.RecordSource="tmp1"
    this.bindclick
  ENDPROC
ENDDEFINE
2011-02-04 21:50
wf0626
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-5-11
收藏
得分:0 
不错,谢谢
2011-05-11 17:11
colinzxj
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-5-17
收藏
得分:0 
非常有用。。慢慢研究一下。。。。
2011-05-17 20:45
快速回复:疯狂的VFPER之点击表头排序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025523 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved