none
Access 2003 Formular auf Click Ereigniss reagieren

    Frage

  • Ich möchte auf ein klick ereigniss in einem formular reagieren ohne es hinter jedem controll zu hinterlegen

    in etwa bei click dann msgbox Screen.ActiveControl.Name

    Form_Click() funktioniert nur wenn ich auf das formular selber klicke

    Mittwoch, 15. September 2010 12:56

Antworten

  • Hallo,

    MCDPone wrote:

    ich möchte eine tabelle füllen mit dem namen des controls welches ich
    angeklickt habe wenn ich die strg taste gedrückt halte

    strg taste abfragen ist kein problem nur eben das click ereigniss

    da es eben bei jedem control reagieren soll kann ich nicht - und möchte
    ich nicht dieses bei jedem als click ereigniss hinterlegen

    Vielleicht waere es sinnvoll, nicht auf das Klick-Ereignis, sondern eine
    beliebige Tastenkombination zu reagieren. Das kannst du auf Formularebene
    einmalig definieren.

    Ansonsten, wenn's beim Click-Ereignis bleiben soll, muss zumindest der
    Funktionsaufruf pro Steuerelement hinterlegt werden, etwa so:

    Private Sub MeinElement_Click()
      Call ClickAufruf
    End Sub

    Private Function ClickAufruf
      'Hier steht Screen.ActiveControl zur Verfuegung
    End Function

    Gruss - Peter


    Mitglied im http://www.dbdev.org
    FAQ: http://www.donkarl.com

    Mittwoch, 15. September 2010 13:57
    Moderator

