Thanks for the suggestions.
I intend to run this cross-platform so I can't use a Windows-only solution.
Calling the code from the OnActivate didn't fix the problem. (I had tried initializing from the OnCreate, OnShow, OnPaint, OnResize, and maybe some others before I posted.)
I had already tried (and tried again, just to be sure) calling the code from the main .lpr file after the CreateForm calls - still got the error. (It must be that CreateForm kicks off threads and doesn't wait for completion.)
(To be more complete, in case it sheds light on Lazarus inner-workings: I was loading a TLabel with a file name - which works - and then reading a file to load other TEdit fields - that didn't work. Go figure.)
The timer solution probably would work, but I chose the QueueAsyncCall solution and it works fine. Thank you.
Thank you all.
(So why can't Lazarus have it's own 'TheFormHasBeenFullyCreatedAndIsReadyToBeInitialized' routine so as to make everyone's life easier? Oh, well.)
Walter