Access-o-Mania

Access-Forum => Formular => Thema gestartet von: derilzemer am Dezember 17, 2017, 14:08:16

Titel: Textfeld für HTML-Farbcode soll dann daneben in anderem Feld die Farbe anzeigen
Beitrag von: derilzemer am Dezember 17, 2017, 14:08:16
Hallo,
wie bekommt man es hin, dass wenn man in einem Textfeld einen HTML-Farbcode hinterlegt hat (z.B. #FFF200) sich diese Farbe dann in einem Feld daneben anzeigen zu lassen? In HTML ginge das relativ schnell und einfach zu integrieren. Wer kann mir dazu einen Tip geben?

Gruß Andreas
Titel: Re: Textfeld für HTML-Farbcode soll dann daneben in anderem Feld die Farbe anzeigen
Beitrag von: steffen0815 am Dezember 17, 2017, 14:54:40
Hallo,
nimm ein passendes Steuerelement und setze die Farbe.
Beispiel:
Nimm ein Rechteck. Setze den Hintergrund auf normal (Standard ist transparent) und nutze folgenden Code:Me.recColor.BackColor = &HFFF200
Private Sub txtFarbe_AfterUpdate()
    Me.recColor.BackColor = Val("&H" & Mid(me.txtFarbe, 2))
End Sub
Titel: Re: Textfeld für HTML-Farbcode soll dann daneben in anderem Feld die Farbe anzeigen
Beitrag von: derilzemer am Dezember 17, 2017, 17:58:39
Hi.
danke erst mal für die schnelle Antwort.
nimm ein passendes Steuerelement und setze die Farbe.........
Setze den Hintergrund auf normal (Standard ist transparent) und nutze folgenden Code:Me.recColor.BackColor = &HFFF200
Private Sub txtFarbe_AfterUpdate()
    Me.recColor.BackColor = Val("&H" & Mid(txtFarbe, 2))
End Sub
Ich habe da schon ein kleines Prob mit. Ich habe ein Textfeld erstellt, Hintergrund normal. Dort habe ich den 1. Codeteil als Ereignis vor Aktualisierung setzen wollen, den 2. Teil wollte ich dann nach Aktualisierung machen.
Private Sub txtKRsfHTML_AfterUpdate()
    Me.recColor.BackColor = Val("&H" & Mid(txtKRsfHTML, 2))
End Sub
Private Sub txtKRsfHTML_BeforeUpdate(Cancel As Integer)
    recColor.BackColor = &HFFF200
End Sub
Aber me. funzt nicht, weil er sich an recColor stört, meckert, dass die Variable nicht definiert sei :(. Was mache ich falsch?

Gruß Andreas

Titel: Re: Textfeld für HTML-Farbcode soll dann daneben in anderem Feld die Farbe anzeigen
Beitrag von: steffen0815 am Dezember 17, 2017, 18:00:28
Hallo,
der erste Code war ein allgemeines Beispiel, der 2. auf dein  Problem zugeschnitten.
Du brauchst also nur den 2. Code.
Private Sub txtKRsfHTML_AfterUpdate()
    Me.recColor.BackColor = Val("&H" & Mid(me.txtKRsfHTML, 2))
End Sub

Btw:
Du hast aber schon ein Rechteck in deinem Formular erstellt!!!

Zitat
Aber me. funzt nicht, weil er sich an recColor stört
Das liegt dann wohl daran, dess dein Rechteck nicht "recColor" benannt ist.
Titel: Re: Textfeld für HTML-Farbcode soll dann daneben in anderem Feld die Farbe anzeigen
Beitrag von: derilzemer am Dezember 17, 2017, 18:03:56
Hi,
Du brauchst also nur den 2. Code.
Private Sub txtKRsfHTML_AfterUpdate()
    Me.recColor.BackColor = Val("&H" & Mid(me.txtKRsfHTML, 2))
End Sub
Danke für den Hinweis, aber auch da bringt er noch den Fehler. Er markiert .recColor blau und bringt
Fehler beim kompilieren. Methode oder Datenobjekt nicht gefunden.

Gruß Andreas
Titel: Re: Textfeld für HTML-Farbcode soll dann daneben in anderem Feld die Farbe anzeigen
Beitrag von: steffen0815 am Dezember 17, 2017, 18:06:50
Hallo,
du hast aber schon ein Rechteck(-steuerelement) mit diesem Namen in deinem Formular erstellt!!!
Titel: Re: Textfeld für HTML-Farbcode soll dann daneben in anderem Feld die Farbe anzeigen
Beitrag von: derilzemer am Dezember 17, 2017, 18:14:33
Hi,
sorry, da hab ich mal wieder gepennt. Funktioniert, danke.
Gruß Andreas
Titel: Re: Textfeld für HTML-Farbcode soll dann daneben in anderem Feld die Farbe anzeigen
Beitrag von: derilzemer am Dezember 17, 2017, 19:08:36
Hallo Steffen,
eben ist mir aufgefallen, dass der VBA-Code einen Teil der Hexacodes ganz anders interpretiert als erwartet. Ich habe natürlich unterschiedliche Codes, welche ich mit Gimp "auslese". Z.B. zeigt mir Gimp für ein Blauton die HTML Notation 10a4d2 an (siehe bild1). Wenn ich das nun im Textfeld eingebe, dann macht er irgendein Ocker daraus (bild2). Hat er ein Problem damit, dass hier kein Buchstabe wie bei fff200 als Anfang dabei ist?

Gruß Andreas
Titel: Re: Textfeld für HTML-Farbcode soll dann daneben in anderem Feld die Farbe anzeigen
Beitrag von: steffen0815 am Dezember 17, 2017, 19:41:02
Hallo,
ok, da hab ich es mir zu einfach gemacht  ;)

Nun dann erstelle eine Funktion:Public Function fncHexColor2RGB(HexColor As String) As String
Dim cHtml As String
Dim Red As integer,Green As integer,Blue As integer
    cHtml = Replace(HexColor, "#", "")
    Red = Val("&H" & Mid(cHtml, 1, 2))
    Green = Val("&H" & Mid(cHtml, 3, 2))
    Blue = Val("&H" & Mid(cHtml, 5, 2))
fncHexColor2RGB = RGB(Red, Green, Blue)
End Function
Private Sub txtKRsfHTML_AfterUpdate()
    Me.recColor.BackColor = fncHexColor2RGB(me.txtKRsfHTML)
End Sub
Titel: Re: Textfeld für HTML-Farbcode soll dann daneben in anderem Feld die Farbe anzeigen
Beitrag von: derilzemer am Dezember 17, 2017, 20:28:40
Hi,
Nun dann erstelle eine Funktion:Public Function fncHexColor2RGB(HexColor As String) As String
Dim cHtml As String
Dim Red As integer,Green As integer,Blue As integer
    cHtml = Replace(HexColor, "#", "")
    Red = Val("&H" & Mid(cHtml, 1, 2))
    Green = Val("&H" & Mid(cHtml, 3, 2))
    Blue = Val("&H" & Mid(cHtml, 5, 2))
fncHexColor2RGB = RGB(Red, Green, Blue)
End Function
Private Sub txtKRsfHTML_AfterUpdate()
    Me.recColor.BackColor = fncHexColor2RGB(me.txtKRsfHTML)
End Sub

Das funktioniert jetzt, vielen Dank. Da ich ja rund 2600 Datensätze habe, wo ich das nutze, habe ich jetzt noch das Problem, dass wenn ich die Farbe eingebe, das Rechteck die Farbe in allen Datensätzen setzt und ändert. Ergo muss sich es binden. Macht man das auch über ein weiteres Zusatzfeld (Textfeld) in der Tabelle oder löst man das anders?

Gruß Andreas
 
Titel: Re: Textfeld für HTML-Farbcode soll dann daneben in anderem Feld die Farbe anzeigen
Beitrag von: steffen0815 am Dezember 17, 2017, 21:32:52
Hallo,
ich weiß nicht ob ich dich richtig verstehe.
Du hast ein Endlosformular und willst in jedem DS eine andere Farbe angezeigt bekommen!?
Dafür hätte ich keine Idee.
Titel: Re: Textfeld für HTML-Farbcode soll dann daneben in anderem Feld die Farbe anzeigen
Beitrag von: derilzemer am Dezember 17, 2017, 22:13:01
Hallo,
das ist ein Endlosformular, wo ich das jetzt integriert habe. Da kann dann auch in jedem Datensatz der HTML-FarbCode sich ändern. Das kommt eben auf die Rückseite der Karte an. Die Farbe des Rechteck müsste ich also pro Datensatz "speichern".
Hmmm, da gibt es keinen Lösungsansatz dafür? Ärgerlich.

Gruß Andreas
Titel: Textfeld für HTML-Farbcode soll dann daneben in anderem Feld die Farbe anzeigen
Beitrag von: steffen0815 am Dezember 18, 2017, 08:13:27
Hallo,
was funktionieren würde ist das Farbfeld nur beim aktuellen Datensatz anzuzeigen:

Nutze ein ungebundenes Textfeld "txtAnzColor" statt dem Rechteck. Der nachfolgende Code setzt voraus, dass es in der Tabelle eine eindeutige ID namens "id" gibt: Private Sub Form_Current()
    Me.txtAnzColor = Me.id
    SetzeBed
End Sub

Sub SetzeBed()
    Me.txtAnzColor.FormatConditions.Delete
    Me.txtAnzColor.FormatConditions.Add acExpression, , "id = txtAnzColor"
    Me.txtAnzColor.FormatConditions(0).BackColor = fncHexColor2RGB(Nz(Me.txtKRsfHTML, "#FFFFFF"))
    Me.txtAnzColor.FormatConditions(0).ForeColor = fncHexColor2RGB(Nz(Me.txtKRsfHTML, "#FFFFFF"))
End Sub

Private Sub txtKRsfHTML_AfterUpdate()
    SetzeBed
End Sub
Titel: Re: Textfeld für HTML-Farbcode soll dann daneben in anderem Feld die Farbe anzeigen
Beitrag von: Lachtaube am Dezember 18, 2017, 09:10:57
Du kannst das Paint-Ereignis des Detailbereichs verwenden und den Hintergrund einfärben (Alternative Farbe im Entwurf auf keine stellen). Flächen, die ungefärbt bleiben sollen, kannst Du mit einem Steuerelement im Hintergrund hinterlegen.Private Sub Detail_Paint()
   'num enthält den Farbwert
   Me.Detail.BackColor = Nz(Me.num, vbWhite)
End Sub
Titel: Textfeld für HTML-Farbcode soll dann daneben in anderem Feld die Farbe anzeigen
Beitrag von: steffen0815 am Dezember 18, 2017, 09:20:23
@Lachtaube:
sehr gute Idee  :)
Titel: Re: Textfeld für HTML-Farbcode soll dann daneben in anderem Feld die Farbe anzeigen
Beitrag von: derilzemer am Dezember 18, 2017, 16:26:09
Hi Steffen,
diese Lösung funktioniert sehr gut, danke. Den Vorschlag von Lachtaube muss ich mir leider noch mal durchlesen, da ich mir mal wieder schwer tue das zu verstehen. Ich weiss also aktuell nicht, ob ich dadurch etwas "gewinne" in Form von geschmeidiger etc.

