A cómo dice Oscarac, parece que te has complicado en algo que puede ser simple. No te preocupes, estás empezando y es lo más normal de todo el mundo. En mi caso, fíjate lo que hago:
Declaro dos contructores en la clase (los llamo "
visores de registro", para diferenciarlos de los "
exploradores de registro"). La declaración de los constructores es más o menos así:
Código Delphi
[-]type
TClientesViewer = class(TBaseViewer)
published
constructor ShowRecord(AOwner: TComponent; RecordID: Variant;
const ReadOnly: Boolean = False;
const UpdateTransaction: TpFIBTransaction = nil;
...);
constructor NewRecord(AOwner: TComponent; const RecordData: PString = nil);
Luego en la implementación de cada constructor preparo el enlace a datos de la forma más adecuada para el modo en el que se trabajará. El proceso de guardar los cambios o ya sea un nuevo registro, es casi lo mismo. En síntesis solo se requiere de una llamada a
Post.
Saludos,
Chris