我在Informix 4GL中生成了一个打印到屏幕的报告。 我需要以反向格式显示一列。 我尝试了以下方法:
print line_image attribute(reverse)
但这并不奏效。这有可能吗?
答案 0 :(得分:1)
如果你的意思是"有什么办法可以做到这一点",答案是"是"。如果你的意思是"有一个很好的简单的内置方式来做到这一点",答案" no"。
您需要做的是:
brv
中(开始反向视频;如果您不喜欢我的名字,请选择自己的名称)。erv
中(结束反向视频)。安排您的打印使用:
PRINT COLUMN 1, first_lot_of_data,
COLUMN 37, brv, reverse_data,
COLUMN 52, erv,
COLUMN 56, next_lot_of_data
切换时可能需要3或4个字符。这些字符将由报告中的列计数代码计算。
不同的终端类型将具有不同的序列。如今,您可能无法处理80年代中期流行的各种各样的实际绿屏终端,因此您可能能够对brv
和erv
的结果进行硬连线处理。字符串。 OTOH,您可能需要做一些花哨的步法,以便在运行时为不同的终端找到正确的序列。如果您需要更多相关信息,请大声说出来。
一种可能允许您发现相关序列的简单方法是运行一个程序,例如(这还没有在I4GL编译器附近 - 可能存在语法错误):
MAIN
DISPLAY "HI" AT 1,1
DISPLAY "REVERSE" AT 1,4 ATTRIBUTE(REVERSE)
DISPLAY "LO" AT 1, 12
SLEEP 2
END MAIN
将其编译成terminfo.4ge
并运行:
./terminfo.4ge # So you know what the screen looks like
./terminfo.4ge > out.file
有机会不使用显示属性。您可以看到,如果您运行cat out.file
并且没有看到反向闪烁,那么我们必须更加努力。
您还可以查看termcap
文件中的终端条目或terminfo
条目中的终端条目。使用infocmp $TERM
(在环境变量中设置正确的终端类型)并查找smso
(进入突出模式)和rmso
(退出突出模式)功能。解读那些(我rmso=\E[27m
终端smso=\E[7m
和xterm-256color
; \E
是ASCII ESC或\033
)并在brv
中使用它们}和erv
字符串。请注意,rmso
长度为5个字符。
答案 1 :(得分:1)
添加到上一个答案,您可以尝试以下
print "\033[7mHello \033[0mWorld"
\ 033 [7m表示反向打印。并且,\ 033 [0m意味着回到标准。