Hintergundfrabe eines Feldes

5. Februar 2006 09:00

Hallo Forumsteilnehmer,

ich bin ganz neu hier und ein blutiger Anfänger in Navision.
Bitte entschuldigt also meine etwas sehr lapidaren und einfachen Fragen.

Ich habe eine Form und möchte einem bestimmten Feld eine Hintergrundfarbe zuweisen - wie kann ich das Bewerkstelligen ?

Für Hilfe bin ich immer dankbar

5. Februar 2006 19:40

Die Form aufmachen mit Strg+F2 in den Designer wechseln.

das gewünschte Feld anklicken --> Menüpunkt Ansicht Color
damit geht ein Fenster auf in dem Hintergrundfarbe usw. geändert werden kann...

Viel Spaß

mfg

5. Februar 2006 19:47

Hallo Hans!

Erstmal darf ich dich im Namen aller Mitglieder von MBS-Support.info herzlichst in dieser Community begrüßen.
Ich hoffe, dass du hier immer Antworten auf deine kleineren und größeren Problemchen findest.
  1. Es gibt keine dummen (lapidare) Fragen, es gibt nur dumme Antworten.
  2. Du kannst die Hintergrundfarbe nicht per C/AL-Code verändern.
  3. Wenn du dich im Designer befindest, kannst du über das Menü Ansicht -> Color die verschiedenen Farben des markierten Controls festlegen.
    Alternativ geht es auch über das Property BackColor, wobei der dort eingetragene Navision-Farbwert wie folgt berechnet wird:
    Navision-Farbwert = Rot + (256 * Grün) + (256 * 256 * Blau)
    Rot, Grün und Blau können einen Integer-Wert von 0..255 haben.

5. Februar 2006 19:49

<OffTopic>
Ich glaub' es ja nicht, da war doch glatt einer schneller im Tippen als ich. ;-)
</OffTopic>

6. Februar 2006 05:25

Danke für die prompte Hilfe !

6. Februar 2006 14:58

@TIMO
Danke für den Hinweiß wie sich die Farben zusammensetzen...
...nun muss ich doch nicht dumm sterben.

Ich war am Rätseln wie sich dieser Wert zusammensetzt. :wink:
Gruß Mikka

6. Februar 2006 20:30

mikka hat geschrieben:@TIMO
Danke für den Hinweiß wie sich die Farben zusammensetzen...
...nun muss ich doch nicht dumm sterben.

Ich war am Rätseln wie sich dieser Wert zusammensetzt. :wink:
Gruß Mikka

Ich habe hierfür sogar eine kleine Codeunit geschrieben, welche dir die Rechenarbeit abnimmt:

ColorManagement
Berechnet aus Rot, Grün, Blau den Navision-Farbwert und umgekehrt

7. Februar 2006 12:14

Timo Lässer hat geschrieben:2. Du kannst die Hintergrundfarbe nicht per C/AL-Code verändern.


echt nicht? Shit!
Dann ist eins meiner nächsten Projekte schon gestorben.
Ich sollte die Vorgangserfassungsmasken so gestalten, dass erledigte Positionen grün, teilbelieferte beige und überfällige rot hinterlegt werden.
Wenn das aber nicht aus dem Code geht, dann wird das wohl nix, schade....

7. Februar 2006 12:39

Michael Schumacher hat geschrieben:echt nicht? Shit!
Dann ist eins meiner nächsten Projekte schon gestorben.
Ich sollte die Vorgangserfassungsmasken so gestalten, dass erledigte Positionen grün, teilbelieferte beige und überfällige rot hinterlegt werden.
Wenn das aber nicht aus dem Code geht, dann wird das wohl nix, schade....

Die Hintergrundfarbe kann man zur Laufzeit nicht ändern, aber die Vordergrundfarbe mit UPDATEFORECOLOR im OnFormat-Trigger eines Contols.

MfG
Josef Metz

7. Februar 2006 13:39

@Schumi
Ich habe es eben nochmal ausprobiert, du kannst die Propertie Back Transparent auf TRUE setzten.
Hinter dem Feld machst du ein Shape gleicher Grösse und Formatierst diesen entsprechend (Weiß).
OnOpenForm - Trigger
z.B. CurrForm."Weiß".VISIBLE := False;

Wenn die die Bedinung zutrifft, dann
CurrForm."Weiß".VISIBLE := TRUE;
CurrForm.Blau.VISIBLE := FALSE;

Wie du unten sehen kannst, kann der Hintergrund beliebig zur Laufzeit formatiert werden

Gruß Mikka
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

7. Februar 2006 13:49

Der Trick mit BackTransparent klingt nicht schlecht, funktioniert jedoch nur bei Karten-Forms.

