As leledumbo has pointed out, you need to call Application.Initialize()
before using LCL features.  The code for TApplication.Initialize() shows
that it initializes the currently active widget set, which is maintained
by the Interfaces unit.  ShowMessage() relies ultimately upon
TWidgetSet.PromptUser(), and that is why TApplication.Initialize() is
needed.

On April 26, at 00:04, Jürgen Hestermann wrote:

> JC Chu schrieb:
>> Try this.
>> program Test;
>> {$MODE DELPHI}
>> {$APPTYPE GUI}
>> uses
>>   {$IF Defined(UNIX) and Defined(UseCThreads)}cthreads,{$ENDIF}
>>   Interfaces, Forms, Dialogs;
>>
>> begin
>>   Application.Initialize;
>>   ShowMessage('Test');
>> end.
> 
>                             Yes, this works!
> Now I only need to understand why. ;-)
> 
> I was expecting the "application.initialize" to create a
> window so I omitted it.
> What does the initialize routine?
> Why is it needed?
> 
> _______________________________________________
> fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-pascal

-- 
Best Regards,
JC Chu
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to