如何设置编辑掩码,其中零表示0,而不是其他任何数字?

时间:2019-05-29 05:44:58

标签: string-formatting mask powerbuilder

情况: 字符0在数字显示格式中具有特殊含义。我的代码在某些条件下选择日期,并为另一个编辑字段(DW的列)显示格式,例如 1905 ,其中 19 是当年的后两位数字,而 05 是当前月份+“-” +“ ####”,因此我要设置的最终显示格式类似于 1905-####

问题 1905 中的零在目标编辑字段(列)中显示为 19 5 0 所在的位置显示有空格。编辑掩码 1905-#### 的最终结果在编辑字段中显示为1 9 5-,光标恰好在数字 9 之后我不要。

期望: 我希望将显示格式设置为“ 1905-”,并将键盘光标指向破折号“-”后的其余4位数字。

问题: 如何设置数字显示格式或编辑掩码以忽略 0 的特殊含义,而将 0 设为数字零而不是其他任何数字?

例如,这就是我为Trans_ID列(字符串类型列)设置掩码的方式。

dw_1.Object.Trans_ID.EditMask.Mask = Right(String(Date(dw_1.Object.DOB[1]), "YYYY"),2) +  String(Date(dw_1.Object.DOB[1]), "MM") + "-####"

PowerBuilder v12.5

2 个答案:

答案 0 :(得分:0)

尝试

string(month(today()), '00')

或者,对于整个字符串

Right(String(Date(dw_1.Object.DOB[1]), "YYYY"),2) +  String(month(Date(dw_1.Object.DOB[1]), "00") + "-####"

答案 1 :(得分:0)

PB帮助对这个问题没有帮助,但是 appeon 回答了这个问题。

真正的任务是将此编辑掩码 1905-#### 设置为一列。

没问题,可以像设置其他蒙版一样轻松设置。但是,当我们在列中输入数据时,在 9 5 之间会有一个空格,而不是 0

期望的结果是静态零而不是空格字符。因此,为使它起作用,我们在设计模式下再次设置了相同的蒙版,但使用了符号,如 19〜05-####

这将按照我们想要的方式工作。这意味着将不会显示空格,并且会显示 0 ,并且用户将无法更改 1905

1905 年不是固定的年份,因为它取决于 DOB ,所以会不断变化,因此我们必须设置相同的掩码 19〜05-### #在脚本

String TheMask
TheMask = Right(String(Date(dw_1.Object.DOB[1]), "YYYY"),2) 
IF Left(String(Date(dw_1.Object.DOB[1]), "MM"),1) = "0" THEN 
    TheMask += "~~~~0"
ELSE
    TheMask += Left(String(Date(dw_1.Object.DOB[1]), "MM"),1)
END IF
TheMask += Right(String(Date(dw_1.Object.DOB[1]), "MM"),1) + "-######"
dw_1.Object.Trans_ID.EditMask.Mask = TheMask

以上代码中的所有内容都很简单,但是让我问这个问题并花了很多时间弄清楚如何设置遮罩的一件事是必须重复的符号 4 时间而不是 2 时间。

如果我们尝试使用单个或少于四个符号设置掩码,则应用程序将崩溃。