适合初学者,练习几个控件的使用

1、先放一张界面控件布局:

4个button,2个label,1个edit,1个TRzsplitter(把界面分割成上下2部分),1一个adoquery,1个adoconnection,1个datdasource,1个DBgridEh(原生的dbgrid也可以)

2、双击窗体,编写连接数据库的代码:

 procedure TForm3.FormCreate(Sender: TObject);
begin
ADOConnection1.ConnectionString := 'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=数据库用户名;Initial Catalog=数据库名字;PassWord=数据库密码;Data Source=数据库服务器IP';
ADOConnection1.Connected := True;
adoquery1.Connection := adoconnection1;
adoquery1.SQL.clear;
adoquery1.SQL.add('select top ' + Edit1.Text + ' * from TableName order by id');
adoquery1.Open;
datasource1.dataset := adoquery1;
dbgrid1.DataSource := datasource1;
end;

注意:adoconnection控件的LoginPrompt的属性值改为False(为什么是False自己可以去试一下)

3、双击 首页 按钮,编写代码:

 //第一页
procedure TForm3.btnFirstPageClick(Sender: TObject);
begin
adoquery1.SQL.clear;
adoquery1.SQL.add('select top ' + Edit1.Text + ' * from TableName order by id');
adoquery1.Open;
num2 := ;
end;

4、双击 上一页 按钮,编写代码:

//上一页
procedure TForm3.btnPreviousPageClick(Sender: TObject);
begin
dec(num2, StrToInt(Edit1.Text));
if num2 >= StrToInt(Edit1.Text) then
begin
adoquery1.SQL.clear;
adoquery1.SQL.Add('select top ' + Edit1.Text + ' * from TableName where id not in(select top ' + inttostr(num2) + ' id from TableName order by id) order by id');
adoquery1.open;
end
else
begin
inc(num2, StrToInt(Edit1.Text));
adoquery1.sql.clear;
adoquery1.SQL.Add('select top ' + Edit1.Text + ' * from TableName order by id');
adoquery1.Open;
end;
end;

5、编写下一页 按钮 编写代码:

//下一页
procedure TForm3.btnNextPageClick(Sender: TObject);
begin
adoquery1.SQL.clear;
adoquery1.sql.add('select count(*) as countnum from TableName');
adoquery1.Open;
inc(num2, StrToInt(Edit1.Text));
if num2 >= adoquery1.FieldByName('countnum').AsInteger then
begin
num2 := trunc(adoquery1.FieldByName('countnum').AsInteger / StrToInt(Edit1.Text)) * StrToInt(Edit1.Text);
end;
adoquery1.SQL.clear;
adoquery1.SQL.Add('select top ' + Edit1.Text + ' * from TableName where id not in(select top ' + inttostr(num2) + ' id from TableName order by id) order by id');
adoquery1.Open;
if DBGrid1.DataSource.DataSet.RecordCount <= then
begin
adoquery1.SQL.clear;
adoquery1.SQL.Add('select top ' + Edit1.Text + ' * from TableName where id not in(select top ' + inttostr(num2-StrToInt(Edit1.Text)) + ' id from TableName order by id) order by id');
adoquery1.Open;
end;
end;

6、双击 最后一页 按钮,编写代码:

//最后一页
procedure TForm3.btnLastPageClick(Sender: TObject);
var
val1 :Integer;
val2 :Integer;
begin
adoquery1.sql.clear;
adoquery1.SQL.Add('select count(*) as countnum from TableName');
adoquery1.Open;
val1 := (adoquery1.FieldByName('countnum').AsInteger) mod StrToInt(Edit1.Text);
val2 := (adoquery1.FieldByName('countnum').AsInteger) - StrToInt(Edit1.Text);
adoquery1.SQL.Clear;
num2 := val2;
if val1 = 0then
begin
adoquery1.SQL.Add('select top ' + Edit1.Text + ' * from TableName where id not in(select top ' + IntToStr(val2) + ' id from TableName order by id) order by id');
end
else
begin
adoquery1.SQL.Add('select top ' + IntToStr(val1) + ' * from TableName where id not in(select top ' + IntToStr(val2) + ' id from TableName order by id) order by id');
end;
adoquery1.Open;
end;

7、完整代码:

 unit Unit3;

 interface

 uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, Grids, DBGrids, RzDBGrid, ExtCtrls, RzPanel, RzSplit, DBGridEhGrouping, GridsEh,
