As already said, it is indeed completely valid to call TClientDataset.ApplyUpdates
after posts and deletes, but have in mind that by doing that you will be increasing the roundtrips between the client and the server. In some cases, this can generate performance issues.
Particularly I prefer to let the user do many operations in a form and apply them all in a single roundtrip. In order to do this I usually have a submit or save button connected to a particular Action that is enabled when the <clientDataset>.State in [dsEdit, dsInsert] or <clientDataset>.ChangeCount>0
.
It´s just a matter of preference, but it seems to me that this is a good metaphore for the user and gives him/her the chance to build a batch of operations (inserts, deletes and updates) to save in a single moment.