用了桂林老兵的通讯录 看到上面有分页功能
自己想学学
但不知道怎么做?
请那位大哥教教我在Delphi中怎么实现分页

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ADODB, DB, Grids, DBGrids;type
      TForm1 = class(TForm)
        ADOConnection1: TADOConnection;
        Button1: TButton;
        DBGrid1: TDBGrid;
        DataSource1: TDataSource;
        Button2: TButton;
        Button3: TButton;
        ADODataSet1: TADODataSet;
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
      private
        { Private declarations }
      public
        i:integer;
        max:integer;
        mix:integer;
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
    ADOConnection1.ConnectionString:='Provider=SQLOLEDB.1;Password=zdq;Persist Security Info=True;User ID=sa;Initial Catalog=zdq';
    max:=0;
    mix:=0;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
    ADODataSet1.Close;
    ADODataSet1.CommandText:='select  * from  abc';
    ADODataSet1.Open;
    end;procedure TForm1.Button2Click(Sender: TObject);begin
    max:=0;
    if mix=0 then
    begin
    ADODataSet1.Close;
    ADODataSet1.CommandText:='SELECT TOP 30 * FROM abc ORDER BY id ';
    ADODataSet1.Open;
    end
    else
    begin
    ADODataSet1.Close;
    ADODataSet1.CommandText:='SELECT TOP 30 * FROM abc WHERE id <='+inttostr(mix)+' ORDER BY id desc';
    ADODataSet1.Open;
    end;{while (not ADODataSet1.eof) and (not ADODataSet1.isempty) do
    begin
     if ADODataSet1.FieldValues['id']>max then
     begin
      max:=ADODataSet1.FieldValues['id']
     end;
     ADODataSet1.next;
    end; }  while (not ADODataSet1.eof) and (not ADODataSet1.isempty) do
    begin
     if ADODataSet1.FieldValues['id']<mix then
     begin
      mix:=ADODataSet1.FieldValues['id']
     end;
     ADODataSet1.next;
    end;
    end;procedure TForm1.Button3Click(Sender: TObject);
    begin
    ADODataSet1.Close;
    //adodataset1.CommandText:='SELECT TOP 30 * FROM abc WHERE id >'+edit2.Text+' ORDER BY id';
    ADODataSet1.CommandText:='SELECT TOP 30 * FROM abc WHERE id >'+inttostr(max)+' ORDER BY id';
    ADODataSet1.Open;
     while (not ADODataSet1.eof) and (not ADODataSet1.isempty) do
    begin
     if ADODataSet1.FieldValues['id']>max then
     begin
      max:=ADODataSet1.FieldValues['id']
     end;
     ADODataSet1.next;
    end;
      mix:=max-30;
     {while (not ADODataSet1.eof) and (not ADODataSet1.isempty) do
    begin if ADODataSet1.FieldValues['id']>mix then
     begin
      mix:=ADODataSet1.FieldValues['id']
     end;
     ADODataSet1.next;
    end;
    showmessage(inttostr(mix))}
    end;end.