Funktionstasten

15/07/2016 - 16:52 von Lothar Geyer | Report spam
Ich möchte in einer MDI-Anwendung gerne folgendes realisieren:

1) wenn in einigen wenigen Child-Masken (und wenn diese Maske die aktive
Maske ist) die Tase F7 gedrückt wird, soll eine bestimmte Routine
durchlaufen werden
2) wenn in der aktiven Child-Maske keine Routine für F7 definiert ist,
soll eine "allgemeine" Routine aufgerufen werden

1) ist kein Problem. Im _KeyDown-Event der Maske wird bei
KeyCode=vbKeyF7 die gewünschte Routine aufgerufen. Aber wie bekomme ich
den Rest hin? Wenn ich F7 mit einem Menü-Punkt in der MDI-Maske
verknüpfe, wird immer zuerst die dort definierte Routine gestartet und
die Definition in der gerade aktiven Child-Maske ignoriert.

Wie kann ich das realisieren, ohne in allen Child-Masken (etwa 550) im
KeyDown auf F7 abfragen zu müssen?

Lothar Geyer
 

Lesen sie die antworten

#1 Wendelin Uez
16/07/2016 - 18:30 | Warnen spam
Wie kann ich das realisieren, ohne in allen Child-Masken (etwa 550) im
KeyDown auf F7 abfragen zu müssen?



Wenn es nur darum geht, nicht in allen Masken den KeyDown-Event suchen,
ggfs. einbauen und bearbeiten zu müssen, aber es machbar wàre, in denjenigen
Forms, in denen eine F7-Routine vorhanden sen soll, lediglich zusàtzlichen
Code irgendwie einzufügen, hàtte ich folgende Lösung aus der Praxis:

Hauptform ruft bei F7 sowas:

CALL ChildForm.XQT ()

und JEDE ChildForm bekommt (ggfs. automatisiert) eine neue, leere Sub XQT()
angehàngt:

Public Sub XQT ()
' nix hàppens
End Sub

Und in den paar ChildForms, in denen was passieren soll, wird XQT eben mit
Code versehen.

Wenn das Hauptprogramm für sein CALL ChildForm.XQT() die ChildForm nicht
schon irgendwie explizit weiß, dann braucht man eine globale Objektvariable
ChildForm und muß diese in jeder 'aktiven' ChildForm beim Aktivieren
zuweisen (SET ChildForm = Me) und - wichtig - beim Verlassen wieder
löschen, oder nur zuweisen ohne löschen, aber dann in ALLEN ChildForms.

Das klappt, und wenn's nicht klappt, dann machen wir's anders, das klappt
immer :-)

Ähnliche fragen