Farbe ändern einer Zelle in einer Textbox

4. September 2009 14:00

Hallo

Kann man eine einzelne Zelle (einer Textbox) aufgrund einer Eigenschaft die Farbe ändern. Wenn in der ersten Zeile diese Feld (Boolean) true ist sollte diese Zelle rot sein wenn dieses Feld in der zweiten Zeile false ist sollte dies grün sein.

Ist dies in Navision überhaupt möglich??

lg
stony

Re: Farbe ändern einer Zelle in einer Textbox

4. September 2009 14:38

Hallo stony,

Die Schriftfarbe von einer Texbox kannst Du dynamisch ändern mit folgenden Code im Textbox-Trigger OnFormat:
Code:
IF DeinFeldWert = TRUE THEN
  CurrForm."Line No.".UPDATEFORECOLOR(255)
ELSE
  CurrForm."Line No.".UPDATEFORECOLOR(65280);


Navision-Farbwert wird so berechnet: Rot + (256 * Grün) + (256 * 256 * Blau)

Wenn Du aber Hintergrundfarbe ändern willst, das geht per C/AL Code leider nicht.
Du könntest aber so vorgehen:
Lege zwei Textbox mit gleichen SourceExpr (= Dein Feld) und unterschiedlichen Hintergrundfarben übereinander. Mit dem folgenden Code im Form-Trigger OnAfterGetRecord kannst Du ein oder anderen Textbox ein- bzw. ausblenden:

Code:
CurrForm.DeinTextBox1.VISIBLE(DeinFeldWert);
CurrForm.DeinTextBox2.VISIBLE(NOT DeinFeldWert);


Grüße
prisma

Re: Farbe ändern einer Zelle in einer Textbox

4. September 2009 15:02

prisma informatik hat geschrieben:Navision-Farbwert wird so berechnet: Rot + (256 * Grün) + (256 * 256 * Blau)
Oder du nutzt die Funktionen der Codeunit "ColorManagement" aus unseren NAV-Tools ;-)

prisma informatik hat geschrieben:Wenn Du aber Hintergrundfarbe ändern willst, das geht per C/AL Code leider nicht.
Abgesehen von dem "Trick", dass man CurrForm.NameDesControls.UPDATESELECTED verwendet.
Das kann zwar nur Hintergrund blau bzw. weiß, aber immer noch besser als nichts.
Jedoch greift dann UPDATEFORECOLOR nicht mehr, da das Feld ja markiert ist.

prisma informatik hat geschrieben:Lege zwei Textbox mit gleichen SourceExpr (= Dein Feld) und unterschiedlichen Hintergrundfarben übereinander.
Das geht nur auf Kartenforms, jedoch nicht auf Listforms.

Re: Farbe ändern einer Zelle in einer Textbox

10. September 2009 08:06

Hallo,

leider habe ich mich nicht richtig ausgedrückt.

Ich möchte gerne eine Zelle einer Tablebox (ist ein Boolean-Feld) aufgrund Wahr oder Falsch die Farbe ändern.

lg
stony

Re: Farbe ändern einer Zelle in einer Textbox

10. September 2009 08:33

dann setzt daneben am einfachsten ein Feld das Bitmaps anzeigt.
in der Bitmaplist, gibst du dann die Bitmaps für ja und nein an, die Source des Feldes sollte auf dein Bool Deld zeigen.

Re: Farbe ändern einer Zelle in einer Textbox

10. September 2009 10:14

Hallo,

eine gute Idee Thomas :-)

tba hat geschrieben:dann setzt daneben am einfachsten ein Feld das Bitmaps anzeigt.

Ich würde aber nicht daneben, sondern stattdessen anzeigen und OnPush das Feld entsprechend setzen.

@stony:
Es wäre eine gute Lösung für Dich. Wie gesagt, die Hintergrundfarbe kannst Du nicht ändern, weil TableBox eine Listform ist.
Also machst Du folgendes:
- Deine TextBox mit SourceExp = "Dein Boolisches Feld" ersetzt Du mit einem Control, der PictureBox heißt.
- Setzt Properties von PictureBox:
BitmapList = 1003,1004 --> nur als Beispiel, natürlich kannst Du auch andere NAV-Bitmaps oder eigene Bitmaps nehmen (bei eigenen musst Du vollständigen Pfad, wo diese abgelegt sind,eingeben)
SourceExp = "Dein Boolisches Feld"
- im Trigger OnPush von PictureBox schreibst Du Code:
Code:
  "Dein Boolisches Feld" := NOT "Dein Boolisches Feld";
  MODIFY;
 


Grüße
prisma