Kalau kita melihat pada tampilan google bagian bawah selalu menampilkan banyak nomor, dari angka 1 sampai 10 dan ada juga firs dan last, itulah yang disebut dengan paging, saya yakin dari beberapa dari teman-teman selalu memperhatikan hal tersebut. ada yang pernah kebayang menggunakan cara tersebut atau perlu gak sih kalau pada delphi ?, selama menggunakan datasource dan data masih berkapasitas kecil mungkin tidak perlu, pertanyaan saya adalah bagaimana cara database yang kita gunakan menggunakan VPS (Virtual Private Server). Nah jawabannya cocok sekali menggunakan paging untuk diterapkan pada data master.
Baik, selanjutnya akan saya demokan cara membuatnya, topik kali ini akan membahas kode seluler yang berada di Jawa Timur :
Silahkan membuat database bernama 'tes_db', dan buat tabel seperti dibawah ini
CREATE TABLE `t_kodearea` ( `Id_kodearea` int(11) NOT NULL AUTO_INCREMENT, `kodearea` varchar(10) DEFAULT NULL, `provider` varchar(50) DEFAULT NULL, `kota` varchar(50) DEFAULT NULL, `propinsi` varchar(50) DEFAULT NULL, `status_kodearea` varchar(12) DEFAULT NULL, PRIMARY KEY (`Id_kodearea`) ) ENGINE=InnoDB AUTO_INCREMENT=331 DEFAULT CHARSET=latin1;
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, DBGrids, DB, MemDS, DBAccess, MyAccess, Math, ExtCtrls; type TForm1 = class(TForm) MyConnection1: TMyConnection; MyQuery1: TMyQuery; DataSource1: TDataSource; MQCariCount: TMyQuery; Panel1: TPanel; Panel2: TPanel; Panel3: TPanel; DBGrid1: TDBGrid; Panel4: TPanel; Edit_Search: TEdit; BTSearch: TButton; BTFirst: TButton; BTBack: TButton; BTNext: TButton; BTLast: TButton; Label2: TLabel; CbLimit: TComboBox; Label1: TLabel; procedure BTSearchClick(Sender: TObject); procedure BTFirstClick(Sender: TObject); procedure BTLastClick(Sender: TObject); procedure BTBackClick(Sender: TObject); procedure BTNextClick(Sender: TObject); procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); private { Private declarations } public { Public declarations } procedure Pagingrecord(nhal: Integer); end; var Form1: TForm1; Posisiawal, Tothal, Hal, Datatotal: integer; FetchRow : integer; implementation {$R *.dfm} procedure TForm1.BTSearchClick(Sender: TObject); begin pagingrecord(0); end; procedure TForm1.pagingrecord(nhal: Integer); var i, posisiakhir: Integer; begin Screen.Cursor := crHourGlass; if (nhal >= 1) then begin posisiawal := (nhal - 1) * StrToIntDef(CbLimit.Text, 25); hal := nhal; end else begin posisiawal := 0; hal := 1; end; // tampilkan data + limit with MyQuery1 do begin FetchRow := StrToIntDef(CbLimit.Text, 25); SQL.Text := ' Select * from t_kodearea ' + ' Where kodearea like :paramsearch or provider like :paramsearch or kota like :paramsearch ' + ' Order by id_kodearea ' + ' Limit :paramoffset, :paramcount'; ParamByName('paramsearch').AsString := '%' + Edit_Search.Text + '%'; ParamByName('paramoffset').AsInteger := posisiawal; ParamByName('paramcount').AsInteger := StrToIntDef(CbLimit.Text, 25); Open; end; // Mencari total jumlah record, koding dibawah tidak boleh diganti dengan MyQuery1.Recordcount; with MQCariCount do begin SQL.Text := 'select count(*) totrecord from t_kodearea ' + ' Where kodearea like :paramsearch or provider like :paramsearch or kota like :paramsearch '; ParamByName('paramsearch').AsString := '%' + Edit_Search.Text + '%'; Open; end; datatotal := MQCariCount.Fields[0].AsInteger; tothal := Ceil(datatotal / StrToIntDef(CbLimit.Text, 25)); if hal = tothal then Begin posisiakhir := datatotal End else Begin posisiakhir := StrToIntDef(CbLimit.Text, 25) * hal; End; Screen.Cursor := crDefault; end; procedure TForm1.BTFirstClick(Sender: TObject); begin pagingrecord(0); end; procedure TForm1.BTLastClick(Sender: TObject); begin pagingrecord(Tothal); end; procedure TForm1.BTBackClick(Sender: TObject); begin if hal > 1 then Begin pagingrecord(hal - 1) End else Begin pagingrecord(0) End; end; procedure TForm1.BTNextClick(Sender: TObject); begin if hal < tothal then Begin pagingrecord(hal + 1); End else Begin pagingrecord(tothal); End; end; procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var Grid: TDBGrid; Row: integer; begin Grid := sender as TDBGrid; Row := grid.DataSource.DataSet.RecNo; if Odd(row) then Begin Grid.Canvas.Brush.Color := $00FFD8B0 End else Begin Grid.Canvas.Brush.Color := clWhite; End; Grid.Canvas.Font.Color := clBlack; Grid.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; end.
Tampilkan hasil program seperti dibawah ini
![]()