Office: (Office 2010) Steuerelemente (Labels) über eine Klasse mit einem ClickEreignis ansprechen

Helfe beim Thema Steuerelemente (Labels) über eine Klasse mit einem ClickEreignis ansprechen in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, bisher war ich nur stiller Leser dieses Forum und konnte mir anhand der Forumssuche und der Beisspiele selbst helfen. Kompliment an... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Lipsam, 23. Februar 2016.

  1. Steuerelemente (Labels) über eine Klasse mit einem ClickEreignis ansprechen


    Hallo zusammen,

    bisher war ich nur stiller Leser dieses Forum und konnte mir anhand der Forumssuche und der Beisspiele selbst helfen. Kompliment an das Forum und die Beispiele. *Smilie

    Jetzt stehe ich aber vor einer Herausforderung bei der ich nicht weiterkomme und hoffe das mir einer helfen kann. Danke schonmal im Voraus.

    IST:
    ich habe ein Anzeige Formular was auf einer Matrix von Zeit und Plätzen besteht. Siehe dazu den Screenshot.


    Die Matrix habe ich mit Labels zusammengebaut. Jedes Label hat einen eindeutigen Namen. Dieser Name ist dem Label zugewiesen und auch in der Eigenschaft Tag. Die Matrix wird über eine SQL Abfrage befüllt.

    Beispiel:
    Zeit 8:00 Platz 1 = Z1P1
    Zeit 8:15 Platz 1 = Z2P1


    Soll:
    Allen Labels soll ein globales ClickEvent zugewiesen werden. Je nachdem ob ein Feld belegt ist soll er eben das Formular mit dem Datensatz aufrufen oder eben das Formular mit einem neuen Datensatz laden.


    Beim Laden meines Formulars führe ich den nachfolgenden Code aus. Damit durchlaufe ich alle benötigen Labels und lege eine EventProzedur an.
    Zusätzlich dazu habe ich mir eine Klasse angelegt oLabelEvent.

    Wie muss ich die Klasse mit dem ClickEvent zuorden oder bin ich ganz auf dem Holzweg?

    Das Forum habe ich durchsucht und auch den ein oder anderen beitrag dazu gefunden. Leider hat es mir nicht weitergeholfen.

    http://www.*************************483531_0_0_asc.php

    Code:
     
  2. Ich habe auf meiner Website einen ausführlichen Artikel darüber, wie man Ereignisse von einer unbestimmten Anzahl von Objekten behandeln kann. Der Artikel beschreibt genau dein Problem und dessen Lösung. - Leider bisher nur auf Englisch.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  3. Hallo Lipsam,
    ich lege in solchen Fällen eine! unsichtbare z.B. Befehlsschaltfläche über alle! in Frage kommenden Steuerelemente. Mit dem Ereignis Maustaste ab der Befehlsschaltfläche wird mit der Mausposition x und y der Name des darunter liegenden Steuerelements ermittelt und damit die weiteren Funktionen ausgeführt. Die Bezeichnung der Steuerelemente muss natürlich einer entsprechenden Logik folgen.
    Es reichen also ein paar Zeilen Code, um auf für alle Deine Felder auf das Klickereignis zu reagieren.
    Details im Anhang (A2000 Format).

    Funktioniert auch bei Endlosformularen.

    es grüßt Jens *Smilie
     
  4. Steuerelemente (Labels) über eine Klasse mit einem ClickEreignis ansprechen

    Hallo Lipsam,

    im Jahre 2004 stand ich vor demselben Problem und habe es damals so gelöst:

    Code:
    Das braucht man aber nicht bei jedem Form_Load zu machen. Es geht natürlich auch, dies einmal zu tun und die so veränderte form dann zu speichern.

    Sequenz dazu:
    Code:
    Danach bleibt dein Formular geöffnet - einfach schließen und alle deine betreffenden Felder haben z.B. als event-procedure on_click "subOnClickC(i)", wobei i der Feld-Index ist.
     
  5. Danke euch beiden. Ich sehe mir beides an.

    Den Ansatz über WithEvents finde ich eleganter, allerdings steige ich auch nach mehrmaligen lesen da noch nicht durch. Wie dass alles genau zusammenhängt und for allem wie ich es umsetzen kann.

    @Dinkel so eine Lösung ist mir auch schon in den Sinn gekommen und für mich nachvollziehbar wie der Aufbau ist *Smilie
     
  6. Hallo Lipsam,
    ein Vorschlag:

    statt einer Ereignisprozedur erstellst du im Formular Modul eine private Function, die den gewünschten Code ausführt.
    Diesem übergibst du den Namen des betroffenen Labels.

    private function LabelClick(sLabel$)
    'Hier folgen Deine Anweisungen
    'den Bezug zum Label hast du über den Namen controls(sLabel)


    Beim Label selbst erstellst du statt der Ereignisprozedur den Aufruf der Function per Code wie bisher

    ctl.OnClick = "=LabelClick("NameDesLabels")"

    Allerdings sollte es geüngen, den OnClick Code einmalig zu erstellen (im Entwurfsmodus möglich), außer du benötigst da einen dynamischen Wert, der erst zur Laufzeit feststeht)

    Wann immer mehrere Controls denselben Code auslösen sollen, kann man diese Variante wählen, anstatt für jedes Control eine Ereignisprozedur anzulegen.
    Das spart dann Arbeitsspeicher und Code.

    Wenn es sich um kein Label handelt, muss der Name nicht übergeben werden, da kann man dann mit activecontrol arbeiten.

    LG Markus
     
    markusxy, 25. Februar 2016
    #6
  7. sorry
    Code:
    Die Subs "subOnClickC(item as integer)" und subOnMouseMoveC(item as integer)" musst du natürlich in einem Modul als public definieren.

    Viel Erfolg mit dieser einfachen, pragmatischen Lösung.

    Gruß,
    Dinkel
     
  8. Steuerelemente (Labels) über eine Klasse mit einem ClickEreignis ansprechen

    Habe noch was vergessen.
    Erzeuge einfach ein neues Formular mit einem Button. Im Button_OnClick-Event kannst du dann den Code aus meinem vorigen Post unterbringen.
    Wenn's geklappt hat, einfach dein neues Formular mit dem Button löschen.
     
  9. \@SEP
    Hey, hast du vielleicht Interesse an meinem alten ColorPicker?
     
  10. //OT:
    Man kann einen eigenen Beitrag bis etwa zwei Stunden nach Erstellung editieren, also auch ergänzen.
    Dann wäre ein Beitragsgewitter in Frequenzen von 10 Sekunden, was von vielen als nicht schön empfunden wird, sehr einschränkbar.
     
  11. \@ Dinkel
    Ja, bietet sehr viele Funktionen. Vielleicht kannst Du Deinen ColorPicker hier zum Download zur Verfügung stellen. Dann haben Alle was davon.

    Es grüßt Jens *Smilie
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  12. Sorry, aber mein Code aus 2004 funktioniert in ACC2016 nicht mehr richtig. Ich glaube, es liegt daran, dass eine Event-Procedure der Form (Beispiel: Wert 4)
    subIrgendwas(4)
    von Access nicht mehr richtig erkannt wird. Es scheint so zu sein, dass Access (inzwischen) nach der Sub mit genau diesem Namen (inkl. der 4) sucht und nicht nach
    subIrgendwas()
    und den Wert 4 als Parameter übergibt. In ACC2000 hat das noch funktioniert.

    Das könnte man aber wohl dadurch lösen, dass man in subIrgendwas den Namen des aufrufenden Controls ermittelt oder vielleicht die 4 (Bsp.) in irgend einer anderen Eigenschaft des Feldes unterbringt.

    Muss ich aber noch probieren.
     
  13. Steuerelemente (Labels) über eine Klasse mit einem ClickEreignis ansprechen

    Guten Morgen,

    danke für die vielen Ideen. Aktuell habe ich es über dei Variante von Dinkel und Markusxy umgesetzt. Der Aufruf dazu hat sich ein wenig geändert. Der Vollständigkeit habe ich die Codeschnippsel angehängt.

    Die Klassenvariante will ich mir auch noch ansehen und nach Möglichkeit umsetzten. Mal sehen wie lange es dauert bis ich das rausgefunden habe *wink.gif*

    Code:
     
  14. subIrgendwas() gibts ja auch nicht

    entweder ist es:

    function subIrgendwas()

    oder

    sub subIrgendwas()

    Aber es geht nur mit Function subIrgendwas().


    Das geht bei einem Label nicht.
    Aber Lipsam hat es eh schon korrekt implementiert.
    LG Markus
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    markusxy, 25. Februar 2016
    #14
  15. \@markusxy
    Das ist leider eine Antwort, mit der niemand etwas anfangen kann.

    Damit widersprichst du dir selbst...

    Könntest du vielleicht erklären, warum das Ganze nur mit einer Function geht und nicht mit einer Sub? Immerhin hat das in ACC2000 problemlos funktioniert.
     
