iFIX報警文字變色

iFIX 自帶的ALARM SUMMARY上,對於ALARM的各種不同狀況有不同顏色顯示,我們想在窗體中的DATALINK原件也實現相同的文字變色效果,使用VBA來實現

以下TEST_ALARM為測試tag點,F_CV及F_NALM是該點的二級標簽名(參考二級標簽名那篇);

動作:

1.報警,未復原,未ACK 紅色 Text14.ForegroundColor = Red

Fix32.AB_FIX.TEST_ALARM.F_CV = 1

Fix32.AB_FIX.TEST_ALARM.F_NALM = 1


2.報警,未復原,已ACK 藍色 Text14.ForegroundColor = BrightBlue

Fix32.AB_FIX.TEST_ALARM.F_CV = 1

Fix32.AB_FIX.TEST_ALARM.F_NALM = 0


3.報警,已ACK,已復原 黑色 Text14.ForegroundColor = Black

Fix32.AB_FIX.TEST_ALARM.F_CV = 0

Fix32.AB_FIX.TEST_ALARM.F_NALM = 0


4.報警,未ACK,已復原 綠色 Text14.ForegroundColor = Green

Fix32.AB_FIX.TEST_ALARM.F_CV = 0

Fix32.AB_FIX.TEST_ALARM.F_NALM = 1


觸發EVENT:

一個ALARM TAG,2個DATACHANGE的EVENT 腳本

1. .F_CV 變化 = 報警時檢查ACK狀況做文字變色

2. .F_NALM 變化 = ACK時檢查報警狀況做文字變色


VBA:

Dim a As Boolean

 Dim b As Boolean
 a = Fix32.AB_FIX.Test_ALARM.F_CV
 b = Fix32.AB_FIX.Test_ALARM.F_NALM
 If (a = True) And (b = True) Then main.Text14.ForegroundColor = vbRed
 If (a = True) And (b = False) Then main.Text14.ForegroundColor = vbBlue
 If (a = False) And (b = False) Then main.Text14.ForegroundColor = vbBlack
 If (a = False) And (b = True) Then main.Text14.ForegroundColor = vbGreen


A_CHAM也是表示報警狀態主要是系統給ALARM LIST用的,他的值是字串,在此因為我們的VBA腳本是多條件if所以直接用F_CV跟F_NALM(2者都是布林)來判斷比對所以就沒選用字串值的二級標簽。

第二種方法,使用ANIMATION功能,將二級標簽A_CHALM跟A_NALM值(字串型相加)

再指定相對顏色達到效果