Da ich etwas von Positionen gelesen habe, scheint es sich dabei um eine TableBox zu handeln, da bleibt dann nur noch die Möglichkeit mit CurrForm.ControlName.UPDATEFORECOLOR(NewColorValue); und CurrForm.ControlName.UPDATEFONTBOLD(NewBold); zu arbeiten.

7. Februar 2006 13:49

Genial Mikka, das ist genau das, was ich brauche!

1000 Dank!

7. Februar 2006 13:54

shit, ja genau Tablebox in der Subform.....

7. Februar 2006 15:13

nein kein shit ;-)
Verkaufe Deinen Kunden, das die Felder im Formbereich im Hintergrund Farbig hervorgehoben sind, und im Tabellenbereich halt nur der Text (Evtl. mit Font Bolt). Dieses sei für die Übersicht besser....bla..bla

Da die Hintergründe nicht zu Runtime geändert werden können, habe ich folgende Idee, diese Funktioniert aber nur für komlette Spalten zum Farbigen Formatieren (Ungeprüft!):
1. Erstelle alle Spalten die Farbig werden sollen zwei mal
2. Vergebe für diese eindeutige Namen z. B. Artikel1 Artikel2
3. Mach jeweils eine Spalte Farbig
4. Setzte die Propertie Visible auf False (Auf der Farbigen Spalte)
5. Auf den OnOpenForm Trigger die Farbigen Felder nochmals auf Visible := FALSE setzten
6. Wenn eine Bedinung zutrifft, dann halt die eine Spalte einblenden und die andere ausblenden

Dieses ist wie gesagt ungeprüft, sollte aber Funktionieren. Keine Elegante Lösung muss ich dazu sagen.

Bei uns kamm es sehr gut an, das wenn etwas schief läuft, das der Entsprechende Text in der Zelle Blinkt und die Farbe von Schwarz auf Rot gewechselt hat! Einfach den Timer und die entsprechenden Properties setzten.
Gruß Mikka

8. Februar 2006 14:45

Gute Idee, Mikka, das mit dem verkaufen....,
das Problem ist nur, dass die Kunden, die dies gerne hätten, genau wissen, wie übersichtlich eine farbige Hinterlegung der Positionszeilen ist, denn die haben alle schon mal Exact Pro gesehen, wo genau das eins der wenigen guten Dinge an dem ansonsten Schrott-ERP-System ist....

9. Februar 2006 10:26

OK,
dann würde ich Vorschlagen, das du dem Kunden halt vermittelst, dass jedes System Vor-/Nachteile hat. Dieses währe einer (Aber ist das so Tragisch?!), naturlich müsstest du dafür ein paar andere Vorteile aufzeigen.
Gruß Mikka

27. September 2007 14:10

Hallo,

ich bin neu hier und freue mich schon einige Tricks & Tipps mitgenommen zu haben.

Habe ein ähnliches Problem, wie hier beschrieben.
Ich würde gerne in der Ressourcenübersicht für bestimmte DL-Aufträge verschiedene Farben verwenden.

27. September 2007 16:16

sc0rsIn hat geschrieben:Habe ein ähnliches Problem, wie hier beschrieben.
Ich würde gerne in der Ressourcenübersicht für bestimmte DL-Aufträge verschiedene Farben verwenden.


Hallo sc0rsIn,

zuerst auch dir ein herzliches Willkommen in unserer Community.

Nun zu deinem Anliegen:
Wie du diesem Thema entnehmen kannst, ist es in Übersichts-Forms (TableForms) nicht möglich, die Hintergrundfarbe dynamisch für jede Zeile zu ändern.
Du kannst also nur die Schriftfarbe (FORECOLOR) und den Schriftsstil "Fett" (FONTBOLD) ändern.
Diese Änderungen müssen auch für jedes zu formatierende Control im entsprechenden Trigger OnFormat() erfolgen.

2. Oktober 2007 15:50

Hallo Timo,

vielen Dank für die Information.
Werde mir dann wohl etwas anderes überlegen müssen...

Re: Hintergundfrabe eines Feldes

28. Oktober 2008 14:26

Man kann in einer Table-Form bei einem Feld zumindest den Hintergrund von weis auf blau ändern:
mit UPDATESELECTED(TRUE) im onFormat Trigger des Feldes.

Hier hat man zumindest die Möglichkeit spezielle Werte optisch hervorzuheben. Zwar nur blau - aber besser als nix.

Vielleicht kann das ja jemand brauchen.

PS.: ich bin schon auf den Hack gespannt welcher es schafft die Hintergrundfarbe in einem Table-Form Feld zur Laufzeit zu ändern

Grüsse
Jürgen