Thema:

Steuerelemente (Labels) über eine Klasse mit einem ClickEreignis ansprechen

Die Seite wird geladen...
  1. Steuerelemente (Labels) über eine Klasse mit einem ClickEreignis ansprechen - Similar Threads - Steuerelemente Labels Klasse

  2. Schnellbausteine, Auto Text und Auswahlfeld in Vorlage

    in Microsoft Word Hilfe
    Schnellbausteine, Auto Text und Auswahlfeld in Vorlage: Hallo in die Runde, ich stehe in der Firma vor folgender Herausforderung: Mein Bereich stellt für den Vertrieb standardisierte Angebote und sonstige Kundenschreiben bereit. Diese sollen durch...
  3. Bericht Steuerelementinhalt Kreuztabelle

    in Microsoft Access Hilfe
    Bericht Steuerelementinhalt Kreuztabelle: Hallo an alle, ich habe da mal eine Frage. Ich fülle einen Bericht über eine recht umfangreiche Kreuztabelle (Angestellte und deren Schulungen). Nun Muss ich die Angestellt auch Filtern können...
  4. Dropdownfeld in Word Formular

    in Microsoft Word Hilfe
    Dropdownfeld in Word Formular: Hallo, ich arbeite an einem Word Formular wo ich einige Dropdownfelder mit Ja/Nein einfügen möchte. Ich will, dass standardmäßig Nein ausgewählt ist und der User zwischen ja und nein wählen...
  5. MS Access Formular - mehrere Datensätze pro Steuerelement hinzufügen?

    in Microsoft Access Hilfe
    MS Access Formular - mehrere Datensätze pro Steuerelement hinzufügen?: Hallo Ihr Lieben, ich bastle gerade ein Formular. Nun such ich nach dem passenden "Steuerelement", dass ich mehrere Daten pro Feld eingeben kann, z.B. getrennt durch ein Semikolon oder ähnliches?...
  6. Excel Desktop App und Active X Steuerelemente

    in Microsoft Excel Hilfe
    Excel Desktop App und Active X Steuerelemente: Hallo, ich benutze Office 365 Single und habe in der Cloud eine Datei gespeichert, die Active-X-Steuerelemente, VBA und Makros enthält. In der Web-App von Excel 365 wird mir an der Stelle des...
  7. VBA Active X steuerelemente Auto-Eingabe wen eine Eingabe erfolgt

    in Microsoft Excel Hilfe
    VBA Active X steuerelemente Auto-Eingabe wen eine Eingabe erfolgt: hallo ich möchte gerne über Drei Aktive X Steuer Elemente das in Spalten "A" Datum ,"B"FSN, und in" C" Benutzer immer eine Auto Eingabe Erfolg wen ich beispielsweise in eine Zeil 4 eine Eingabe...
  8. ActiveX Steuerelemente funktionieren nicht richtig

    in Microsoft Excel Hilfe
    ActiveX Steuerelemente funktionieren nicht richtig: Guten Abend zusammen, ich habe folgendes Problem: Die ActiveX-Steuerelemente funktionieren auf einem Tabellenblatt nicht richtig. In einer UserForm geht alles ohne Probleme. Bei den...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden