Hi Accessfans,
folgendes funktioniert gut:
Wenn die Checkbox "Aktivität" angeklickt ist, sind der Schriftzug vom Bezeichnungsfeld "Deaktivierung Begründung" und das nebendran liegende Textfeld "Deaktivierung_Begründung" standardmäßig hellgrau gefärbt und ich kann, wie gewünscht, in das Textfeld keine Werte eingeben.
Dazu habe ich an folgenden Stellen folgenden Code eingegeben
- Eigenschaftenblatt, Formular, Ereignis, Beim Anzeigen
- Eigenschaftenblatt, Aktivität, Ereignis, Nach Aktualisierung
If Me!Aktivität = True Then
Me!Deaktivierung_Begründung.Enabled = False
Else
Me!Deaktivierung_Begründung.Enabled = True
End If
Doch hier das Problem:
Statt der standardmäßig eingestellten hellgrauen Farbe hätte ich gerne eine andere Farbe (dunkleres Grau).
Habe versucht, folgenden Code mit den gewünschten Farben (Feld und Schrift) in o.g. Code einzubauen.
Me!Deaktivierung_Begründung.BackColor = RGB(216, 216, 216)
Me!Deaktivierung_Begründung.ForeColor = RGB(165, 165, 165)
Das Ergebnis ist jedoch immer das gleiche - die Farben zeigen sich nur im deaktivierten Zustand der Checkbox (also wenn sie NICHT angeklickt ist).
Viele Grüße
Rainer
Hallo,
wie lautet denn nun dein gesamter Code bei welchem Ereignis?
Gruß Oma
Hallo Oma,
unter folgendem Ereignis steht folgender Code:
- Eigenschaftenblatt, Formular, Ereignis, Beim Anzeigen:
Private Sub Form_Current()
If Me!Aktivität = True Then
Me!Deaktivierung_Begründung.Enabled = False
Else
Me!Deaktivierung_Begründung.Enabled = True
End If
End Sub
Genauso steht unter folgendem Ereignis folgender Code (ist im Kern der gleiche, wie oben):
- Eigenschaftenblatt, Aktivität, Ereignis, Nach Aktualisierung
Private Sub Aktivität_AfterUpdate()
If Me!Aktivität = True Then
Me!Deaktivierung_Begründung.Enabled = False
Else
Me!Deaktivierung_Begründung.Enabled = True
End If
End Sub
Habe versucht, folgende Code-Bausteine an verschiedenen Stellen des oberen Codes einzubauen:
Me!Deaktivierung_Begründung.BackColor = RGB(216, 216, 216)
Me!Deaktivierung_Begründung.ForeColor = RGB(165, 165, 165)
Viele Grüße
Rainer
Hallo Rainer,
ich denke, so wie du es dir vorstellst wird es nicht gehen
Beim Einstellen von Enabled=False wird bei einem Textfeld immer von Access die Text- u. Hintergrundfarbe automatisch grau eingestellt u. kann nicht verändert werden!
Für ein Bezeichnungsfeld wird die Textfarbe ebenfalls auf unverändertes grau gestellt, die Hintergrundfarbe kann aber mit BackColor eingestellt werden.
Gruß Oma
Hallo Oma,
das ist aber schade. :o
Lässt sich das irgendwie über bedingte Formatierung verwirklichen?
Vielen Dank und viele Grüße
Rainer
Moin,
das Textfeld kannst Du einstellen mit
Dim oFmtC As FormatCondition
Me.[DeinFeld].FormatConditions.Delete
Set oFmtC = Me![DeinFeld].FormatConditions.Add(acExpression, , [DeinFeld].Enabled = False) 'Bedingung
Me![DeinFeld].FormatConditions(0).BackColor = 255 ' rot
siehe auch: http://www.access-o-mania.de/forum/index.php?topic=13794 (http://www.access-o-mania.de/forum/index.php?topic=13794)
Harald
Hallo Harald,
Es soll für ein Textfeld Enabled=False gesetzt werden u. dann soll ForeColor bzw. BackColor für das Feld nicht grau sondern eine andere Farbe eingesetzt werden.
Hast du das mal mit dem Vorschlag mit FormatCondition geprüft?
Gruß Oma
Hallo,
im Anhang wird das Ändern der Hintergrundfarbe und das Sperren (ok locked und nicht enabled) eines Steuerelementes durch eine Kombifeld gesteuert. Funktioniert auch in der Datenblatt-Anzeige.
Ich hoffe, ich hatte nichts falsch verstanden.
Harald
[Anhang gelöscht durch Administrator]
Hallo Harald,
erstmal Danke! :)
Komme momentan noch nicht dazu mir das anzuschauen, werde mich aber demnächst auf jeden Fall melden.
Viele Grüße
Rainer
Hallo Harald,
Zitatok locked und nicht enabled
genau deshalb hatte ich nachgefragt, ein enabled wird nicht gehen mit der bedingten Formatierung !?
Gruß Oma
Hallo Harald,
so, bin wieder da. ;)
Habe Deinen Code aus Antwort #5 mal versuchsweise eingegeben.
Resultat: Egal, ob Checkbox aktiv ist oder nicht, das nebenstehende Textfeld ist leider immer "rot".
Viele Grüße
Rainer
Moin Rainer,
wenn ich bei dem zuvor hinterlegten Beispiel im Formular im Kombifeld ein "Nein" eintrage wird das Feld Anwendung grün, bei einem "Ja"-Eintrag wird es rot.
Wie schon an anderer Stelle erwähnt (siehe oma's Beitrag), kann access ein enabled=false-Feld nicht mit anderer Farbe darstellen.
Anbei ein Beispiel, wie man das aber über einen Umweg simulieren kann. Deshalb taucht in den beiden folgenden Sätzen das Wort "scheinbar" auf.
1. Im Formular "Hintergrund mit Steuerelement steuern" kannst Du mit dem Feld "erlaubt" steuern, ob ein Zugriff auf die anderen Felder möglich ist oder nicht. Wenn nein, sind diese grau unterlegt und (scheinbar) nicht anklickbar.
2. Im Formular "Hintergrund mit locked steuern" sind einige Felder als Locked=true eingestuft. Diese sind grau hinterlegt und (scheinbar) nicht anklickbar.
Harald
[Anhang gelöscht durch Administrator]
Hallo,
@Harald:
ZitatWie schon an anderer Stelle erwähnt (siehe oma's Beitrag), kann access ein enabled=false-Feld nicht mit anderer Farbe darstellen.
ich hatte das probiert, u. ich konnte immer die Hintergrundfarbe mit FormatCondition ändern (kein Standardgrau), aber das Feld war eigenartiger Weise aktivierbar, obwohl enabled=false gesetzt war. Keine Ahnung warum das so ist?
Gruß Oma
Hallo Harald,
zuerst danke ich Dir für die angehängten Beispiele.
Bin mir jetzt nicht ganz schlüssig, was ich machen soll. Auf den ersten Blick scheinen Deine Codes etwas kompliziert zu sein - bin erst Anfänger.
Außerdem benutze ich Checkboxen (also mit Häckchen) und keine "Ja" oder "Nein"-Eingaben.
Was ich noch zum Standardgrau von Access sagen wollte: Die Schrift im Bezeichnungsfeld ist bei aktivierter Checkbox irgendwie doppelt vorhanden und dadurch schlecht lesbar. Weiß UND Grau. Und zwar um ca. 1 mm versetzt. Man sieht auch deutlich das abgesägte "g" des grauen Schriftzugs. Bei deaktivierter Checkbox und schwarzer Schrift im Bezeichnungsfeld ist alles okay. Siehe dazu auch die beigefügte JPG-Datei - da sind beide Zustände sichtbar. Könnte das ein Fehler in Access sein?
Viele Grüße
Rainer
[Anhang gelöscht durch Administrator]
Hallo Rainer,
vielleicht entspricht das Beispiel im Anhang besser Deinem Vorhaben.
Im VBA-Teil habe ich ein paar Erläuterungen eintragen.
Harald
[Anhang gelöscht durch Administrator]
Hallo Harald,
habe heute den ganzen Nachmittag herumprobiert und folgende Codes erstellt, die super funktionieren: :D :D :D
Das Wochenende ist gerettet! :D :D :D
unter folgendem Ereignis steht folgender Code (analog zu Antwort #2):
- Eigenschaftenblatt, Formular, Ereignis, Beim Anzeigen:
Private Sub Form_Current()
If Me!Aktivität = True Then
Me!Deaktivierung_Begründung.Locked = True
Me!Deaktivierung_Begründung.BackColor = RGB(204, 200, 194) 'Textfeldhintergrundfarbe mittelgrau 1
Me!Deaktivierung_Begründung.ForeColor = RGB(162, 157, 150) 'Textfeldschriftfarbe mittelgrau 3
Me!Bezeichnungsfeld30.ForeColor = RGB(162, 157, 150) 'Bezeichnungsfeldschriftfarbe mittelgrau 3
Else
Me!Deaktivierung_Begründung.Locked = False
Me!Deaktivierung_Begründung.BackColor = RGB(255, 255, 255) 'Textfeldhintergrundfarbe weiß
Me!Deaktivierung_Begründung.ForeColor = RGB(0, 0, 0) 'Textfeldschriftfarbe schwarz
Me!Bezeichnungsfeld30.ForeColor = RGB(0, 0, 0) 'Bezeichnungsfeldschriftfarbe schwarz
End If
End Sub
Genauso steht unter folgendem Ereignis folgender Code, ist im Kern der gleiche, wie oben (analog zu Antwort #2):
- Eigenschaftenblatt, Aktivität, Ereignis, Nach Aktualisierung:
Private Sub Aktivität_AfterUpdate()
If Me!Aktivität = True Then
Me!Deaktivierung_Begründung.Locked = True
Me!Deaktivierung_Begründung.BackColor = RGB(204, 200, 194) 'Textfeldhintergrundfarbe mittelgrau 1
Me!Deaktivierung_Begründung.ForeColor = RGB(162, 157, 150) 'Textfeldschriftfarbe mittelgrau 3
Me!Bezeichnungsfeld30.ForeColor = RGB(162, 157, 150) 'Bezeichnungsfeldschriftfarbe mittelgrau 3
Else
Me!Deaktivierung_Begründung.Locked = False
Me!Deaktivierung_Begründung.BackColor = RGB(255, 255, 255) 'Textfeldhintergrundfarbe weiß
Me!Deaktivierung_Begründung.ForeColor = RGB(0, 0, 0) 'Textfeldschriftfarbe schwarz
Me!Bezeichnungsfeld30.ForeColor = RGB(0, 0, 0) 'Bezeichnungsfeldschriftfarbe schwarz
End If
End Sub
Habe mir Deine Datei mit dem Code angeschaut, der auch funktioniert, steige jedoch nicht ganz dahinter, wieso der so komplex ist. Ich denke nach einer Weile werde ich auch solche Brocken verdauen. ;)
Übrigens ist auch das Problem mit den doppelten Schriften verschwunden, siehe mein letztes Posting (Antwort #13).
Trotzdem vielen Dank für Deine Hilfe! :)
Viele Grüße
Rainer