Neuigkeiten:

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

Mobiles Hauptmenü

Farbkonstanten für die Hintergrundfarbe eines Textfeldes

Begonnen von mradlmaier, Mai 14, 2010, 20:15:54

⏪ vorheriges - nächstes ⏩

mradlmaier

Hallo,

Ich möchte den Hintergrund eines Textfeldes zwischen weiss und transparent umschalten. Zur Design-time funktioniert das auch gut mit den Eigenschaften Hintergrundart = Transparent und Hintergrundfarbe = Hintergrundformular für transparenten Hintergrund und den Eigenschaften Hintergrundart = Normal und Hintergrundfarbe = #FFFFFF für weiss.

Zu Laufzeit würde ich das gerne programmatisch machen. Habe einiges ausprobiert, funktioniert nur nicht...

Weiss jemand wie man das macht?

Danke

database

Hallo,
sowas kannst du zb mit Hilfe einer Umschaltfläche realisieren.

Private Sub TGLButton_Click()
   
    Dim lngWhite As Long
    lngWhite = RGB(255, 255, 255)

    If Me!DeinTextfeld.BackStyle = 1 Then
        Me!DeinTextfeld.BackColor = lngWhite
        Me!DeinTextfeld.BackStyle = 0
    Else
        Me!DeinTextfeld.BackStyle = 1
    End If

End Sub


Damit wird zwischen transparent und nicht transparent hin und her geschaltet.
Wenn der Hintergrund nicht transparent ist, dann wird er weiss dargestellt.

HTH

Peter

mradlmaier

Peter,

das wäre einleuchtend.
Wenn ich das aber in meine Code integriere, funktioniert das nicht:


Private Sub Form_Current()
    Dim lngWhite As Long
    lngWhite = RGB(255, 255, 255)
    If Me.NewRecord = True Then
        'hier der Code der bei einem neuen Datensatz gilt
        essDatum.ShowDatePicker = 1
        essDatum.BackStyle = 0
        essDatum.BackColor = lngWhite
        essDatum.Locked = False
    Else
        'hier der Code der bei einem existierendem Datensatz gilt
        essDatum.ShowDatePicker = 0
        essDatum.BackStyle = 1
        essDatum.Locked = True
    End If
End Sub

Ich möchte den Hintergrund wechseln in Abhängigkeit davon, ob der Datensatz neu ist oder nicht...

Zitat von: database am Mai 14, 2010, 20:34:29
Hallo,
sowas kannst du zb mit Hilfe einer Umschaltfläche realisieren.

Private Sub TGLButton_Click()
   
    Dim lngWhite As Long
    lngWhite = RGB(255, 255, 255)

    If Me!DeinTextfeld.BackStyle = 1 Then
        Me!DeinTextfeld.BackColor = lngWhite
        Me!DeinTextfeld.BackStyle = 0
    Else
        Me!DeinTextfeld.BackStyle = 1
    End If

End Sub


Damit wird zwischen transparent und nicht transparent hin und her geschaltet.
Wenn der Hintergrund nicht transparent ist, dann wird er weiss dargestellt.

HTH

Peter

database

Hallo,