DBGridEh; type
TForm3 = class(TForm)
btnFirstPage: TButton;
btnNextPage: TButton;
btnPreviousPage: TButton;
btnLastPage: TButton;
ADOQuery1: TADOQuery;
ADOConnection1: TADOConnection;
DataSource1: TDataSource;
Edit1: TEdit;
lblCount1: TLabel;
lblCount2: TLabel;
RzSplitter1: TRzSplitter;
DBGrid1: TDBGridEh;
procedure btnFirstPageClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btnNextPageClick(Sender: TObject);
procedure btnPreviousPageClick(Sender: TObject);
procedure btnLastPageClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form3: TForm3;
num2: integer; implementation {$R *.dfm} //第一页
procedure TForm3.btnFirstPageClick(Sender: TObject);
begin
adoquery1.SQL.clear;
adoquery1.SQL.add('select top ' + Edit1.Text + ' * from TableName order by id');
adoquery1.Open;
num2 := ;
end; //最后一页
procedure TForm3.btnLastPageClick(Sender: TObject);
var
val1 :Integer;
val2 :Integer;
begin
adoquery1.sql.clear;
adoquery1.SQL.Add('select count(*) as countnum from TableName');
adoquery1.Open;
val1 := (adoquery1.FieldByName('countnum').AsInteger) mod StrToInt(Edit1.Text);
val2 := (adoquery1.FieldByName('countnum').AsInteger) - StrToInt(Edit1.Text);
adoquery1.SQL.Clear;
num2 := val2;
if val1 = 0then
begin
adoquery1.SQL.Add('select top ' + Edit1.Text + ' * from TableName where id not in(select top ' + IntToStr(val2) + ' id from TableName order by id) order by id');
end
else
begin
adoquery1.SQL.Add('select top ' + IntToStr(val1) + ' * from TableName where id not in(select top ' + IntToStr(val2) + ' id from TableName order by id) order by id');
end;
adoquery1.Open;
end; //下一页
procedure TForm3.btnNextPageClick(Sender: TObject);
begin
adoquery1.SQL.clear;
adoquery1.sql.add('select count(*) as countnum from TableName');
adoquery1.Open;
inc(num2, StrToInt(Edit1.Text));
if num2 >= adoquery1.FieldByName('countnum').AsInteger then
begin
num2 := trunc(adoquery1.FieldByName('countnum').AsInteger / StrToInt(Edit1.Text)) * StrToInt(Edit1.Text);
end;
adoquery1.SQL.clear;
adoquery1.SQL.Add('select top ' + Edit1.Text + ' * from TableName where id not in(select top ' + inttostr(num2) + ' id from TableName order by id) order by id');
adoquery1.Open;
if DBGrid1.DataSource.DataSet.RecordCount <= then
begin
adoquery1.SQL.clear;
adoquery1.SQL.Add('select top ' + Edit1.Text + ' * from TableName where id not in(select top ' + inttostr(num2-StrToInt(Edit1.Text)) + ' id from TableName order by id) order by id');
adoquery1.Open;
end;
end; //上一页
procedure TForm3.btnPreviousPageClick(Sender: TObject);
begin
dec(num2, StrToInt(Edit1.Text));
if num2 >= StrToInt(Edit1.Text) then
begin
adoquery1.SQL.clear;
adoquery1.SQL.Add('select top ' + Edit1.Text + ' * from TableName where id not in(select top ' + inttostr(num2) + ' id from TableName order by id) order by id');
adoquery1.open;
end
else
begin
inc(num2, StrToInt(Edit1.Text));
adoquery1.sql.clear;
adoquery1.SQL.Add('select top ' + Edit1.Text + ' * from TableName order by id');
adoquery1.Open;
end;
end; procedure TForm3.FormCreate(Sender: TObject);
begin
ADOConnection1.ConnectionString := 'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=数据库用户名;Initial Catalog=数据库名字;PassWord=数据库密码;Data Source=数据库服务器IP';
ADOConnection1.Connected := True;
adoquery1.Connection := adoconnection1;
adoquery1.SQL.clear;
adoquery1.SQL.add('select top ' + Edit1.Text + ' * from TableName order by id');
adoquery1.Open;
datasource1.dataset := adoquery1;
dbgrid1.DataSource := datasource1;
end; end.

