| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2983 人关注过本帖
标题:关于grid的问题
取消只看楼主 加入收藏
baichuan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:37
帖 子:953
专家分:589
注 册:2006-3-13
结帖率:93.55%
收藏
已结贴  问题点数:20 回复次数:8 
关于grid的问题
test.rar (12.23 KB)


1、点科目排序后,怎么能让灰白条根据新的顺序排序呢?
2、点科目7以后的地方排序后,直接就刷新到第一屏去了,怎么解决呢?
3、怎么能使被选中的文本框内字体和其他字体一致呢?

麻烦啦!

[此贴子已经被作者于2016-3-14 16:01编辑过]

搜索更多相关主题的帖子: 文本框 
2016-03-14 15:59
baichuan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:37
帖 子:953
专家分:589
注 册:2006-3-13
收藏
得分:0 
以下是引用mywisdom88在2016-3-14 16:40:12的发言:

你的程序没问题,只是少2张图片
up.bmp 和dowm.bmp


这个我改了,可以上下排序了,可是其他问题还是没有解决!

2016-03-14 16:43
baichuan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:37
帖 子:953
专家分:589
注 册:2006-3-13
收藏
得分:0 
回复 4楼 liuxingang28
2、点科目7以后的地方排序后,直接就刷新到第一屏去了,怎么解决呢?

这个问题怎么解决啊,这是重点!非常感谢!

2016-03-14 16:57
baichuan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:37
帖 子:953
专家分:589
注 册:2006-3-13
收藏
得分:0 
以下是引用liuxingang28在2016-3-14 16:49:27的发言:

针对楼主的第一个问题,解决方案如下:
1. 你没有将 up.bmp 和 down.bmp 两个文件放置到项目文件下,因此,单击列标题后虽然已排序,但列标题没有任何变化,不直观
2. 你是根据记录号来使奇偶行显示不同颜色的。在排序方式下应该做如下修改:
   第一步:为表添加一个新字段 FLAG (L),并执行如下代码给Flag字段赋初值:
      LOCAL lFlag
      SCAN
          REPLACE flag with lFlag
          lFlag = !lFlag
      ENDSCAN
   第二步:修改 Grid1.Init 中的代码为:This.SetAll("DynamicBackColor","IIF(Flag,RGB(255,255,255),RGB(192,192,192))","Column")
   第三步:修改 MyProc.prg,在 GO TOP 之前添加如下代码:
      LOCAL lFlag
      SCAN
          REPLACE flag with lFlag
          lFlag = !lFlag
      ENDSCAN

厉害,这个问题解决了!

2016-03-14 17:01
baichuan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:37
帖 子:953
专家分:589
注 册:2006-3-13
收藏
得分:0 
以下是引用liuxingang28在2016-3-14 16:57:16的发言:

针对第二个问题,解决方案如下:

修改 MyProc.prg,在 THISFORM.Refresh 之后添加一行:THIS.Parent.SetFocus



OK!牛啊!我一直在想怎么setfocus

2016-03-14 17:02
baichuan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:37
帖 子:953
专家分:589
注 册:2006-3-13
收藏
得分:0 
以下是引用liuxingang28在2016-3-14 17:01:19的发言:

针对第三个问题,我们可以修改表格的 SelectedItemBackColor 和 SelectedItemForeColor 以改变选定单元格的字体颜色和背景色,但字体、字号无法修改。


没有办法了,我把整体字体字号变大了之后,选定的就是没法改了!

2016-03-14 17:03
baichuan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:37
帖 子:953
专家分:589
注 册:2006-3-13
收藏
得分:0 
以下是引用mywisdom88在2016-3-14 17:06:52的发言:


有点小问题,能定位到列了,但行记录,将会跳来跳去
是要把THIS.Parent.SetFocus放在GO TOP的上面
THIS.Parent.SetFocus
GO TOP
THISFORM.Refresh

我好像发现有乱七八糟的情况出现了,试试你说的!

2016-03-15 08:10
baichuan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:37
帖 子:953
专家分:589
注 册:2006-3-13
收藏
得分:0 
以下是引用liuxingang28在2016-3-15 08:48:50的发言:

我的原话是:“在 THISFORM.Refresh 之后添加一行:THIS.Parent.SetFocus”,修改后的完整代码如下:

