我的情况是这样,我有一个stringgrid,显示4行,数据库中有100行,要求软件运行时先显示前面4行,然后隔5秒中后开始更新显示的数据,在第一行显示第二条记录,第二行显示第三条记录,……第四行显示第五条记录,依次向上滚动,直到显示完最后一条记录,再重新从第一条记录开始向上显示。
或者也可以这样显示,5秒后直接在第一行显示第五条记录,……第四行显示第八条记录,然后5秒后显示9~12条记录。

解决方案 »

  1.   

    这好办呀,用个timer加上一个计数器就行了,到时自动刷新一下
      

  2.   

    如果加个timer,只显示前面4个啊,后面的怎么显示啊
      

  3.   

    把100行放到ss:Tstringlist
    stringgrid1只设4行
    定时器事件:
    inc(p);
    for i:=0 to 3 do
      stringgrid1.cells[0,i+1]:=ss[(p+i) % 100];
      

  4.   

    不行啊, stringgrid1.cells[0,i+1]:=ss[(p+i) % 100];在%这里抱错。
    说是非法字符
      

  5.   


    哦,应该改为 mod 。%是c的语法了。呵呵
      

  6.   


    感谢sz_haitao 的指导,不过你的说法不起作用,只能显示1~4条记录。
    现在我改用move,完美解决问题了。
    for i:=0 to adoquery1.recordcount-2 do
    ss.move[i]:=ss.move[i+1];