delphi简单的分页实现(高手可以不看)的更多相关文章

  1. 简单的分页存储过程,Json格式日期转换为一般日期

    简单的分页存储过程 CREATE PROC Paged @pageIndex INT, @pageCount INT OUTPUT, @pageSize INT AS DECLARE @count I ...

  2. jquery ajax json简单的分页,模拟数据,没有封装,只显示原理

    简单的分页,模拟数据,没有封装,显示原理,大家有兴趣可以自己封装,这里只是个原理过程,真正的分页也差不多是这个原理,只是请求数据不太一样,html部分: <!TOCTYPE HTML> & ...

  3. 只是一个用EF写的一个简单的分页方法而已

    只是一个用EF写的一个简单的分页方法而已 慢慢的写吧.比如,第一步,先把所有数据查询出来吧. //第一步. public IQueryable<UserInfo> LoadPagesFor ...

  4. delphi 简单的删除字符串尾部数字的代码

    delphi  简单的删除字符串尾部数字的代码 方式一: function FilterShowName(const sName: String): String; var I: Integer; b ...

  5. WM_SYSCOMMAND包括很多功能,比如:拖动左边框、拖动标题栏、滚动条滚动、点击最小化、双击标题栏——Delphi 通过事件代替了大部分常用的消息,所以Delphi 简单、易用、高效

    procedure TForm1.WMSysCommand(var Message: TWMSysCommand); var str: string; begin case Message.CmdTy ...

  6. MyBatis简单的增删改查以及简单的分页查询实现

    MyBatis简单的增删改查以及简单的分页查询实现 <? xml version="1.0" encoding="UTF-8"? > <!DO ...

  7. Delphi调用SQL分页存储过程实例

    Delphi调用SQL分页存储过程实例 (-- ::)转载▼ 标签: it 分类: Delphi相关 //-----下面是一个支持任意表的 SQL SERVER2000分页存储过程 //----分页存 ...

  8. AngularJS实现简单的分页功能

    本篇文章由:http://xinpure.com/angularjs-simple-paging-functionality/ 初学 AngularJS, 尝试着写一些小功能 代码逻辑写得略粗糙,仅仅 ...

  9. WPF最简单的分页控件

    背景:最近在写项目的时候需要写一个简单的分页功能,因项目需要,没有改为MVVM模式,只需要在后台实现 1.呈现效果如下: 接下来就来上代码,看看怎么实现的 1.界面代码 <StackPanel ...

随机推荐

  1. 遇见JMS[1] —— activeMQ的简单使用

    1.JMS Java Message Service,提供API,供两个应用程序或者分布式应用之间异步通信,以传送消息. 2.相关概念 提供者:实现JMS规范的消息中间件服务器客户端:发送或接收消息的 ...

  2. Python实现二分查找

    老生常谈的算法了. #!/usr/bin/python # -*- coding:utf-8 -*- # Filename: demo.py # 用python实现二分查找 def binarySea ...

  3. ARC068E - Snuke Line

    原题链接 题意简述 给出个区间和.求对于任意,有多少个区间包含的倍数. 题解 考虑怎样的区间不包含的倍数. 对于的倍数和,满足的区间不包含任何的倍数. 于是转化为二维数点问题,可以用可持久化线段树解决 ...

  4. @EnableAsync @Asnc 以及4种拒绝策略

    根据不同的场景,可以选择不同的拒绝策略,如果任务非常重要,线程池队列满了,可以交由调用者线程同步处理. 如果是一些不太重要日志,可以直接丢弃掉. 如果一些可以丢弃,但是又需要知道被丢弃了,可以使用Th ...

  5. websocket 和 ansible配合Tomcat实时日志给前端展示

    业务流程图如下 效果图展示 1.django安装websocket模块 pip install dwebsocket 2.shell脚本 用来传递不同的行号输出不同的内容; 第一个参数为0的时候,默认 ...

  6. C#调用WebService时插入cookie

    SOAPUI插入Cookie的方法 SOAP插入cookie的方法如下,点击Head,点击加号,然后直接设置就可以了. C#中调用webService时插入Cookie 由于调用的时候必须要带上coo ...

  7. 关于VS2013调试IIS应用源代码时无法进入断点的问题总结

    调试无法进入断点 前言:今天再次遇到之前调试无法进入断点的问题,本来想不写呢觉得没什么只是又犯了同样的错误,但是我发现这个问题我分析起来还是挺费劲的,我仔细想了想原因, 是因为自己对之前的错误没有进行 ...

  8. 【前端】nodejs的ORM框架sequelize的工厂化

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/sequelize_factory.html 一.什么是sequelize nodejs的后台在操作数据库的时候,需 ...

  9. 不解,排名靠前那么多的人为什么抄袭我的activit博文??

    刚才也是无意搜了下自己的最近发表的activiti系列博文,无意中发现居然在别人的csdn博客中也成了原创. ......

  10. MyEclipse提示

    MyEclipse提示 1.具体如下图 2.提示原因 3.解决办法