Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Gesperrtes Textfeld überspringen

Begonnen von Rainer 1984, April 10, 2011, 20:26:56

⏪ vorheriges - nächstes ⏩

Rainer 1984

Hallo Accessianer,

ich habe in Formularen einige durch vorangestellte Checkboxen gesperrte Felder.
Lassen sich durch einen Code solche gesterrten Felder überspringen, um diese nicht "durchtabben" zu müssen?

Beispiel: Feld 23 ist nicht gesperrt, nächstes nicht gesperrtes Feld ist Feld 39. Die Felder 24 - 38 sind gesperrt.
Wenn ich jetzt also meinen Cursor in Feld 23 habe, sollte dieser bei EINEM Tab-Druck ins Feld 39 springen.

Viele Grüße und einen schönen Sonntagabend wünscht

Rainer

database

#1
Hallo,

du KÖNNTEST im Formularentwurf die AKTIVIERUNGSREIHENFOLGE der Felder deines Formulars verändern.

Formularentwurf, Steuerelement markieren dessen Eigenschaften anzeigen .... Registerkarte 'Andere' und da die Reihenfolgeposition angeben.

oder

Formularentwurf, Rechtsklick in die Feomularfläche und dann 'Aktivierreihenfolge' aus dem Kontextmenü auswählen.
Im angezeigten Dialog kannst du dann die Reihenfolge der Steuerelementaktivierung durch ziehen der Feldnamen in der Liste verändern.

oder

die Feldern nicht nur sperren sondern auch auf Disabled stellen (Aktiviert NEIN, Gesperrt JA) dann wird der Cursor nicht in das gesperrte Feld getabt.


HTH

Rainer 1984

Guten Morgen Peter,

zunächst vielen Dank für Deine Antworten.

Die Aktivierungsreihenfolgeeinstellungen sind mir bekannt - diese sollen beibehalten werden.
Ebenso die Aktivierungs- und Sperrungseinstellungen - die entsprechenden Felder stehen auf Aktiviert = JA und Gesperrt = JA.

Die betreffenden Felder werden durch vorangestellte Checkboxen ge- bzw. entsperrt, hier einer der Codes als Beispiel:     If Me!KundSt_Antw_Erh = False Then
        Me!KundSt_AntwDat.Locked = True
        Me!KundSt_AntwDat.BackColor = RGB(204, 200, 194)   'Textfeldhintergrundfarbe mittelgrau 1
        Me!KundSt_AntwDat.ForeColor = RGB(162, 157, 150)   'Textfeldschriftfarbe mittelgrau 3
        Me!Bezeichnungsfeld102.ForeColor = RGB(162, 157, 150)   'Bezeichnungsfeldschriftfarbe mittelgrau 3
      Else
        Me!KundSt_AntwDat.Locked = False
        Me!KundSt_AntwDat.BackColor = RGB(255, 255, 255)   'Textfeldhintergrundfarbe weiß
        Me!KundSt_AntwDat.ForeColor = RGB(0, 0, 0)   'Textfeldschriftfarbe schwarz
        Me!Bezeichnungsfeld102.ForeColor = RGB(0, 0, 0)   'Bezeichnungsfeldschriftfarbe schwarz
     End If


Erklärung, wie es momentan ist: Wird die Checkbox "Antwort erhalten" auf JA (Häckchen drin) gesetzt, ändern sich die entsprechenden Farben des Feldes "Antwortdatum" und dessen Bezeichnungsfeldes, die Sperrung wird aufgehoben und ich kann ein Datum eingeben.

So soll es auch mit dem Cursor sein:
Steht die Checkbox auf JA, soll per Tabtaste der Cursor ins nächste Feld, also "Antwortdatum" springen.
Steht die Checkbox auf NEIN, soll der Cursor erst in das nächste ungesperrte Feld springen.

Vielen Dank im Voraus und einen schönen Wochenanfang wünscht

Rainer

DF6GL

Hallo,



Sub irgendeingeeignetesEreignis ()
Me!KundSt_AntwDat.TabStop  =  Me!KundSt_Antw_Erh
End Sub

database

#4
Hallo,

Zitatdie entsprechenden Felder stehen auf Aktiviert = JA und Gesperrt = JA.

Ich gehe davon aus, dass untenstehender Code aus dem Klick-Ereignis der Checkbox stammt.

Wenn du deinen Code beim Setzen des Häkchens fogendermaßen abändern würdest ...


    If Me!KundSt_Antw_Erh = False Then
       Me!KundSt_AntwDat.Locked = True
       Me!KundSt_AntwDat.Enabled = False 'neu
       Me!KundSt_AntwDat.BackColor = RGB(204, 200, 194)   'Textfeldhintergrundfarbe mittelgrau 1
       Me!KundSt_AntwDat.ForeColor = RGB(162, 157, 150)   'Textfeldschriftfarbe mittelgrau 3
       Me!Bezeichnungsfeld102.ForeColor = RGB(162, 157, 150)   'Bezeichnungsfeldschriftfarbe mittelgrau 3
     Else
       Me!KundSt_AntwDat.Locked = False
       Me!KundSt_AntwDat.Enabled= True 'neu
       Me!KundSt_AntwDat.BackColor = RGB(255, 255, 255)   'Textfeldhintergrundfarbe weiß
       Me!KundSt_AntwDat.ForeColor = RGB(0, 0, 0)   'Textfeldschriftfarbe schwarz
       Me!Bezeichnungsfeld102.ForeColor = RGB(0, 0, 0)   'Bezeichnungsfeldschriftfarbe schwarz
    End If


... ändert sich an der, von dir bestimmten Reihefolgeposition der Eingabefelder NICHTS.
Das betreffende Feld wird aber vom Cursor nicht mehr angesprungen, bis es wieder freigegeben - also die Sperre wieder aufgehoben wird (Else-Zweig deiner Bedingung)!

Den gleichen Code benötigst du dann auch im Ereignis 'Beim Anzeigen' des Formulars um die Effekte beim Datensatzwechsel zu erhalten.
Wobei du dort per Durchlauf der Steuerelementsauflistung natürlich den Code drastisch verkürzen könntest. (Vorausgesetzt die Bezeichnung der Checkboxen folgt einem einheitlichen Muster)

HTH


Rainer 1984

Hallo Peter,

habe mich für Deinen Codezusatz entschieden, vielen Dank, funktioniert problemlos!  :)
Im Prinzip sehr einfach - ich wäre jedoch nicht so einfach dahintergestiegen.  ;)

Zitat
Ich gehe davon aus, dass untenstehender Code aus dem Klick-Ereignis der Checkbox stammt.

Ja, das tut er - und zusätzlich im "Beim Anzeigen" unter dem Auswahltyp "Formular".
Genauso, wie die vielen anderen Codes für diese Checkbox-Funktion.

@ Franz: Vielen Dank auch für Deine Hilfe!  :)

Viele Grüße

Rainer

database

Hallo Rainer,

freut mich, dass ich helfen konnte!  ;D

Da deine Frage hiermit als beantwortet anzusehen sein wird möchte ich dich ersuchen den Thread in DEINEM ersten Beitrag auf 'gelöst' zu setzen - DANKE!