DEFINE CLASS MyHeader as Header
    name = 'Header1'
    PROCEDURE Click
        LOCAL nSelect,cFldName,cAlias,nNum_Tag
        cAlias = JUSTFNAME(THIS.Parent.ControlSource)    && 表名
        cFldName = JUSTEXT(THIS.Parent.ControlSource)    && 字段名
        cOldPict = JUSTSTEM(THIS.Picture)        && 当前图片
        THIS.Parent.Parent.SetAll('Picture','')        && 先去除所有图片
        nSelect = SELECT()
        SELECT (cAlias)
        nNum_Tag = ATAGINFO(aTag)
        DO CASE
        CASE ATC('up',cOldPict) > 0                && 升序时降序
            THIS.Picture = 'dowm.bmp'
            IF nNum_Tag > 0 AND ASCAN(aTag,cFldName,-1,-1,1,7) > 0 && 若索引标记存在,则激活之
               SET ORDER TO &cFldName DESCENDING
            ELSE
                INDEX ON &cFldName TAG (cFldName) DESCENDING   && 索引标记不存在,新建之
            ENDIF
        CASE ATC('down',cOldPict) > 0            && 降序时无序
            SET ORDER TO
        OTHERWISE                                && 无序时升序
            THIS.Picture = 'up.bmp'
            IF nNum_Tag > 0 AND ASCAN(aTag,cFldName,-1,-1,1,7) > 0
                SET ORDER TO &cFldName
            ELSE
                INDEX ON &cFldName TAG (cFldName)
            ENDIF
        ENDCASE
        lFlag = .f.
        SCAN
            REPLACE flag WITH lFlag
            lFlag = !lFlag
        ENDSCAN
        GO TOP
        THISFORM.Refresh
        THIS.Parent.SetFocus

        SELECT (nSelect)
    ENDPROC
ENDDEFINE

行记录不是“跳来跳去”,每次单击列标题后跳转到“第一条”记录,这也是大多数人的需要。如果你想单击列标题后保留原记录,也很简单,代码稍作修改如下:
DEFINE CLASS MyHeader as Header
    name = 'Header1'
    PROCEDURE Click
        LOCAL nSelect,cFldName,cAlias,nNum_Tag
        cAlias = JUSTFNAME(THIS.Parent.ControlSource)    && 表名
        cFldName = JUSTEXT(THIS.Parent.ControlSource)    && 字段名
        cOldPict = JUSTSTEM(THIS.Picture)        && 当前图片
        THIS.Parent.Parent.SetAll('Picture','')        && 先去除所有图片
        nSelect = SELECT()
        SELECT (cAlias)
        nRec = IIF(EOF(),0,RECNO())
        nNum_Tag = ATAGINFO(aTag)
        DO CASE
        CASE ATC('up',cOldPict) > 0                && 升序时降序
            THIS.Picture = 'dowm.bmp'
            IF nNum_Tag > 0 AND ASCAN(aTag,cFldName,-1,-1,1,7) > 0 && 若索引标记存在,则激活之
               SET ORDER TO &cFldName DESCENDING
            ELSE
                INDEX ON &cFldName TAG (cFldName) DESCENDING   && 索引标记不存在,新建之
            ENDIF
        CASE ATC('down',cOldPict) > 0            && 降序时无序
            SET ORDER TO
        OTHERWISE                                && 无序时升序
            THIS.Picture = 'up.bmp'
            IF nNum_Tag > 0 AND ASCAN(aTag,cFldName,-1,-1,1,7) > 0
                SET ORDER TO &cFldName
            ELSE
                INDEX ON &cFldName TAG (cFldName)
            ENDIF
        ENDCASE
        lFlag = .f.
        SCAN
            REPLACE flag WITH lFlag
            lFlag = !lFlag
        ENDSCAN
*        GO TOP
        IF nRec # 0
           GO nRec
        ENDIF
        THISFORM.Refresh
        THIS.Parent.SetFocus
        SELECT (nSelect)
    ENDPROC
ENDDEFINE

“师父领进门,修行在个人”。如果自己没有独立思考能力,单靠他人指导是不行的。


我一直在测试,偶尔会出现第一行双行问题,一直没有找到原因,我尝试每次都把索引删除,然后重建,现在测试未出现问题!

2016-03-16 10:46
baichuan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:37
帖 子:953
专家分:589
注 册:2006-3-13
收藏
得分:0 
以下是引用liuxingang28在2016-3-16 16:09:26的发言:

回复 14 楼问题:

关于有些行颜色显示错乱,这不是我提供的代码有问题,而是你的初始索引文件有问题,需要 Reindex。因为在我的代码中,若该字段已建立了索引,则直接激活该索引,并没有重新建立。



所以,我每次关闭grid就删除索引,这样就解决问题啦!

2016-03-17 09:12
快速回复:关于grid的问题
数据加载中...
 
   



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

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