Informix 4GL 报告到屏幕 - 反向
Informix 4GL report to screen - Reverse
我在 Informix 4GL 中生成了一个打印到屏幕上的报告。
我需要以反向格式显示一列。
我尝试了以下方法:
print line_image attribute(reverse)
但这不起作用。这可能吗?
如果您的意思是 "is there any way at all to do it",答案是 "yes"。如果你的意思是 "is there a nice easy built-in way to do it",答案是 "no"。
您需要做的是:
- 确定切换到'reverse'视频的字符序列-将字符存储在字符串变量
brv
中(开始反向视频;如果您不喜欢我的名字,请选择您自己的名字)。
- 确定切换到'normal'视频的字符序列——将字符存储在一个字符串变量中
erv
(结束反转视频)。
安排您的打印使用:
PRINT COLUMN 1, first_lot_of_data,
COLUMN 37, brv, reverse_data,
COLUMN 52, erv,
COLUMN 56, next_lot_of_data
可能需要切换 3 或 4 个字符。这些字符将由报告中的 column-counting 代码计算。
不同的终端类型会有不同的顺序。如今,您很可能没有处理 80 年代中期流行的各种各样的实际 green-screen 终端,因此您可以硬连线您对 brv
和 [=14] 的发现=] 字符串。 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 或 3
)并在 brv
和 erv
字符串。请注意,rmso
的长度为 5 个字符。
在上一个答案的基础上,您可以尝试以下方法
print "3[7mHello 3[0mWorld"
\033[7m表示反向打印。并且,\033[0m 表示回到标准。
我在 Informix 4GL 中生成了一个打印到屏幕上的报告。 我需要以反向格式显示一列。 我尝试了以下方法:
print line_image attribute(reverse)
但这不起作用。这可能吗?
如果您的意思是 "is there any way at all to do it",答案是 "yes"。如果你的意思是 "is there a nice easy built-in way to do it",答案是 "no"。
您需要做的是:
- 确定切换到'reverse'视频的字符序列-将字符存储在字符串变量
brv
中(开始反向视频;如果您不喜欢我的名字,请选择您自己的名字)。 - 确定切换到'normal'视频的字符序列——将字符存储在一个字符串变量中
erv
(结束反转视频)。 安排您的打印使用:
PRINT COLUMN 1, first_lot_of_data, COLUMN 37, brv, reverse_data, COLUMN 52, erv, COLUMN 56, next_lot_of_data
可能需要切换 3 或 4 个字符。这些字符将由报告中的 column-counting 代码计算。
不同的终端类型会有不同的顺序。如今,您很可能没有处理 80 年代中期流行的各种各样的实际 green-screen 终端,因此您可以硬连线您对 brv
和 [=14] 的发现=] 字符串。 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 或 3
)并在 brv
和 erv
字符串。请注意,rmso
的长度为 5 个字符。
在上一个答案的基础上,您可以尝试以下方法
print "3[7mHello 3[0mWorld"
\033[7m表示反向打印。并且,\033[0m 表示回到标准。