Alle Antworten

  • Hallo MCDPone,

    MCDPone schrieb folgendes:

    Ich möchte auf ein klick ereigniss in einem formular reagieren ohne
    es hinter jedem controll zu hinterlegen

    in etwa bei click dann msgbox Screen.ActiveControl.Name

    Form_Click() funktioniert nur wenn ich auf das formular selber
    klicke

    Klar.

    Was willst Du den genau erreichen? Egal wo Du im Form klickst darauf
    soll reagiert werden?

    Ansonsten wirst Du Deinen Code bei jedem Control auf welches Du
    reagieren willst hinterlegen.

    Gruß
    Gunter


    Access FAQ: http://www.donkarl.com

          http://www.avenius.de - http://www.AccessRibbon.de
    http://www.ribboncreator.de - http://www.ribboncreator2010.de

    Mittwoch, 15. September 2010 13:02
    Moderator
  • Hey

    ich möchte eine tabelle füllen mit dem namen des controls welches ich angeklickt habe wenn ich die strg taste gedrückt halte

    strg taste abfragen ist kein problem nur eben das click ereigniss

    da es eben bei jedem control reagieren soll kann ich nicht - und möchte ich nicht dieses bei jedem als click ereigniss hinterlegen

     

    Mittwoch, 15. September 2010 13:12
  • Hallo,

    MCDPone wrote:

    ich möchte eine tabelle füllen mit dem namen des controls welches ich
    angeklickt habe wenn ich die strg taste gedrückt halte

    strg taste abfragen ist kein problem nur eben das click ereigniss

    da es eben bei jedem control reagieren soll kann ich nicht - und möchte
    ich nicht dieses bei jedem als click ereigniss hinterlegen

    Vielleicht waere es sinnvoll, nicht auf das Klick-Ereignis, sondern eine
    beliebige Tastenkombination zu reagieren. Das kannst du auf Formularebene
    einmalig definieren.

    Ansonsten, wenn's beim Click-Ereignis bleiben soll, muss zumindest der
    Funktionsaufruf pro Steuerelement hinterlegt werden, etwa so:

    Private Sub MeinElement_Click()
      Call ClickAufruf
    End Sub

    Private Function ClickAufruf
      'Hier steht Screen.ActiveControl zur Verfuegung
    End Function

    Gruss - Peter


    Mitglied im http://www.dbdev.org
    FAQ: http://www.donkarl.com

    Mittwoch, 15. September 2010 13:57
    Moderator
  • Danke habe es jetzt per tastenkombination gelöst - klick war wunschgedanke

    hintergrund war der das der user selber die möglichkeit der reihenfolgenbestimmung im formular haben soll - es gibt eine standard reihenfolge die ich festlege

    doch diese sollte überschrieben werden wenn der user selber eine festlegen möchte

     

     

    Mittwoch, 15. September 2010 15:06
  • Hallo MCDPone
    Das geht bedingt mit der Tastatur Vorschau, wenn diese im Formular aktiviert ist.
    Ich habe allerdings schon oft beobachtet, dass es nicht ganz so gut ankommt.
    Daher mache ich in der Regel folgendes:
    Ich wähle alle beklickbaren Controls im Formular mit gedrückter Shift-Taste aus
    Dann öffne ich die Eigenschaft (ist dann eine Multiselection Eigenschaft) und schriebe in dem Click-Ereignis folgendes rein:
    =IchWurdeBeklickert(Screen.ActiveControl)
     
    Dann noch eine Funktion in das Form Modul rein:
    Private Function IchWurdeBeklickert(Ctl as Control)
      MsgBox ctl.Name & " wurde beklickert."
    End Function
     
    Schon fertig.
     
    Achtung: Bei den Controls, die bereits eine Ereignisprozedur hinter dem Klick Ereignis abgelegt haben, geht damit die Verbindung vom Formular zum Ereignis verloren. Diese wird dann nicht mehr aufgerufen. Du kannst das dannach wieder auf [Ereignisprozedur], rsp. [Event Procedure] zurückstellen und dann stattdessen in der Event Procedure einfach eine Zeile wie:
     
    Private Sub ..
      Call IchWurdeBeklickert(Sreen.ActiveControl)
      ..
    End Sub
     
    auch hier auslösen.
     
    Gruss
    Henry
    "MCDPone" <=?utf-8?B?TUNEUG9uZQ==?=> wrote in message news:33891956-a036-44e4-aea3-e487e42de3f4...

    Ich möchte auf ein klick ereigniss in einem formular reagieren ohne es hinter jedem controll zu hinterlegen

    in etwa bei click dann msgbox Screen.ActiveControl.Name

    Form_Click() funktioniert nur wenn ich auf das formular selber klicke


    [MVP Office Access]
    Freitag, 17. September 2010 11:01
  • Hallo Henry,

    Henry Habermacher [MVP] wrote:

    Ich wähle alle beklickbaren Controls im Formular mit gedrückter
    Shift-Taste aus Dann öffne ich die Eigenschaft (ist dann eine
    Multiselection Eigenschaft) und schriebe in dem Click-Ereignis folgendes
    rein:
    =IchWurdeBeklickert(Screen.ActiveControl)
     
    Dann noch eine Funktion in das Form Modul rein:
    Private Function IchWurdeBeklickert(Ctl as Control)

    Kleine Korrektur: Public Function ...
    Sonst steht die Funktion an der Oberflaeche nicht zur Verfuegung. Rest
    passt.

    Gruss - Peter


    Mitglied im http://www.dbdev.org
    FAQ: http://www.donkarl.com

    Freitag, 17. September 2010 14:07
    Moderator
  • Hallo, Peter!

    Peter Doering [MVP] wrote:

    Henry Habermacher [MVP] wrote:

    Ich wähle alle beklickbaren Controls im Formular mit gedrückter
    Shift-Taste aus Dann öffne ich die Eigenschaft (ist dann eine
    Multiselection Eigenschaft) und schriebe in dem Click-Ereignis
    folgendes rein:
    =IchWurdeBeklickert(Screen.ActiveControl)

    Dann noch eine Funktion in das Form Modul rein:
    Private Function IchWurdeBeklickert(Ctl as Control)

    Kleine Korrektur: Public Function ...
    Sonst steht die Funktion an der Oberflaeche nicht zur Verfuegung.
    Rest passt.

    Kleine Korrektur: Private Function ...
    Steht innerhalb desselben Formulares überall zur Verfügung.


    Servus
    Karl
    **************
    http://www.donkarl.com Access-FAQ
    http://www.donkarl.com/?aek 13. Access-Entwickler-Konferenz
    Nürnberg: 25./26.9. + 2./3.10.2010, Hannover: 16./17.10.2010

    Freitag, 17. September 2010 15:10
  • Hallo Karl,

    Karl Donaubauer [MVP] wrote:

    Peter Doering [MVP] wrote:


    Kleine Korrektur: Public Function ...
    Sonst steht die Funktion an der Oberflaeche nicht zur Verfuegung.
    Rest passt.

    Kleine Korrektur: Private Function ...
    Steht innerhalb desselben Formulares überall zur Verfügung.

    Stimmt, da muss mir beim Testen vorhin ein Fehler unterlaufen sein, weil an
    der Oberflaeche nur Public funktioniert hatte.
    Gruss - Peter


    Mitglied im http://www.dbdev.org
    FAQ: http://www.donkarl.com

    Freitag, 17. September 2010 21:34
    Moderator