Oracle Forms Developer 11g计算器开发:如何在显示项中展示多值?
嘿,我之前在Forms Developer 11g里折腾过类似的计算器功能,刚好能给你分享点实用的方案!你要在显示项里展示完整的运算表达式(比如1 + 1),核心其实就是把每次点击的数字或运算符追加到显示项里,而不是覆盖原有内容。下面是一步步的具体实现:
在Forms Developer 11g中实现计算器显示完整表达式
核心思路
每次点击数字或运算符按钮时,将当前点击的内容追加到显示项的现有值末尾,逐步构建出完整的运算表达式,而不是替换掉之前的内容。
具体实现步骤
1. 先配置好显示项的基础属性
假设你的显示项命名为DISPLAY_EXPR,需要确保它的以下属性设置正确:
- Data Type:设置为
VARCHAR2(因为要存储字符串形式的运算表达式) - Maximum Length:设一个足够大的值,比如
50,避免输入过长表达式时被截断 - Update Allowed:设为
No(防止用户直接在显示项里手动输入,只通过按钮控制内容)
2. 给数字按钮添加触发逻辑
以数字按钮BTN_1为例,给它添加WHEN-BUTTON-PRESSED触发器,代码如下:
:DISPLAY_EXPR := :DISPLAY_EXPR || '1';
数字2、3...0的按钮都用同样的逻辑,把代码里的'1'换成对应的数字即可,这样每次点击数字,都会把数字追加到显示项的现有内容后面。
3. 给运算符按钮添加触发逻辑
以加号按钮BTN_PLUS为例,WHEN-BUTTON-PRESSED触发器可以这么写:
-- 加个小判断,避免出现开头就输入运算符、或者连续输入运算符的情况 IF :DISPLAY_EXPR IS NOT NULL AND NOT REGEXP_LIKE(:DISPLAY_EXPR, '[\+\-\*\/]$') THEN :DISPLAY_EXPR := :DISPLAY_EXPR || ' + '; END IF;
减、乘、除按钮同理,替换代码里的' + '为对应的运算符即可(比如' - '、' * ')。这里的正则判断是为了提升用户体验,防止出现++或者1+*这类无效的表达式格式。
4. 等号按钮的计算逻辑(可选)
如果需要实现表达式计算功能,等号按钮的触发器可以这么写:
DECLARE v_result NUMBER; BEGIN -- 用EXECUTE IMMEDIATE执行表达式计算 EXECUTE IMMEDIATE 'SELECT ' || :DISPLAY_EXPR || ' FROM DUAL' INTO v_result; :DISPLAY_EXPR := :DISPLAY_EXPR || ' = ' || TO_CHAR(v_result); EXCEPTION WHEN OTHERS THEN :DISPLAY_EXPR := 'Invalid Expression'; END;
这段代码会计算当前显示的表达式,然后把结果追加到后面,比如显示成1 + 1 = 2;如果表达式格式错误(比如1 + * 2),会显示错误提示。
5. 清空按钮的逻辑
添加一个清空按钮BTN_CLEAR,给它的WHEN-BUTTON-PRESSED触发器写这段代码:
:DISPLAY_EXPR := NULL;
这样用户可以一键清空显示项,重新输入新的表达式。
小技巧
- 可以把显示项的Justify属性设为
Right,让表达式右对齐,更符合日常计算器的显示习惯 - 如果需要支持小数点,给小数点按钮添加类似数字按钮的逻辑,追加
.即可,记得加判断避免同一个数字里出现多个小数点
内容的提问来源于stack exchange,提问作者Ramiz Tariq
相关产品推荐
相关产品推荐

