Per divertimento e su richiesta sto aggiornando questo componente ImageGrid , una sorta di listbox per le immagini che ha un FileNames
proprietà di tipo TStrings
.
Per facilità di scrittura, ho usato male la sua proprietà FileNames.Objects
per l'archiviazione bitmap. Ma poiché il tipo TStrings
suggerisce che gli utenti del componente potrebbero o vorranno utilizzare la proprietà Objects
per dati personalizzati, ad es. come TListBox.Items
, sto riscrivendo il componente per archiviare le bitmap altrove e lasciare FileNames.Objects
non trattato per un utilizzo futuro sconosciuto.
Ora mi chiedo se fornire un evento OnChange
. E se è così, se spararlo quando uno o più FileNames.Objects
cambia.
Cercando di rispondere da solo, mi sono tuffato nel VCL di Delphi e sono incappato in:
-
TMemo
: ha un eventoOnChange
, ma ignoraLines.Objects
-
TListBox
: non ha eventoOnChange
, ma è in grado di memorizzareItems.Objects
-
TStringGrid
: non ha eventoOnChange
, ma è in grado di memorizzareObjects
,Rows.Objects
,Cols.Objects
Quindi ora sono alquanto sconcertato, perché non posso immaginare che gli sviluppatori di Borland non abbiano aggiunto gli eventi per diverse proprietà Objects
di facilità. Certo, quando un utente cambia una FileNames.Object
nel mio componente, sa che lo fa e potrebbe implementare l'interazione appropriata da solo. Ma non sarebbe conveniente quando il componente lo fa automaticamente?
Cosa ti aspetti da questo componente in questo senso?