[VB6] Anzeigen modale Form

22/06/2010 - 20:11 von Lothar Geyer | Report spam
Ich bin dabei, etwas umzubauen, und habe dabei mit der Anzeige einer
modalen Form folgendes Problem.

Im aufrufenden (MDI-)Programm steht:

Set mySQLdbRV = New clsReturnValue
Set frmSQLDBselect.RetValue = mySQLdbRV

frmSQLDBselect.Show 1

und in der frmSQLDBselect im _Load-Event:

Me.Caption = App.ProductName & " SQLServer-Datenbank suchen"
Me.Show

listServers

Das Me.Show brauche ich, damit die Form und die Eieruhr angezeigt
werden, damit der Anwender weiß, dass sich etwas tut. Dadurch erhalte
ich dann aber im aufrufenden Programm die Fehlermeldung "Formular wird
bereits angezeigt und kann daher nicht modal dargestellt werden"
(Err.Number 400).

Wie mache ich das am Besten?
Eine Möglichkeit wàre noch, dass sich die aufrufende MDI-Form disabled
und von der gerufenen Form wieder enabled wird und der Parameter über
eine Public Property / Sub zurückgegeben wird. Was mir aber nicht sehr
gefàllt, da das Fehlerhandling relativ umstàndlich ist.

Lothar Geyer
 

Lesen sie die antworten

#1 Thorsten Doerfler
22/06/2010 - 21:52 | Warnen spam
Am 22.06.2010 20:11, schrieb Lothar Geyer:

Im aufrufenden (MDI-)Programm steht:

Set mySQLdbRV = New clsReturnValue
Set frmSQLDBselect.RetValue = mySQLdbRV

frmSQLDBselect.Show 1

und in der frmSQLDBselect im _Load-Event:

Me.Caption = App.ProductName & " SQLServer-Datenbank suchen"
Me.Show

listServers

Das Me.Show brauche ich, damit die Form und die Eieruhr angezeigt
werden, damit der Anwender weiß, dass sich etwas tut. Dadurch erhalte
ich dann aber im aufrufenden Programm die Fehlermeldung "Formular wird
bereits angezeigt und kann daher nicht modal dargestellt werden"
(Err.Number 400).

Wie mache ich das am Besten?



Du kannst versuchen mit einem Me.Refresh und ggf. noch einem
nachgelagerten DoEvents dem Formular Gelegenheit geben sich zu
"entfalten", oder was wahrscheinlich mehr Erfolg verspricht, das
Auflisten der Server über einen Timer vom Load Event zu entkoppeln. So
kann das Formular initialisiert werden. Beim Timer sollte ein niedriges
Intervall reichen 250-500 ms. Was ja auch gern gemacht wird, das
Activate Event hierfür zu verwenden, da dieses ja erstmalig dann
eintritt, wenn das Formular sichtbar ist. Hier dann mit einem Flag
auswerten, ob es wirklich das erste Event ist und nur dann das Auflisten
der Server starten.

Thorsten Dörfler
Microsoft MVP Visual Basic

vb-hellfire visual basic faq | vb-hellfire - einfach anders
http://vb-faq.de/ | http://www.vb-hellfire.de/

Ähnliche fragen