"Deaktiviertes oder unsichtbares Fenster kann den Focus nicht erhalten"



  • Folgendes Problem:

    Ich habe gerade mein erstes C++ Projekt so ziemlich fertig. Ich habe eine MainForm die das eigentliche Formular modal auftruft. Dat muß, weil ich keinen Weg gefunden habe die MainForm an sich modal aufzurufen (bei Programmstart) und ich aber eine modale Form brauche.

    Mein eigentliches Fenster enthält diverse DBGrid, DBNavigator und DBEdit -Elemente, die je nach Datenlage ReadOnly oder Enabled=false sein können.

    Ich habe mir das explizite Setzen eines Focusses verkniffen. Ich habe lediglich die TabOrder belegt (mußte ja). Jetzt habe ich das Problem, daß beim Starten des Programms eine Exception ausgelöst wird - "Deaktiviertes oder unsichtbares Fenster kann den Focus nicht erhalten" 😮 😡

    Wie kann ich diese nervige Meldung unterdrücken? - denn nach OK startet meine Anwendung ordnungsgemäß.

    P.S.: Ein expliziter Focus mit
    if (...->CanFocus)
    ...->SetFocus;
    hat nichts gebracht.

    Danke Torsten



  • Offenbar ist zu Beginn bei deinem Formular die Datenlage so, dass ein Element Enabled ist, welches aber den Focus erhalten soll.

    Da musst du die Situation mal prüfen (debuggen).
    Ein anderes Ereignis wählen um den Focus zu setzen (OnShow)
    Im schlimmsten Fall einen Timer setzen der nach einer Zeit den Focus setzt.



  • Nein die Geschichte war viel dümmer.

    Ich habe den Focus Routinen gesetzt, die von OnCreate (Form) aufgerufen wurden. Dort waren die entsprechenden Objekte z.T. noch gar nicht existent.

    Ich habe alle Routinen, die sich mit der Ausgabe beschäftigen in mindestens
    OnActivate verschoben und jetzt klappt alles problemlos.


Anmelden zum Antworten