From bedcbe46bc76a9e6c6fa3357b0421cb4a5c057fe Mon Sep 17 00:00:00 2001 From: alexs75 Date: Mon, 13 Nov 2017 11:29:26 +0000 Subject: [PATCH] RxFPC:TRxMemoryData - Three additional methods for changing order of records. id-0032253 git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@6068 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- components/rx/trunk/rxdb/rxmemds.pas | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/components/rx/trunk/rxdb/rxmemds.pas b/components/rx/trunk/rxdb/rxmemds.pas index c7af5d498..4f4cd53be 100644 --- a/components/rx/trunk/rxdb/rxmemds.pas +++ b/components/rx/trunk/rxdb/rxmemds.pas @@ -171,6 +171,9 @@ type Mode: TLoadMode): Integer; function SaveToDataSet(Dest: TDataSet; ARecordCount: Integer): Integer; procedure AppendRecord(const Values: array of const); + procedure MoveUp; + procedure MoveDown; + procedure ExchangeRec(ARecNo1, ARecNo2: Integer); procedure SetDatasetPacket(AReader : TRxDataPacketReader); procedure GetDatasetPacket(AWriter : TRxDataPacketReader); @@ -1672,6 +1675,30 @@ begin Post; end; +procedure TRxMemoryData.MoveUp; +begin + if (FRecords.Count > 1) and (FRecordPos > 0) then + ExchangeRec(FRecordPos, FRecordPos + 1); +end; + +procedure TRxMemoryData.MoveDown; +begin + if (FRecords.Count > 1) and (FRecordPos < FRecords.Count - 1) then + ExchangeRec(FRecordPos + 1, FRecordPos + 2); +end; + +procedure TRxMemoryData.ExchangeRec(ARecNo1, ARecNo2: Integer); +begin + CheckActive; + CheckBrowseMode; + if (ARecNo1 <> ARecNo2) and (ARecNo1 > 0) and (ARecNo2 > 0) + and (ARecNo1 <= FRecords.Count) and (ARecNo2 <= FRecords.Count) then + begin + FRecords.Exchange(ARecNo1 - 1, ARecNo2 - 1); + Resync([]); + end; +end; + { Index Related } procedure TRxMemoryData.SortOnFields(const FieldNames: string;