Per Function UPDATEFONTBOLD ausführen möglich?

28. August 2006 10:59

Moin - ist es überhaupt möglich per Funktion den Befehl
UPDATEFONTBOLD in einer TableBox auszuführen?
Ich habe eben etwas gelesen, das man es in den OnFormat Trigger schreiben sollte,
doch das bringt mir nix weil es dynamisch verändert werden soll..

Also: Möglich oder nicht?

28. August 2006 11:41

Ich habs zwar selber noch nie versucht, aber ich würde es auf diese Weise ausprobieren:

- Auf dem Form z.B. eine Global vom Typ Boolean mit Namen Bold deklarieren.
- Dieser Variablen je nach Bedarf TRUE oder FALSE zuweisen
- Im OnFormat-Trigger abhängig von dieser Variablen die Formatierung setzen.
- Dann CurrForm.UPDATE aufrufen.

Aber wie gesagt. Habe selber noch nie gebraucht und ich weiss auch nicht, ob das funktioniert.

28. August 2006 16:16

@Roger
So wie du es Vorschlägst, ist es Korrekt.

@Danis
Je nachdem, wann aktualisiert werden soll, muss an entsprechender Stelle (z.B. OnAfterGetRecord) die Variable geändert werden und durch ein Update aktualisiert werden.
Oder falls gewünscht den Timer setzten und den OnTimer Trigger Programmieren.

Hier ein Beispiel mit der Textfarbe:
Code:
IF Systembuchung OR Storno THEN
  CurrForm.Lokation.UPDATEFORECOLOR(255);


Gruß Mikka

29. August 2006 00:31

Du kannst auch direkt im OnFormat-Trigger die Bedingung testen, die Onformat-trigger einer Tablebox werden jeweils für die gerade gelesene Zeile im OnAfterGetRecord Trigger ausgeführt.
Wenn Du also z.B. das Feld Betrag mit roter Schrift schreiben willst, wenn der Inhalt negativ ist, dann:

Code:
If Betrag<0 then currform.Betrag.updateforecolor(255)
else currform.Betrag.updateforecolor(0);


Wenn Du abhängig von einer Boolschen Variablen fett schreiben willst, dann kannst du auch direkt

Code:
CurrForm.TextBoxName.UpdateFontBold(BoolscheVariable);

in den Trigger schreiben, das erspart Dir dann auch noch die else-Zeile.

30. August 2006 09:29

Siehe weiter unten! :)

Hi ihr - vielen Dank erstmal für eure Tips!
Zum testen habe ich erstmal im OnFormat Trigger folgendes geschrieben:

Code:
  CurrForm.ID.UPDATEFORECOLOR(255);


Jedoch kommt immer folgende Fehlermeldung beim Starten der Form:

Sie haben nicht genug Stackspeicher um diese Aktivität auszuführen.

Diese Situation kann aufgrund der Verwendung rekursiver Funktionsaufrufe eintreten. Setzen Sie sich mit Ihrem Systemadministrator in Verbindung, wenn Sie Unterstützung benötigen.



Öhm - jaaa..

1. Was ist Stackspeicher?
2. Was bedeutet rekursiv?

Oder: Was mache ich falsch?

*edit* - Fehler gefunden - hatte noch ein CurrForm.Update drin -> rausgenommen jetzt gehts!


*edit2* - weitere komische Sache endeckt:

CurrForm.ID.UPDATEFONTBOLD(gVarUpdBold);

funktioniert nicht:
'Die dynamische Eigenschaft 'Font' kann in diesem Kontext nicht geändert werden. Sie haben versucht, für TextBox mit Namen 'Type' 'Font' in zu ändern'

Und warum kann ich das bitte nicht ändern?
gVarUpdBold -> Boolsche Var

30. August 2006 10:01

Du hast den Befehl
CurrForm.ID.UPDATEFONTBOLD(gVarUpdBold);
im Onformat-Trigger des Felds Type geschrieben.

dort muss er aber
CurrForm.Type.UPDATEFONTBOLD(gVarUpdBold);
lauten.
Du kannst im Onformat Trigger immer nur das zugehörige Feld ändern!

30. August 2006 10:02

ah - um eine Informatin reicher!
Ich danke dir!


PS: Kann man hier keine User bewerten? :shock: