[fpc-devel] Recent added support for Observer pattern in FCL

Luiz Americo Pereira Camara luizmed at oi.com.br
Tue Aug 28 13:30:51 CEST 2012

Em 28/8/2012 04:50, michael.vancanneyt at wisa.be escreveu:
> On Mon, 27 Aug 2012, Luiz Americo Pereira Camara wrote:
>> I ask to change to a mechanism that could allow customizable 
>> operations (more than one)
> That is why you have ooCustom.
>> I'm asking that because i have implemented a similar mechanism that 
>> support operations like Load, ChildAdd, ChildDelete, ChildChange. I 
>> believe that more developers are in the same situation,i.e., using 
>> observer pattern to an action not handled by those 5 types. It would 
>> be helpful to use the native implementation otherwise i will have to 
>> keep(re-implement) the observer support over TPersistent.
> That's why you have ooCustom and Data at your disposal.

ooCustom is already used in TCollection if i remember correct.
If i use it for a TCollection descendant that uses ooCustom with a 
record pointer i would get a conflict and a possible crash.

Why not let TFPObservedOperation as integer and define constants.

It could define a constant like ooUser = 32
Below ooUser is reserved for future default constants
Above ooUser could be added custom messages
This is how LCL messages works

Its both light and extensible

>> BTW:
>> The names of the TFPObservedOperation are not consistent:
>> ooChanged is in preterit while others not
>> ooChanged does not has Item suffix
> It does not need one. The sender has changed, not an item in a list.
> The 'Item'-s are  for when sender is a list, and an item is added to 
> the list.
> (TList, TStringList, TCollection)

I did the remark because in TCollection is fired because a a change in a 
Item. But is fine.

Any way the preterit question is still valid Changed - Added - Deleted 
or Change - Add - Delete


More information about the fpc-devel mailing list