habe das eben mal nachgestellt - bei mir läuft's ordnungsgemäß mit folgender Logik
wenn es sich um einen neuen Datensatzz handelt soll das essFeld beschreibbar sein und weiß dargestellt werden.
Also backStyle = 0, backcolor = lngWhite
Zusätzlich schiebe ich den Focus auf ein anderes Feld (Me!bezeichnung.SetFocus und
setze für das essFeld Locked = true, Enabled=False
Folgender Code..

Private Sub Form_Current()
    Dim lngWhite As Long
    lngWhite = RGB(255, 255, 255)
    If Me.NewRecord = True Then
        'hier der Code der bei einem neuen Datensatz gilt
        'essDatum.ShowDatePicker = 1
'        essDatum.BackStyle = 0
'        essDatum.BackColor = lngWhite
'        essDatum.Locked = False
        Me.bezeichnung.SetFocus
        Me.Text2.BackColor = lngWhite
        Me.Text2.BackStyle = 1  '0 für Transparent!
        Me.Text2.Locked = False
        Me.Text2.Enabled = True
    Else
        'hier der Code der bei einem existierendem Datensatz gilt
'        essDatum.ShowDatePicker = 0
'        essDatum.BackStyle = 1
'        essDatum.Locked = True
        Me.bezeichnung.SetFocus
        Me.Text2.BackStyle = 0
        Me.Text2.Locked = True
        Me.Text2.Enabled = False
    End If
End Sub


Grüße
Peter

mradlmaier

Peter,

setEnabled = false deaktiviert die Filtermöglichkeit, das wäre unerwünscht. Geht´s nicht noch anders?

mradlmaier

#5
Peter,

Kannst Du mich erleuchten, warum Du den Focus verschiebst? Ich würde den gerne da lassen wo er war...
Außerdem verstehe ich nicht, warum ich dir Hintergrundfarbe explizit auf weiß setzen muss? Wenn ich die Eigenschaften zur Design-time setze, brauche ich bloß die Hintergrundart von Normal auf Transparent zu setzen, um gewünschten Effekt zu erzielen?

Zitat von: database am Mai 14, 2010, 21:21:28
Hallo,

habe das eben mal nachgestellt - bei mir läuft's ordnungsgemäß mit folgender Logik
wenn es sich um einen neuen Datensatzz handelt soll das essFeld beschreibbar sein und weiß dargestellt werden.
Also backStyle = 0, backcolor = lngWhite
Zusätzlich schiebe ich den Focus auf ein anderes Feld (Me!bezeichnung.SetFocus und
setze für das essFeld Locked = true, Enabled=False
Folgender Code..

Private Sub Form_Current()
   Dim lngWhite As Long
   lngWhite = RGB(255, 255, 255)
   If Me.NewRecord = True Then
       'hier der Code der bei einem neuen Datensatz gilt
       'essDatum.ShowDatePicker = 1
'        essDatum.BackStyle = 0
'        essDatum.BackColor = lngWhite
'        essDatum.Locked = False
       Me.bezeichnung.SetFocus
       Me.Text2.BackColor = lngWhite
       Me.Text2.BackStyle = 1  '0 für Transparent!
       Me.Text2.Locked = False
       Me.Text2.Enabled = True
   Else
       'hier der Code der bei einem existierendem Datensatz gilt
'        essDatum.ShowDatePicker = 0
'        essDatum.BackStyle = 1
'        essDatum.Locked = True
       Me.bezeichnung.SetFocus
       Me.Text2.BackStyle = 0
       Me.Text2.Locked = True
       Me.Text2.Enabled = False
   End If
End Sub


Grüße
Peter

database

Hallo,
ich weiß, ein bisschen spät aber dennoch die Erklärungen:

ZitatAußerdem verstehe ich nicht, warum ich dir Hintergrundfarbe explizit auf weiß setzen muss
Da ich ja nicht weiß, welche Hintergrundfarbe dein Detailbereich hat, welche Farbe DU eingestellt hast UND aus diesem Grund...

ZitatIch möchte den Hintergrund eines Textfeldes zwischen weiss und transparent umschalten. Zur Design-time funktioniert das auch gut mit den Eigenschaften Hintergrundart = Transparent und Hintergrundfarbe = Hintergrundformular für transparenten Hintergrund und den Eigenschaften Hintergrundart = Normal und Hintergrundfarbe = #FFFFFF für weiss.
... habe ich deine Anforderungen 1:1 in VBA umgesetzt.

ZitatKannst Du mich erleuchten, warum Du den Focus verschiebst?
Gerne - um zu sehen, was an den Feldern wirklich passiert - ohne einen Cursor im Feld. Wenn dich das stört kannst du es getrost rausnehmen - war in diesem Beispiel einfach zum Testen gedacht.
Nachdem du bei deinem System festgestellt hasttest, dass der Code nicht so läuft wie du wolltest....

ZitatWenn ich die Eigenschaften zur Design-time setze, brauche ich bloß die Hintergrundart von Normal auf Transparent zu setzen, um gewünschten Effekt zu erzielen
Tja - nur Entwicklungszeit und Laufzeit sind halt schon zwei grundlegend verschiedene Darstellungsvarianten und miteinander nur bedingt vergleichbar!

ZitatsetEnabled = false deaktiviert die Filtermöglichkeit, das wäre unerwünscht. Geht´s nicht noch anders
Von der Filtermöglichkeit war in deiner Anfraqge nichts zu lesen - daher bin ich davon ausgegangen, dass es auch nicht  schaden könnte die Möglichkeit auszuschalten ins Feld zu klicken um den Cursor dort abzustellen.
Wenn du diese Möglichkeit jedoch nutzen willst nimm den 'Enabled = False' - Teil einfach raus!

HTH

Peter