Anzahl an einer Schaltfläche anzeigen
Zeigen Sie an, wie viele Elemente hinter einer Access-Schaltfläche warten – „3“ offene Sitzungen an Sitzungen, einen roten Punkt an Hinweise –, so wie Outlook und Teams ungelesene Elemente kennzeichnen, ohne die Schaltfläche zu ändern und ohne ein zweites Klickziel.
Voraussetzungen: WKL Forms Object Library 1.35 oder höher.
Lösungsüberblick
WklBadgeist ein kleines ActiveX-Steuerelement. Legen Sie es neben die Schaltfläche, setzen SieTargetauf den Namen der Schaltfläche undCornerauf die Ecke. In der Formularansicht setzt es sich selbst auf diese Ecke und folgt der Schaltfläche, wenn Code sie verschiebt, in der Größe ändert oder ausblendet.- Der Wert: Setzen Sie
Countper Code, oder binden Sie das Badge über seinen Steuerelementinhalt an ein Feld oder einen Ausdruck wie=DCount(...). Der Wert 0, Null und ein leerer Wert blenden das Badge aus; oberhalb vonMaxzeigt es „99+“.Dotzeigt eine Markierung ohne Zahl. - Klicks und Tastatur: Ein Klick auf das Badge erreicht die Schaltfläche darunter; das Badge ist kein Tabstopp. Bildschirmsprachausgaben hören „Sitzungen: 3“ mit der vollständigen Anzahl.
Umsetzung
Die Tabelle des Beispiels, einmalig angelegt (führen Sie die Prozedur im Direktbereich aus):
Public Sub CreateBadgeSample()
With CurrentDb
.Execute "CREATE TABLE tblSitzung (ID LONG CONSTRAINT PK_Sitzung PRIMARY KEY, KundeID LONG, Offen YESNO)"
.Execute "INSERT INTO tblSitzung VALUES (1, 1, True)"
.Execute "INSERT INTO tblSitzung VALUES (2, 1, True)"
.Execute "INSERT INTO tblSitzung VALUES (3, 2, False)"
End With
End Sub
Ein Formular frmStart enthält die Schaltfläche cmdSitzungen und ein Badge badSitzungen, das nahe ihrer oberen
rechten Ecke gezeichnet ist. Die Eigenschaften des Badges werden einmalig im Eigenschaftenblatt (Registerkarte
Andere) oder in der Entwurfsansicht per Code gesetzt; hier der Übersicht halber per Code in Form_Load:
Option Compare Database
Option Explicit
Private Sub Form_Load()
With Me!badSitzungen.Object
.Target = "cmdSitzungen"
.Corner = wbcTopRight
.AccessibleText = "Offene Sitzungen"
End With
ZaehlerAktualisieren
End Sub
Private Sub Form_Timer()
ZaehlerAktualisieren ' TimerInterval = 30000: every 30 seconds
End Sub
Private Sub ZaehlerAktualisieren()
Me!badSitzungen.Object.Count = DCount("*", "tblSitzung", "Offen = True")
End Sub
Gebunden statt per Code: Setzen Sie den Steuerelementinhalt des Badges auf den Ausdruck; Access berechnet ihn mit dem Datensatz des Formulars:
' In design view, or in the property sheet: Control Source of badSitzungen
Me!badSitzungen.ControlSource = "=DCount(""*"",""tblSitzung"",""Offen = True AND KundeID = "" & [KundeID])"
Ein Punkt an einem Bezeichnungsfeld, in der Farbe einer Warnung:
With Me!badHinweise.Object
.Target = "lblHinweise"
.Dot = True
.Kind = wskWarn
End With
Hinweise
- In der Entwurfsansicht bleibt das Badge dort, wo Sie es gezeichnet haben; erst in der Formularansicht wandert es auf das Ziel. Zeichnen Sie es nahe an seinem Platz, damit der Entwurf aussieht wie das Formular.
- Das Ziel muss ein Steuerelement ohne eigenes Fenster sein: eine Schaltfläche, ein Bezeichnungsfeld, ein Bild, ein Textfeld oder ein WKL-Steuerelement. Access zeichnet Unterformulare über jedes ActiveX-Steuerelement; ein Badge auf einem Unterformular bleibt verdeckt, legen Sie es daher neben das Unterformular.
- Nicht im Detailbereich eines Endlosformulars; in dessen Formularkopf oder -fuß funktioniert das Badge. Eine Anzahl je Datensatz gehört in eine Spalte eines
WklGrid. - Ein Badge mit
Clickable= True nimmt Klicks selbst an und löstClickaus. Es ist dann ein Bedienelement, und seine Einstellung TabStop bleibt so, wie Access sie gesetzt hat.
Verwandte Themen
- API-Referenz (Englisch): WklBadge – Member, Ecken, Regeln für den Wert.
- Anzahlen an Navigationseinträgen anzeigen – dasselbe Badge an Einträgen einer
WklNavBar.