代码如下:  
  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 了?