Hi... Ich zerbreche mir den Kopf und komme nicht weiter... Ich möchte eine Schaltfläche in einem Formularkopf nach dem Inhalt eines Feldes einfärben. Dazu folgender Code:
If Me.IsPrimeryContact = -1 Then Me.Befehl834.BackColor = RGB(0, 238, 0) Else Me.Befehl834.BackColor = RGB(238, 0, 0)
Problem ist, dass dieser Code mal funktionierte. Plötzlich wird aber die Schaltfläche gar nicht mehr eingefärbt. Sie müsste ja entweder rot oder grün werden. Sie bleibt aber grau.
Den Code habe ich mal im Current, mal im Load Ereignis platziert. Weiterhin habe ich die IF Then Else Klausel auch mal als mehrzeiligen Code implementiert und eine MsgBox eingefügt. Die MsgBox wird ausgeführt, aber die Schaltfläche bleibt grau. :o :o :o
Ich erhalte auch keine Fehlermeldung...
Woran kann das denn liegen? Ich bin ratlos. Kann jemand helfen?
Hallo,
in welcher Prozedur steht denn diese Bedingung?
Wie ich geschrieben hatte, habe ich es in den Prozeduren des current und des load Ereignisses versucht. Beide mit gleichem Ergebnis. Oder was meintest Du?
Hallo,
ja, hatte ich wohl überlesen..
Trotzdem: zeige nochmal die komplette Prozedur und prüfe Folgendes:
--Option Explict in allen(!) Modulköpfen.
--Debuggen/kompilieren ausführen und evtl. Fehler eliminieren.
--Felder gebunden?
--Steht "[Ereignisprozedur]" In der Form-Eigenschaft "Beim Anzeigen"?
--Haltepunkt in den Prozedur-Code setzen und mit Einzelschritt durchlaufen.
Zitat von: DF6GL am April 14, 2016, 11:13:01
Trotzdem: zeige nochmal die komplette Prozedur und prüfe Folgendes:
--Option Explict in allen(!) Modulköpfen. ja
--Debuggen/kompilieren ausführen und evtl. Fehler eliminieren. ohne Fehler
--Felder gebunden? Feld ist nicht gebunden.. nur eine Schaltfläche hinter welcher ein "Bei Klicken" Ereignis abläuft
--Steht "[Ereignisprozedur]" In der Form-Eigenschaft "Beim Anzeigen"? ja
--Haltepunkt in den Prozedur-Code setzen und mit Einzelschritt durchlaufen.
Private Sub Form_Load()
'// Farbe für Schaltfläche Primärkontakt einstellen
If Me.IsPrimeryContact = -1 Then Me.Befehl834.BackColor = RGB(0, 238, 0) Else Me.Befehl834.BackColor = RGB(238, 0, 0)
End Sub
Einzelschritte werden abgearbeitet.. Finde keine Fehler...
Hallo,
nutze mal das Form_Current-Ereignis. Bei Load ist noch nicht sicher, welcher Wert in IsPrimeryContact steht.
Ist "IsPrimeryContact"gebunden, bezieht also seinen Wert aus der Datenherkunft?
Private Sub Form_Current()
If Me!IsPrimeryContact = -1 Then
Me!Befehl834.BackColor = RGB(0, 238, 0)
Else
Me!Befehl834.BackColor = RGB(238, 0, 0)
End If
End Sub
Hi,
ZitatBei Load ist noch nicht sicher, welcher Wert in IsPrimeryContact steht.
das ist zwar nicht zutreffend, aber sofern es sich um ein Datenfeld aus der Datenquelle des Formulars handelt, bezieht sich das dann ja nur auf den (zufällig) ersten Datensatz. Form_Current sollte hier also die bessere Wahl sein.
IsPrimeryContact ist ein Bezug auf die Tabelle, welche als Grundlage des Formulars dient. Ich habe auch schon in den Code eine MsgBox eingebaut, welche den korrekten Wert anzeigt. Einzig die Einfärbung wird nicht vorgenommen. Wie gesagt, beides Current und Load schon probiert.. Der Formularkopf hingegen wird korrekt eingefärbt....
Habe die Schaltfläche auch schon mal gelöscht und eine neue gemacht, gleiches Ergebnis....
Welche Access-Version setzt du ein? Kann es etwas mit Styles etc. zu tun haben?
Hallo,
dann setz doch mal einen Haltepunkt an den Anfang der Prozedur und prüfe den Inhalt von "IsPrimeryContact"...
Office 16. Was sind Styles? Wenn Du das Design der Schaltfläche meinst, dann steht es auf NEIN.
DF6GL: Wie mache ich das genau. Haltepunkt ist klar, aber wie mache ich das genau?
Hallo,
dann stell die Eigenschaft auf Ja...
Einfach die Maus über den Feldnamen stellen, falls der Haltepunkt aktiv ist.
DF6GL: es lag an der Design-Einstellung... Seltsam. Mir war nicht bewusst, dies geändert zu haben. Also vielen Dank auch an MaggiMay...
Wegen sowas habe ich mir eine Woche lang den Kopf zerbrochen... unmöglich... :o