[Lazarus] Using Lazarus for non-graphical apps
Michael Schnell
mschnell at lumino.de
Tue Jan 7 16:43:36 CET 2014
On 01/07/2014 04:16 PM, Paul Breneman wrote:
>
> So please share what you can. Thanks!
>
>
Right now I am too busy with completely unrelated things to do the
planned "active NoGui" Widget Type :-( .
I just can provide some thoughts and offer to reply to any questions if
anybody wants to get on that task.
The basics are (now) rather clear to me:
- The stuff needs to be appropriately integrated in the "WidgetType"
selection mechanism Lazarus provides.
- The stuff needs to be appropriately integrated in the "Project
Source" mechanism Lazarus provides.
- You need to do (at least) a TApplication class and a TTimer class
- Any not GUI related stuff in TApplicartion should work as expected
(.ExeName, Callback-events, QueueAsyncCall ....) should work as expected
- WakeMainThread needs to be implemented according to the OS we
compile for.
- After the initialization a main loop is executed that calls
CheckSynchronize with an appropriate timeout (see below)
- to do a really simple TTimer class my idea is:
- - calculate the common denominator (but rounding to an appropriate
minimum aka "Granularity") of any instanciated TTimers' Time settings
- - use that value as Timeout in CheckSynchronize.
- - in the main loop, count a global timer and call TTimer Events as
appropriate (if timer mod Timer[i].TimeSpec = 0, with Timer[i].TimeSpec
:= Timer[i].Time div Granularity)
- - The Granularity should be a property the user can set.
I did a testing program that checks the multiple means of main thread
notification with multiple Widget Types.
If there is a new Widget Type I would modify the program to work with
same and provide it for testing the WidgetType
-Michael
More information about the Lazarus
mailing list