I\'d like to display splash screen while the application is loading. However some 3rd party components block main thread during initilization for several seconds, which caus
Jim McKeeth has got a great idea there, but he doesn't address one thing that may or may not be an issue. You talk about components taking a long time to initialize. By that, do you mean the initialization section, or something that happens later on, like while your forms are being created? Because all the initialization sections run before any code in the DPR gets run. It that part's taking a long time, you'll have to do some tricky stuff to get your splash screen to show up in front of all of it:
Put the form's unit as close to the top of the .DPR as you can. (But not before things that need to go first, like FastMM). Put the code to show the splash screen in the initialization section of that unit. And make sure that there aren't any units with long initialization periods that your splash screen uses (or that the ones that use it use... or anywhere in the dependency tree.) And then hope that works.
If the slowdown problems don't start until after the initial initialization stack is finished, though, then go with what Jim said.