代码如下:
VK_PRIOR :
begin
if TotalPage < 2 then Exit;
CurrPage := (CurrPage - 1 + TotalPage) mod TotalPage;
// 第一页
if CurrPage = 0 then CurrPage := TotalPage;
// 第二页
if CurrPage = 1 then datasource1.DataSet.First
// 最后一页
else if CurrPage = TotalPage then
begin
datasource1.DataSet.Last;
datasource1.DataSet.Prior;
datasource1.DataSet.Next; // 有什么作用?效果不是一样吗?
// OffSetPage = 记录总行数 mod 10 (每页显示的记录) ;
if OffSetPage = 0 then datasource1.DataSet.MoveBy( - 10 + 1)
else datasource1.DataSet.MoveBy( - OffSetPage + 1);
end
else if CurrPage = TotalPage - 1 then
begin
if OffSetPage = 0 then dsUiSongSelect.DataSet.MoveBy( - 10 * 2 + 1) // 为什么 + 1 ?
else datasource1.DataSet.MoveBy( - 10 - OffSetPage + 1);
end
else datasource1.DataSet.MoveBy( -2 * 10); // 为什么又不 + 1 了?
VK_PRIOR :
begin
if TotalPage < 2 then Exit;
CurrPage := (CurrPage - 1 + TotalPage) mod TotalPage;
// 第一页
if CurrPage = 0 then CurrPage := TotalPage;
// 第二页
if CurrPage = 1 then datasource1.DataSet.First
// 最后一页
else if CurrPage = TotalPage then
begin
datasource1.DataSet.Last;
datasource1.DataSet.Prior;
datasource1.DataSet.Next; // 有什么作用?效果不是一样吗?
// OffSetPage = 记录总行数 mod 10 (每页显示的记录) ;
if OffSetPage = 0 then datasource1.DataSet.MoveBy( - 10 + 1)
else datasource1.DataSet.MoveBy( - OffSetPage + 1);
end
else if CurrPage = TotalPage - 1 then
begin
if OffSetPage = 0 then dsUiSongSelect.DataSet.MoveBy( - 10 * 2 + 1) // 为什么 + 1 ?
else datasource1.DataSet.MoveBy( - 10 - OffSetPage + 1);
end
else datasource1.DataSet.MoveBy( -2 * 10); // 为什么又不 + 1 了?
datasource1.DataSet.Next;这样写等于没动啊,你可以这样MoveBy(2);