On Thursday 15 September 2011 16:28:29 Frank Church wrote: > I have a form with some threaded objects that notify another form of events > by calling one of that forms events. > > I want to convert to a data module and any interested object to register > for those notifications. > > My idea is for each thread to have some kind of list of procedure types and > each interested object registers its routine eg. > > This is the data module. It is a rough sketch and may have some syntax > errors > > Type TOneArg = Procedure (Var X : integer); > > > type > > > > TMonitorObject = class(TThread) > > private > > > > InterestedObjects: TList > > procedure DispatchOutput; > > procedure DisplayRawOutput; > > > > protected > > > > procedure Execute; override; > > > > public > > > > constructor Create(CreateSuspended: Boolean); > > RegisterInterest(interestedProc:TOneArg); > > > > end; > > > > TMonitorObject.RegisterInterest(TOneArg); > > begin > > > > InterestedObjects.Add(interestedProc); > > > > end; > > > > procedure TMonitorObject.DispatchOutput; > > begin > > > > foreach InterestedObject do > > > > InterestedObject.Procedure.Execute; > > > > end; > > > > constructor TMonitorObject.Create(CreateSuspended: Boolean); > > begin > > > > inherited Create(CreateSuspended); > > InterestedObjects := TList.Create > > FCycleComplete := True; > > > > end; > > Do the procedures for the objects which require notification need to be > constructed in some way? > MSEgui has such a notification mechanism with automatic unlinking by destroying the objects, see tobjectlinker in lib/common/kernel/mseclasses.pas. Another possibility is to use a tobjectevent descendant and application.postevent.
> Am I on the right track here? I am particularly interested in what happens > when the objects passing the routines are destroyed without the data module > knowing about it. The program most likely will crash. :-) Martin _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal