Form_Terminate setzt anderes Fenster in Focus --> Problem wenn Fenster b visible = f

DrMueller

Erfahrenes Mitglied
Hallo Leute,
folgendes Problem:
Wir überprüfen bei einem Detailfenster beim Terminate, welches hwnd dieses aufgerufen hat und setzen so dieses HWND in den Fokus.
Sieht so aus:
Code:
      Dim f As Form
      For Each f In Forms
        If f.hwnd = FromHWND Then
          DoEvents 
          f.Show
          f.SetFocus
          If f.name = "frmFind" Then                                    
            f.SetFokusToList
          End If
          Exit For
        End If
      Next

Wobei das f.show meiner Meinung nach noch unnötig wäre, aber das ist beim derzeitigen Problem irrelevant.
Folgendes: Dies klappt gut, sofern das Parent-Form offen ist, wenn ich aber beide Fenster ganz schnell hintereinander schliesse öffnet er das Formular einfach nochmal, aber da die Logik dahiner nicht aktiviert wird, einfach leer.
Ich kann auch nicht auf visible überprüfen, da bei einer solchen Überprüfung das Formular bereits geöffnet wird. Selbst mit API und WinClassEx kann ich dies nicht machen. Hier geht ebenfalls das Fenster auf bei einer Property-Abfrage.
Ich habe noch versucht das ganze in den QueryUnload zu packen. Dort öffnet sich dann zwar das Fenster nicht neu, aber der Fokus wird nicht gesetzt, da ja das alte Fenster noch nicht 100% entladen ist.

Am einfachsten wäre es, wenn ich eine Visibility Überprüfung machen könnte, OHNE dass das Fenster bereits bei dieser aktiviert wird.

Hat da eventuell jemand eine Idee, wie man das bewerkstelligen kann?



Wie immer vielen Dank im Voraus

Müller Matthias
 
Zurück