Gruß Andreas
Titel: Re: Textfeld für HTML-Farbcode soll dann daneben in anderem Feld die Farbe anzeigen
Beitrag von: derilzemer am Dezember 18, 2017, 16:39:21
Hi,
Du kannst das Paint-Ereignis des Detailbereichs verwenden und den Hintergrund einfärben (Alternative Farbe im Entwurf auf keine stellen).
Flächen, die ungefärbt bleiben sollen, kannst Du mit einem Steuerelement im Hintergrund hinterlegen.Private Sub Detail_Paint()
   'num enthält den Farbwert
   Me.Detail.BackColor = Nz(Me.num, vbWhite)
End Sub
Ich kann das jetzt nicht wirklich verarbeiten, ich verstehe es nicht. Dein Vorschlag bezieht sich noch auf die Lösung mit dem Rechteck, oder? Hat man dadurch nicht mehr Aufwand, da man ja unter Umständen viele Flächen hat, die unbelegt sein sollen/müssen? Flächen sind dann auch z.B. Textfelder etc?
Aktuell habe ich in diesem Endlosformular im Detailbereich als Hintergrund #FFD39B und Alternativ steht auf Keine Farbe. Sorry, ich bekomme es mal wieder nicht auf die Kette :(.

Gruß Andreas
Titel: Textfeld für HTML-Farbcode soll dann daneben in anderem Feld die Farbe anzeigen
Beitrag von: steffen0815 am Dezember 18, 2017, 17:08:21
Hallo,
ich habe mal ein (neues) Beispiel angehängt.