| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2818 人关注过本帖
标题:刚修改过的记录刷新后显示列表框里的最上面(第一个)
只看楼主 加入收藏
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用mywisdom88在2015-5-28 16:55:30的发言:

SELECT 项目 FROM 表1 ORDER BY 修改时间 DESC INTO CURSOR 列表2
不是说临时表,不能修改的吗?你这个好像可以修改?为什么啊?我刚测试了,你这个是可以。

临时表只用在列表显示,REPLACE 修改的是原数据表(表1)
2015-05-28 21:24
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用shenkj001在2015-5-28 16:31:39的发言:

非常感谢吹水佬,要的不是这个效果.只是想把修改过的记录提到第一个,原来它下面的记录不变.主要方便接着找它下面的其它记录(不是挨着它的)

明白,意思应是:只要能将当前记录显示在列表中的第一行位置(这其实与修改没关系)。
因Grid有显示行定位,用Grid应该可以,ListBox还没看准。
2015-05-28 21:34
muyubo
Rank: 9Rank: 9Rank: 9
来 自:山东莱芜
等 级:蜘蛛侠
威 望:3
帖 子:471
专家分:1017
注 册:2011-3-6
收藏
得分:0 
根据TonyDeng的说法,如果是表格的话,先将记录定位到修改的那一条上,然后再从新加载数据源,显示的高亮条就是在表格的第一行.
2015-05-28 21:39
shenkj001
Rank: 3Rank: 3
来 自:河南安阳
等 级:论坛游侠
威 望:9
帖 子:340
专家分:147
注 册:2005-5-23
收藏
得分:0 
回复 22楼 吹水佬
谢谢关注,是这个意思。我试了一天了也没好。主要想写个分数录入表单,需要输入的记录从小到大,但并不一定挨着,为方便向下查找。

shenkj001@
2015-05-28 21:43
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用shenkj001在2015-5-28 20:34:40的发言:

TonyDeng版主理解的应该是我的意图,请大家多费心帮一下,谢谢!

再看看是不是这种效果,这次要看真点哦。

程序代码:
SET CENTURY ON
SET DATE TO ANSI
SET MARK TO "/"
SET HOURS TO 24

CREATE CURSOR 表1 (项目 C(20), 修改时间 C(14))
INSERT INTO 表1 VALUES ("项目01", "")
INSERT INTO 表1 VALUES ("项目02", "")
INSERT INTO 表1 VALUES ("项目03", "")
INSERT INTO 表1 VALUES ("项目04", "")
INSERT INTO 表1 VALUES ("项目05", "")
INSERT INTO 表1 VALUES ("项目06", "")
INSERT INTO 表1 VALUES ("项目07", "")
INSERT INTO 表1 VALUES ("项目08", "")
INSERT INTO 表1 VALUES ("项目09", "")
GO TOP 
of = CREATEOBJECT("_Form")
of.Show(1)
CLEAR ALL 
RETURN

DEFINE CLASS _Form AS Form
    Height=200
    Width=350
    ADD OBJECT Grid1 AS Grid WITH Top=10,Left=10,Height=140,Width=300,RowSourceType=1,RecordSource="表1"
    ADD OBJECT Command1 AS CommandButton WITH Top=160,Left=10,Height=25,Caption="修改"
    
    PROCEDURE Command1.Click
        REPLACE 修改时间 WITH DTOS(DATE())+STRTRAN(TIME(), ":", "")
        thisform._SetCell(1, 1, RECNO())
    ENDPROC

    FUNCTION _SetCell(nRow, nCol, nRecno)
        IF nRow <= nRecno    
            GO nRecno
            this.grid1.SetFocus
            this.grid1.ActivateCell(nRow, nCol)
            DO WHILE RECNO() != nRecno
                this.grid1.DoScroll(IIF(RECNO() < nRecno, 1, 0))
                this.grid1.SetFocus
                this.grid1.ActivateCell(nRow, nCol)
            ENDDO
        ENDIF
    ENDFUNC
ENDDEFINE
收到的鲜花
  • shenkj0012015-05-28 22:05 送鲜花  1朵  
2015-05-28 21:45
shenkj001
Rank: 3Rank: 3
来 自:河南安阳
等 级:论坛游侠
威 望:9
帖 子:340
专家分:147
注 册:2005-5-23
收藏
得分:0 
回复 25楼 吹水佬
非常感谢,是这个效果,能否用列表框?

shenkj001@
2015-05-28 22:04
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用shenkj001在2015-5-28 22:04:59的发言:

非常感谢,是这个效果,能否用列表框?

ListBox少用,好象没有框内行特性。
喜欢用GRID,其实 GRID 的 AllowCellSelection = .F. 时就类似于ListBox,功能强大。
2015-05-28 22:15
shenkj001
Rank: 3Rank: 3
来 自:河南安阳
等 级:论坛游侠
威 望:9
帖 子:340
专家分:147
注 册:2005-5-23
收藏
得分:0 
回复 27楼 吹水佬
我以前没用过grid,可以考虑试试,再次感谢!

shenkj001@
2015-05-28 22:31
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用shenkj001在2015-5-28 22:31:45的发言:

我以前没用过grid,可以考虑试试,再次感谢!

试了一下ListBox,原来也有Row、Col特性,还有更简便的TopIndex特性。
示例:

程序代码:
CREATE CURSOR 表1 (项目 C(20))
INSERT INTO 表1 VALUES ("项目01")
INSERT INTO 表1 VALUES ("项目02")
INSERT INTO 表1 VALUES ("项目03")
INSERT INTO 表1 VALUES ("项目04")
INSERT INTO 表1 VALUES ("项目05")
INSERT INTO 表1 VALUES ("项目06")
INSERT INTO 表1 VALUES ("项目07")
INSERT INTO 表1 VALUES ("项目08")
INSERT INTO 表1 VALUES ("项目09")
of = CREATEOBJECT("_Form")
of.Show(1)
CLEAR ALL 
RETURN

DEFINE CLASS _Form AS Form
    ADD OBJECT List1 AS ListBox WITH Top=10,Left=10,Height=80,Width=280,RowSourceType=3,;
        RowSource = "SELECT 项目 FROM 表1 INTO CURSOR 列表"
    ADD OBJECT Command1 AS CommandButton WITH Top=95,Left=10,Height=25,Caption="置顶"
    
    PROCEDURE Command1.Click
        FOR i = 1 TO thisform.List1.ListCount
            IF thisform.List1.Selected(i)
                thisform.List1.TopIndex = i
                EXIT
            ENDIF
        ENDFOR
    ENDPROC
ENDDEFINE
收到的鲜花
  • shenkj0012015-05-29 08:10 送鲜花  3朵  
  • shenkj0012015-06-16 17:52 送鲜花  3朵  
2015-05-29 07:33
shenkj001
Rank: 3Rank: 3
来 自:河南安阳
等 级:论坛游侠
威 望:9
帖 子:340
专家分:147
注 册:2005-5-23
收藏
得分:0 
以下是引用吹水佬在2015-5-29 07:33:58的发言:

 
    PROCEDURE Command1.Click
        FOR i = 1 TO thisform.List1.ListCount
            IF thisform.List1.Selected(i)
                thisform.List1.TopIndex = i
                EXIT
            ENDIF
        ENDFOR
    ENDPROC
太谢谢了,问题终于解决了.

shenkj001@
2015-05-29 08:09
快速回复:刚修改过的记录刷新后显示列表框里的最上面(第一个)
数据加载中...
 
   



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

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