Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface 如何在4d数据库的列表框列中设置24小时时间格式的条目过滤器_User Interface_4d Database - Fatal编程技术网

User interface 如何在4d数据库的列表框列中设置24小时时间格式的条目过滤器

User interface 如何在4d数据库的列表框列中设置24小时时间格式的条目过滤器,user-interface,4d-database,User Interface,4d Database,我有一个有两列的列表框(比如“from time”和“to time”)。我只想按24小时格式过滤用户输入,即除单元格中的24小时格式(即00:00至24:00)外,不允许按任何其他键。我试过这样做:&“0-2”和“0-3”和“0-5”和“0-9”效果很好,但它不允许在单元格值中放入19:22或13:59之后的值,因为我没有传递24小时时间格式的其他可选值。在正则表达式中,实现这个('/^([01][0-9]| 2[0-3]):([0-5][0-9])$/')有点容易,但不确定如何在4d数据库列

我有一个有两列的列表框(比如“from time”和“to time”)。我只想按24小时格式过滤用户输入,即除单元格中的24小时格式(即00:00至24:00)外,不允许按任何其他键。我试过这样做:&“0-2”和“0-3”和“0-5”和“0-9”效果很好,但它不允许在单元格值中放入19:22或13:59之后的值,因为我没有传递24小时时间格式的其他可选值。在正则表达式中,实现这个('/^([01][0-9]| 2[0-3]):([0-5][0-9])$/')有点容易,但不确定如何在4d数据库列表框单元格字段中实现


任何帮助都将不胜感激。谢谢。

如果您需要对输入值进行精细控制,我建议您将列表框列设置为文本,并自行管理显示和UI

时间字符串
方法将为您转换时间值:

$timeStr:=时间字符串(当前时间)/$timeStr=“07:23:45”

输入过滤器不是正则表达式,不会提供所需的精细控制。它们可以让你过滤不需要的字符(例如,除了数字以外的任何字符)。对列上的条目过滤器尝试此操作
!0和9:

结果将是输入的数字的文本字符串。编写一个方法来获取输入字符串,解析元素,验证它们,更新数据源,然后返回一个格式正确的字符串以供显示。我将使用
On data change
表单事件作为运行该方法的触发器

    $h:=Num(Substring($inputStr;1;2))
    $m:=Num(Substring($inputStr;3;2))
    $s:=Num(Substring($inputStr;5;2))
最新版本的4D将时间值管理为午夜后的秒数,这就是为什么有时您可能会得到一个长时间值而不是“时间”值。根据您使用的版本和列表框的类型(集合、实体选择、数组等),您甚至可能没有列表框列的“时间”类型选项,这可能会造成混淆。考虑到所有这些,将值字符串化并处理它就更容易了

例如,如果用户输入“33:45:00”,您想做什么?如果您想在一开始就拒绝“33”,您可以在键入每个字符时对其求值。击键后打开
表单事件允许您在字段中每次更改后运行评估方法,
获取编辑文本
命令允许您查看用户输入的内容

要将字符串(或longint)转换为时间值,请使用
time
方法:
$timeVar:=时间($timeStr)

4D是一种类型化语言,从一开始就有时间类型。但是,随着ORDA的添加,一些UI对象不再支持时间类型(例如,集合和实体选择列表框),而是使用longint类型。如果您正在使用现有的应用程序或旧代码,但试图使用更新的工具,则可能会产生混淆。一定要仔细看看


您可能不需要如此参与输入。这取决于用户界面和数据的性质。时间和日期在几乎每个平台上都很棘手。

你好,Kirk,谢谢你的建议,我已经完全按照你在第一个建议中提到的做了,即将输入值作为字符串,然后解析为时间值,然后根据有效的时间值进行验证,然后在这里提出问题。我正在寻找在UI中的用户输入级别过滤时间值的方法。但现在看来,在4D中实现它是不可能的,就像我们可以使用正则表达式在JSHTML输入中实现一样。实际上,我希望在用户界面中,用户输入值最多只能达到
HH:MM
,因此使用
!0和9###:##
作为条目过滤器,并在数据更改时在
中验证。谢谢