0

Textfarbe abrufen

Hallo zusammen,

kann man die Textfarbe vom Eintrag eines dynamischen Auswahlfeldes abrufen 

let TxtFarbeTerArt := color(text(DYAF))  funktioniert nicht

Gruß

Andreas

4 Antworten

null
    • UweG
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Ja, kann man.
    In der Tabelle für das dynAF befindet sich in diesem Beispiel ein Farbfeld.
    Das dynAF verweist bei 'Farbe des dynamischen Wertes' auf das Farbfeld der zugrunde liegenden Tabelle

    Wenn du ein Berechnungsfeld mit nachfolgendem Script erstellst wird die Ausgewählte Farbe angezeigt. 
    let vNr := number(DYAF);
    record('TABELLE FÜR dynAF',first((select 'TABELLE FÜR dynAF')[number(Nr) = vNr]).Nr).Farbe

    Soll der HexWert angezeigt werden:
    record('TABELLE FÜR dynAF',first((select 'TABELLE FÜR dynAF')[number(Nr) = vNr]).Nr).raw(Farbe)

    Den rgb-Wert kann man meines Wissens nicht ableiten, ausser wenn der rgb-Wert hinterlegt wurde.

      • Andreas_Kappes
      • vor 1 Jahr
      • Gemeldet - anzeigen

      UweG 

      Hallo Uwe die Hintergrundfarbe habe ich schon abgefragt nun möchte ich aber die Textfarbe dazu auslesen.

      Wenn z.B. die Hintergrundfarbe rot ist dann wird ja die Textfarbe automatisch weiß und genau das würde ich gerne abfragen, um diese Textfarbe dann in einer HTML Tabelle darzustellen mit der Hintergrundfarbe funktioniert das schon

       

       

      Gruß

      Andreas

    • UweG
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Da gibt es keine einfache Möglichkeit.

    Denkmodell:
    Die Schriftfarbe ist meines Wissens von der Helligkeit der Hintergrundfarbe abhängig.

    Ist die Helligkeit <= 160, so wird als Schriftfarbe 'weiss' benutzt.
    > 160 schwarz

    Diesen Wert kann man mit folgender Formel aus einem RGB-Wert ermitteln.
    planox.pro

    sqrt(0.299 * pow(R, 2) + 0.587 * pow(G, 2) + 0.114 * pow(B, 2))

    Wenn der rgb-Wert der Hintergrundfarbe bekannt ist oder rechnerisch aus dem hex-Wert ermittelt wird, kann man diese Formel anwenden und dementsprechend die Schriftfarbe, die angezeigt werden soll bestimmen. 

    • UweG
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Ich habe mal ein kleines Script geschrieben um die Helligkeit aus einem Hex-Wert zu berechnen.

    Farbe ist ein Farbfeld.

    function fx_HexToRgb(vWert : text) do
        let nWert := null;
        switch upper(vWert) do
        case "A":
            (nWert := 10)
        case "B":
            (nWert := 11)
        case "C":
            (nWert := 12)
        case "D":
            (nWert := 13)
        case "D":
            (nWert := 14)
        case "F":
            (nWert := 15)
        default:
            (nWert := number(vWert))
        end;
        nWert
    end;
    let bHex := replace(raw(Farbe), "#", "");
    let r := substr(bHex, 0, 2);
    let g := substr(bHex, 2, 2);
    let b := substr(bHex, 4, 2);
    let R := number(fx_HexToRgb(substr(r, 0, 1))) * 16 + number(fx_HexToRgb(substr(r, 1, 1)));
    let G := number(fx_HexToRgb(substr(g, 0, 1))) * 16 + number(fx_HexToRgb(substr(g, 1, 1)));
    let B := number(fx_HexToRgb(substr(b, 0, 1))) * 16 + number(fx_HexToRgb(substr(b, 1, 1)));
    sqrt(0.299 * pow(R, 2) + 0.587 * pow(G, 2) + 0.114 * pow(B, 2))
    

     

    Anbei noch eine kleine DB zum testen:

Content aside

  • vor 1 JahrZuletzt aktiv
  • 4Antworten
  • 61Ansichten
  • 2 Folge bereits