Sven's CA-Visual Objects - Seite

23.11.2012

eMail

eMail

Übersicht | Vorheriger | Nächster

DataDialog hängt sich auf:

DataDialog mit SubDataWindow's und 'Tab Key' = "Include Parent":

Es scheint so, dass es in Windows95/98 einen Bug gibt, der zu einem Hängen der Applikation führt:

Es wird ein DataDialog geöffnet, der ein oder mehrere SubDataWindow's (evtl. auch auf einem TABControl) enthält.

Wenn der DataDialog nun zusätzlich noch selbst einige Controls enthält (z.B. einen PushButton) so setzt man in den SubDataWindow's die Eigenschaft 'Tab Key' auf 'Include Parent' während das DataDialog-Window standardmäßig auf 'Tab Key' = 'Form Only' gesetzt ist.

Wenn in diesem DataDialog jetzt ein beliebiges DialogWindow geöffnet wird (z.B. eine InfoBox{} oder SELF:WarningMessage()) so hängt sich das Programm unter Windows 95/98 auf, während es unter Windows 2000 problemlos läuft.

Für dieses Problem habe ich folgenden Workarround gefunden:

'Tab Key' = 'Include Parent' führt dazu, das die Resource des SubDataWindow's den Stiel DS_CONTROL enthält.

RESOURCE SUBDATAWINDOW 82, 76, 212, 142
STYLE DS_CONTROL|WS_CHILD
FONT 8, "MS Sans Serif"

Man muss nun dem DataDialog-Window auch diesen Fenster-Stiel DS_CONTROL zu weisen, obwohl dies eigentlich keinen Sinn macht. Doch funktioniert es dann auch unter Windows95/98 und unter Windows 2000 ebenfalls noch. Irgend welche negativen Folgen sind mir bis jetzt nicht aufgefallen.
Da es beim DataDialog im Window-Editor keine Möglichkeit gibt die Eigenschaft 'Tab Key' = 'Include Parent' zu ändern, muss man die Resource nachträglich manuell ändern. Dies ist natürlich nicht ganz ungefährlich, da man bei jeder Änderung am DataDialog immer daran denken muss die Resource wieder zu ändern.
Besser ist es ein DataWindow zu paintern und dort dann 'Inherit from Class' = 'DataDialog' und 'Tab Key' = 'Include Parent' einzustellen. Das ist funktional das Selbe, aber man muss nicht mehr daran denken wenn man etwas am Dialog ändert.

 

Home | Kontakt | Impressum | ©2012 Ingenieur-Büro Dipl. Ing. Sven Ebert