the while-loop in your implementation will not work. It results in an endless loop. Even if you have started the timer before, the GUI application will not process any timer events as long as it processes the loop. You will need to split the code in two parts. Try following:
1. Ensure, that the already existing splashTimer is configured with properties Enabled=false, Period=0, Begin=<delay to hide the splash screen in ms>
2. Add a new slot method to your GUI component. Name it e.g. onTimer.
3. Connect the slot method to your already existing splashTimer.
4. Within the onTimer slot method put following part of your original implementation:
// Determine the previously presented splash dialog
var Core::Group theCurrentDialog = FindCurrentDialog();
// Hide it ...
DismissDialog( theCurrentDialog, null, null, null, null, null, false );
// Create the main screen dialog
var Core::Group mainscreen = new Application::MainScreen;
// ... and present it
PresentDialog( mainscreen, null, null, FadeOut, null, null, null, null, null, false );
5. Within the method where you implemented the original code, modify this implementation to the following:
// Create the splash screen dialog
var Core::Group Splash = new Application::splashScreen;
// Present it
PresentDialog( Splash, null, null, FadeOut, null, null, null, null, null, false );
// Start the timer to hide the dialog. The timer is processed in its 'onTimer'
// slot method
splashTimer.Enabled = true;
Now, when your method is executed, the splash screen dialog is presented and the timer is triggered. After the delay specified in the property Begin of the timer, the onTimer slot method is triggered. This method dismisses the splash screen dialog again and presents the main screen dialog.
Does it help you further?