VISAM Support Forum

Normale Version: Farben der Meldezeile ändern
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Ich versuche verzweifelt über den Befehl VOK.WriteFattr die Farben meiner Meldezeile (Meldetext), Feld Nr. 7, zu ändern. Irgendwie klappt das aber nicht. Mein Script:

If VDF.ReadBitB (2,46,11,1) = 1 Then 'Bedingung für Farbwechsel
    VOK.WriteFattr 7,0,rgb(0,0,255) 'Hintergrundfarbe blau für Meldetext setzen
End If

Mit anderen Parametern, z.B. VOK.WriteFattr 7,19,200 für die Höhe des Feldes, klappt es problemlos.
Wo kann der Fehler liegen?
VBASE Version 11.7.0.2
(21.01.2022, 13:22)Berg schrieb: [ -> ]Ich versuche verzweifelt über den Befehl VOK.WriteFattr die Farben meiner Meldezeile (Meldetext), Feld Nr. 7, zu ändern. Irgendwie klappt das aber nicht. Mein Script:

If VDF.ReadBitB (2,46,11,1) = 1 Then 'Bedingung für Farbwechsel
    VOK.WriteFattr 7,0,rgb(0,0,255) 'Hintergrundfarbe blau für Meldetext setzen
End If

Mit anderen Parametern, z.B. VOK.WriteFattr 7,19,200 für die Höhe des Feldes, klappt es problemlos.
Wo kann der Fehler liegen?
VBASE Version 11.7.0.2

Hallo Berg,
damit der Befehl richtig funktioniert, muss im Fall der Neu-/Um-Einfärbung von Texten anschließend noch ein Neuzeichnen des Bildes angestoßen werden (bei der Größenänderung passiert dies automatisch, da sich die Maße des Feldes ändern), da der Farbwert erst nach dieser Neuzeichnung aktualisiert wird.
Sollten Sie mehrere Farbanpassungen in einem Script durchführen, sollte das Neuzeichnen erst durchgeführt werden, nachdem alle Farbanpassungen durchgeführt wurden, anstatt den Befehl nach jedem VOK.WriteFattr auszuführen (sonst könnte das Bild flackern).
Der Befehl für das Neuzeichnen des Bildes funktioniert über eine Sonderfunktion von VDF.WriteInt:

Code:
VDF.WriteInt 999,1,1 'stößt Neuzeichnen des aktuellen Bildes an

Dieser Hinweis fehlt leider in dem Hilfe-Topic zu VOK.WriteFAttr und wird in der nächsten Version nachgereicht sein.

Mit freundlichen Grüßen
Roman Best
Funktioniert jetzt, vielen Dank.
Und wie bekomme ich das Feld zum blinken?
VOK.Writefattr 7,49,???
Wie sind die BlinkAttribut-Bits zugeordnet?

Edit:
Es funktioniert ben "normalen" Feldern mit VOK.WriteFattr Nr,49,1.
Beim Meldetext funktioniert es nicht. Ich würde aber den Meldetext gerne im Falle einer Störung blinken lassen.
(24.01.2022, 13:08)Berg schrieb: [ -> ]Funktioniert jetzt, vielen Dank.
Und wie bekomme ich das Feld zum blinken?
VOK.Writefattr 7,49,???
Wie sind die BlinkAttribut-Bits zugeordnet?

Edit:
Es funktioniert ben "normalen" Feldern mit VOK.WriteFattr Nr,49,1.
Beim Meldetext funktioniert es nicht. Ich würde aber den Meldetext gerne im Falle einer Störung blinken lassen.

Hallo Berg,
das Blinken geht vorerst nur für Felder Schalter, Taster und Dezimal. Wir prüfen aber inwieweit wir diese Funktionalität auch für weitere Felder einführen können.
Für Ihren Fall des Blinkens von Meldetexten gäbe es noch die Möglichkeit für das Meldetextfenster einen Grenzwert (Min oder Max) zu definieren, ab welchem der Text dann blinkend dargestellt wird.
Liegt dann eine Störung an, wird der Grenzwert des Meldetextfeldes (per Script) geändert, sodass der Meldetextwert über dem Max-Grenzwert bzw unter dem Min-Grenzwert liegt und der vorher nicht blinkende Text mit seinem blinkenden Gegenstück ersetzt wird.