どういうわけか、特定のページの結果の数を特定する方法がわかりません。データのリストと、PageSize
1ページに収まる結果の数を識別するプロパティがあります。結果が120で、ページサイズが25であるとします。つまり、最初の4つは25レコード、5番目は20レコードの合計5ページになるはずです。現在、私が得ている結果は全面的にあります。たとえば、ある50
はずのときに得られる可能性があります20
。
指定されたページの結果の数を返すためにこの関数を書いていますが、単純な数学を正しく理解できないようです(私は数学があまり得意ではありませんでした)。Count
ページごとに実際のリストはなく、そのページのレコード数を特定するために簡単に読み取ることができます。この関数を使用して、動的に計算する必要があります。
すぐ下のコード行を参照してくださいCALCULATION DONE HERE
:
function TMyData.SizeOfPage(const Index: Integer): Integer;
begin
//Index = Page Number (0 ... MAX)
//Result = Number of results in given page
//PageCount = Total number of pages (from other function)
//RecordCount = Total number of records (all pages)
Result:= 0; //Default
//Validate index bounds
if (Index >= 0) and (Index < PageCount) then begin
if Index < PageCount-1 then begin
//Just return full size of one page
Result:= PageSize;
end else begin
//Return number of records in the last page
//--- CALCULATION DONE HERE ---
Result:= RecordCount - Trunc(RecordCount / PageSize);
end;
end else begin
raise Exception.Create('Page index out of bounds ('+IntToStr(Index)+')');
end;
end;