由于用户可以调整窗口大小,dbgrid的大小随之变化。我想实现dbgrid自动的翻页,不知如何实现。请教!

解决方案 »

  1.   

    http://www.jc51.net/Jc_Html/Aticle/Program/BOX/20067/2350.html
      

  2.   

    dbgrid不行,用stringgrid吧,
    如果非要用dbgrid的话,就需要在数据集(sql)上下功夫,dbgrid本身是不行的
      

  3.   

    这样就可以了...
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShowMessage(IntToStr(TStringGrid(DBGrid1).RowCount-1));
    end;
      

  4.   

    判断和dbgrid相连接的数据集的记录个数
      

  5.   

    只是找行数还是可以的吧,DBGRID是连DATASOURCE的,DATASOURCE又是连ADOQUERY的,如果你是用ADO的话,那ADOQUERY1.RECORDCOUNT就是所有的记录条数了~~
    要分页的话就不清楚了,问强人吧~~
      

  6.   

    DBGrid一页上显示的行数和数据集的RecordCount是两回事。GARNETT2183的方法就可以了。
      

  7.   

    xixuemao(从哪里跌倒就要从哪里抬出去) 给的网页中说:你先在窗体上放一个TApplicationEvents控件(Delphi自带的),找到WmMouseWheelMessage事件。  
     
    下面是我实现的(这个用的是键盘的上下按键消息,你也可以改成滚动条消息)。  
     
    procedure  TMainForm.WmMouseWheelMessage(var  Msg:  tagMSG;  
       var  Handled:  Boolean);  
    begin  
       if  (DBGrid.Focused)  And  (Msg.message  =  WM_MOUSEWHEEL)  then  
           begin  
               if  Msg.wParam  >  0  then  
                   SendMessage(DBGrid.Handle,  WM_KEYDOWN,  VK_UP,  0)  
               else  
                   SendMessage(DBGrid.Handle,  WM_KEYDOWN,  VK_DOWN,  0);  
               Handled  :=  True;  
           end;  
    end;  我感觉也是好办法,可问题是程序如何知道滚动到头了?
      

  8.   

    到尾 :RecNo=RecordCount
    头   :RecNo=0;