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者都是布林)來判斷比對所以就沒選用字串值的二級標簽。