大侠们好!
假如我用query查询出很多记录(只有一个字段,行数很多),现在想将这些记录显示在一个EDIT内,或DBEDIT内,就是说第一条记录一显示出来,马上又被第二个记录刷新,就是象平常看到的身份证抽奖一样,记录不断的在刷新。当按‘停止’键时,选定唯一号码。
怎么做呢?谢谢!

解决方案 »

  1.   

    while not QUERY_TEMP.eof do
      begin
        edit1.text := QUERY_TEMP.Fieldbyname('youfield').asstring;
        QUERY_TEMP.next
      end
      

  2.   

    抱朴大侠:
    这样做的话,EDIT内的记录可能是刷新得太快了,感觉EDIT内无闪动,直接将最后一条记录显示出来了。
    如何加个延时控制呢?
    谢谢啦!
      

  3.   

    你可以加一个time控件用来控制时间间格,这样你可以看到闪了。不要用sleep那样系统会无法响应的。
    while not adoquery.eof do
      begin
        edit1.text := adoquery1.Fieldbyname('fielname').asstring;
        time1.enable:=true;
        qdoquery1.next
      end
      

  4.   

    那就这样吧:
      with ADOQuery1 do
        begin
          Close;
          sql.Clear;
          sql.Add('select productname from products');
          open;
          First;
          while not Eof do
            begin
              edit1.Text := fieldbyname('productname').AsString;
              sleep(500);
              Application.ProcessMessages;
              next;
            end;    { while }
        end;    { with }
      

  5.   

    在窗体上放一个timer控件 它的timer事件如下 
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    while not QUERY_TEMP.eof do
      begin
        edit1.text := QUERY_TEMP.Fieldbyname('youfield').asstring;
        QUERY_TEMP.next
      endend;
    可以设置timer控件的interval属性来控制速度
    开始的时候可以将timer控件的enabled属性设为false在
      

  6.   

    抱朴大侠的算法测试可以通过,就是关闭不了,呵呵,我是菜鸟勿怪!
    haerbin982大侠啊,TIMER的ONTIMER加入什么语句呢?
    每人44分怎么样,多谢啦!
      

  7.   

    呵呵,用timer试了一下,好像也会失去响应,让我试试其它方法
      

  8.   

    我刚才用query1.last倒是可以停住。你试试!
      

  9.   

    timer控件的interval属性为200--600之间最好
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    if not QUERY_TEMP.eof then
      begin
        edit1.text := QUERY_TEMP.Fieldbyname('youfield').asstring;
        QUERY_TEMP.next
      end
      

  10.   

    while not QUERY_TEMP.eof do
      begin
        edit1.text := QUERY_TEMP.Fieldbyname('youfield').asstring;
        edit1.Refresh;
        QUERY_TEMP.next
      end
      

  11.   

    while not QUERY_TEMP.eof do
      begin
        APPLICATION.PROCESSMESSAGE;
        edit1.text := QUERY_TEMP.Fieldbyname('youfield').asstring;
        QUERY_TEMP.next;
        SLEEP(STRTOINT(EDIT.TEXT));
      end