Sorry for the long delay, your post must have been swept away too fast from the "Recent" list.
When you want to save all events of a specific resource, there must be a function for it in the most general datastore, TVpCustomDatastore, because the resource does not know to which datastore it belongs and, thus, the save must not be specific to TIniDatastore.
There is a method TVpCustomDatastore.PostEvents which seems to be usable for this purpose. In TVpCustomDatastore it is just abstract, but in the most general database datastore it is implemented such that it seeks the currently active resource and posts all the related event records back to the database.
The filebased datastores, however, are not optimized for saving of records fulfilling specific filter criteria (records of events of a specific resource), they only can write all data at once. Therefore the PostEvents method almost does nothing here; it just iterates over the internal event list and removes those events which are marked for deletion - nothing is written to file. This only happens at the end, before the datastore is disconnected: the IniDatastore calls a method WriteToIni, the XmlDatastore a method WriteToXml, and the JsonDatastore a method WriteJson. All these write the full file with all records.
These WriteXXX methods are "protected" at the moment, I could make them "public". But this would only be a store-type specific solution. If you'd once move to another datastore type it would not work any more, and you would have to modify your sourcecode at deeply buried places...
I am in doubt whether the IniDatastore is the correct datastore for your needs. I'd recommend to move to a database-based datastore, at least TBufDSDatastore which has no external dependencies, but gives you all the advantages of a databaser.