[Lazarus] Lazarus implementation of TListView etc?

Mark Morgan Lloyd markMLl.lazarus at telemetry.co.uk
Tue Nov 3 12:41:30 CET 2015


Michael Schnell wrote:
> For the record:
> 
> I verified that with the gtk2 (Linux) Widget type, "PostMessage()" uses 
> a different Event Queue ("TGTKMessageQueue") than "TThread.Queue()" and 
> TThread.Synchronize()".
> 
> So for this, calling "CheckSynchronize() will not help. You need to use 
> the appropriate GUI-based Widget type.

Thanks for that, useful. That's going to impact anybody trying to 
convert code that uses custom Windows messages to pass events around.

> Application.QueuAsyncCall() uses yet an additional Event Queue. Here 
> using a WidgetType is not strictly necessary, but calling 
> "CheckSynchronize() will not help, either. Here, TApplication provides 
> "RemoveAsyncCalls()" which in a GUI Bases Widget Type is called in 
> "Forms". As a non-GUI Project does not have Forms, RemoveAsyncCalls() 
> needs to be called by a different functionality.

I don't think I've used QueueAsyncCall() in the context of a non-GUI 
program. Where I do find it useful is when converting an interactive 
non-GUI (i.e. console) program into a Lazarus GUI app: enqueue an async 
call in the main form's FormCreate() with the payload being e.g. a 
looping interactive command interpreter which calls 
Application.ProcessMessages when it's got nothing to do.

-- 
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]




More information about the Lazarus mailing list