none
Zuweisen von Shortcuts in Klassen

    Frage

  • Hallo zusammen

    Ich habe ein Formular, welches ich als Klasse und Unterformular in einigen meiner Formulare benötige. Es beinhaltet ein paar Schaltflächen, welche etwas erledigen. Die Klasse wird, sofern sie benötigt wird, beim Open-Ereignis eines Formulares geladen:

    DIM clsDS as clsDatensatz
    
    set clsDS = New clsDatensatz
    ...

    Soweit funktioniert alles. Jetzt ist die Anforderung aufgetaucht, für die Ereignisse dieser Klasse Shortcuts zu verwenden. Und dafür habe ich die Frage, wie ich das am einfachsten mache.

    Meine bisherigen Überlegungen: Ich lege im Makro 'Autokeys' (existiert schon, da ich schon einige Shortcuts, welche für alle Formulare gültig sind, hinterlegt habe) einen neuen Shortcut an. Damit löse ich eine Prozedur aus, welche mir per screen.Activeform.name das aktuelle Formular resp. dessen Namen ausgibt. Dann prüfe ich, ob dort ein Unterformular mit einem bestimmten Namen (ist immer der Gleiche) vorhanden ist oder nicht. Wenn ja, dann hmm, wie übergebe ich von aussen eine Anweisung an eine Klasse, welche nur in einem Formular gültig ist?

    Oder gibt es überhaupt eine einfachere Lösung? Wer kann mir weiterhelfen?

    Gruss

    Thomas


    Danke und Gruss Thomas



    • Bearbeitet Alphawolfi Montag, 9. April 2012 09:20
    Montag, 9. April 2012 09:18

Antworten

  • Hallo!

    Ich nehme an, du willst per Shortcut ein Ereignis aus der Klasse auslösen.

    Dazu könntest du in der Klasse eine (Public) Methode erstellen, die das Ereignis per RaiseEvent auslöst. (Ein "direktes" RaiseEvent von außen ist meiner Meinung nach nicht möglich.)
    Da das Unterformular die jeweilige Instanz dieser Klasse gespeichert hat, kann du über eine weitere Methode im Unterformular die Methode aus der Klasse aufrufen.

    Als Alternative zum Marko "AutoKeys" kannst du übrigens auch in einem Formular auf Tasten-Klicks reagieren. Dazu aktivierst du die Eigenschaft "Tastenvorschau" im Formular (um auch an die Tastenklicks zu kommen, die innerhalb einer Textbox u. ä. verwendet werden) und reagierst z. B. auf das Ereignis "KeyDown" (bei Keydown oder KeyUp kann man auch Strg, Umschalt und Alt auswerten).

    Anm.: Ich ging davon aus, dass die Klasse "clsDatensatz" kein Formular-Referenz speichert - sollte eine Formular-Referenz gespeichert werden, könnte die Klasse selbst auf das Ereignis "KeyDown" des Formulars reagieren.

    mfg
    Josef


    Code-Bibliothek für Access-Entwickler
    AccUnit - Testen von Access-Anwendungen
    Virtueller Access-Stammtisch


    • Bearbeitet Josef Pötzl Mittwoch, 11. April 2012 08:47
    • Als Antwort markiert Alphawolfi Montag, 23. April 2012 17:20
    Mittwoch, 11. April 2012 08:46

Alle Antworten

  • Hallo!

    Ich nehme an, du willst per Shortcut ein Ereignis aus der Klasse auslösen.

    Dazu könntest du in der Klasse eine (Public) Methode erstellen, die das Ereignis per RaiseEvent auslöst. (Ein "direktes" RaiseEvent von außen ist meiner Meinung nach nicht möglich.)
    Da das Unterformular die jeweilige Instanz dieser Klasse gespeichert hat, kann du über eine weitere Methode im Unterformular die Methode aus der Klasse aufrufen.

    Als Alternative zum Marko "AutoKeys" kannst du übrigens auch in einem Formular auf Tasten-Klicks reagieren. Dazu aktivierst du die Eigenschaft "Tastenvorschau" im Formular (um auch an die Tastenklicks zu kommen, die innerhalb einer Textbox u. ä. verwendet werden) und reagierst z. B. auf das Ereignis "KeyDown" (bei Keydown oder KeyUp kann man auch Strg, Umschalt und Alt auswerten).

    Anm.: Ich ging davon aus, dass die Klasse "clsDatensatz" kein Formular-Referenz speichert - sollte eine Formular-Referenz gespeichert werden, könnte die Klasse selbst auf das Ereignis "KeyDown" des Formulars reagieren.

    mfg
    Josef


    Code-Bibliothek für Access-Entwickler
    AccUnit - Testen von Access-Anwendungen
    Virtueller Access-Stammtisch


    • Bearbeitet Josef Pötzl Mittwoch, 11. April 2012 08:47
    • Als Antwort markiert Alphawolfi Montag, 23. April 2012 17:20
    Mittwoch, 11. April 2012 08:46
  • Hallo Josef

    Danke für Deine Antwort. Die hilft mir so weiter.


    Danke und Gruss Thomas

    Montag, 23. April 2012 17:20