Progress 4GL控制台场景下如何实现长字符串输入并存入变量?
问题根源
Progress OpenEdge 默认UPDATE语句使用单行FILL-IN控件接收输入,默认字符格式长度仅为8位,因此会出现输入截断问题。手动指定FORMAT "X(318)"时,单行输入控件需要的显示宽度超出了默认框架的宽度,就会抛出FILL-IN filter will not fit in FRAME错误。
可用解决方案
方案1:使用多行编辑器控件(推荐,适配长文本粘贴)
该方式不受单行宽度限制,直接支持最长32000字符输入,兼容粘贴操作,无需美化界面适配纯控制台场景:
DEF VAR filter AS CHAR NO-UNDO. UPDATE filter VIEW-AS EDITOR SIZE 80 BY 6 /* 控制台编辑区域显示宽高,可自行调整 */ MAX-CHARS 32000 NO-BOX. /* 去掉控件边框,适配纯控制台样式 */
操作方法:用户粘贴完内容后,按CTRL+ENTER确认输入即可。
方案2:强制指定框架宽度适配单行长格式
如果需要使用单行输入,可手动声明足够宽的框架容纳长格式输入控件:
DEF VAR filter AS CHAR NO-UNDO. FORM filter FORMAT "X(32000)" WITH FRAME long_input WIDTH 32010. UPDATE filter WITH FRAME long_input.
注意:该方案下输入框会超出单屏显示宽度,输入时会自动横向滚动,按ENTER即可确认输入。
内容的提问来源于stack exchange,提问作者AXMIM
相关产品推荐
相关产品推荐

