Set Focus-Problem

06/12/2012 - 15:10 von Lothar Geyer | Report spam
Situation: drei Maske sind in einer MDI-Anwendung sichtbar. Maske A hat
den Fokus. Dann wird Maske B angeklickt, dann Maske C.
Wenn Maske B angeklickt wird, làuft darin eine làngere Prozedur, in der
eine Datenbankabfrage durchgeführt und das Ergebnis in einem Grid
dargestellt wird. Falls die Record-Anzahl größer als 0 ist, wird für das
Grid ein SetFocus durchgeführt.

Wird nun auf Maske C geklickt, bevor die Prozedur in Maske fertig ist,
ist Maske C im Vordergrund. Sobald dann das Grid aufgefüllt ist und das
SetFocus erreicht wird, kommt Maske B wieder in den Vordergrund.

Frage: wie kann ich das verhindern?
Das Grid in Maske B soll schon den Fokus erhalten - sofern was drin
steht. Aber das weiß ich erst nach der (langen) Datenbank-Abfrage.

Lothar Geyer
 

Lesen sie die antworten

#1 Christian Zimmermann
06/12/2012 - 16:08 | Warnen spam
Hallo Lothar,

Am 06.12.2012 15:10, schrieb Lothar Geyer:
Situation: drei Maske sind in einer MDI-Anwendung sichtbar. Maske A hat
den Fokus. Dann wird Maske B angeklickt, dann Maske C.



Maske ist nur eine Beschreibung für ein Eingabeszenario. Konkreter
werden es wohl MDI-Childs sein, oder nicht?

Wenn Maske B angeklickt wird, làuft darin eine làngere Prozedur, in der
eine Datenbankabfrage durchgeführt und das Ergebnis in einem Grid
dargestellt wird. Falls die Record-Anzahl größer als 0 ist, wird für das
Grid ein SetFocus durchgeführt.

Wird nun auf Maske C geklickt, bevor die Prozedur in Maske fertig ist,
ist Maske C im Vordergrund. Sobald dann das Grid aufgefüllt ist und das
SetFocus erreicht wird, kommt Maske B wieder in den Vordergrund.

Frage: wie kann ich das verhindern?
Das Grid in Maske B soll schon den Fokus erhalten - sofern was drin
steht. Aber das weiß ich erst nach der (langen) Datenbank-Abfrage.



Prüfe die .ActiveForm-Eigenschaft des MDI-Formulars auf die Form des
Grids, d. h. das Grid ohne Füllung soll nur dann den Focus bekommen,
wenn dessen Parent-Form im Vordergrund ist.

If (MDIForm1.ActiveForm Is FormB( Or _
(Grid1.Rows - Grid1.FixedRows > 0) Then
Grid1.SetFocus
End If

Gruß,
Christian

Ähnliche fragen