将记录保存到数据库后,我希望有任何字段更改颜色,以指示用户在输入该字段时已做出未提交的更改。什么是表明数据已更改但不更新的好方法?
最好只在closeField上设置foreColor,还是跟踪每个按键更好,并将其与包含前一个字段内容的变量进行比较?
将记录保存到数据库后,我希望有任何字段更改颜色,以指示用户在输入该字段时已做出未提交的更改。什么是表明数据已更改但不更新的好方法?
最好只在closeField上设置foreColor,还是跟踪每个按键更好,并将其与包含前一个字段内容的变量进行比较?
您是否要求在加载字段数据的过程完成后检测文本更改,并输入新的未保存的数据?您提到了新的未提交的更改,我不确定您的想法。这意味着使用closeField处理程序将不会指示“如果他们键入到该字段中的未提交的更改”
但是,如果是这样,我会在写入数据库时设置字段的自定义属性,并将简单处理程序字段脚本
on textChanged
if me <> the lastText of me then set the foreColor of me to "blue"
end textChanged
该属性被命名为“lastText”,并且由任何处理程序保存到数据库来设置。
set the lastText of field "yourField" to field "yourField"
如果在该字段中编辑了任何内容,颜色将变为蓝色。当然,保存处理程序也应该将颜色设置为黑色。
是的,搜索或新记录按钮会将foreColor重置为空或黑色。当卡或堆栈关闭时,我也考虑了一个通用的捕获。回答警告“数据已被更改,如果退出,更改将会丢失。”但我认为实时着色更有效。 – 2013-03-11 03:24:23
下面是一个卡级别脚本,用于处理表单上的所有字段。将数据加载到卡上时,将每个字段的uOriginalText自定义属性设置为与加载到字段中的文本相同的值。
on closeField
# the target control for this message
put the target into tTarget
# detect case changes like 'mr jobs' to 'Mr Jobs'
set the caseSensitive to true
# compare with the original text, set when the form was loaded
if the text of tTarget <> the uOriginalText of tTarget then
# indicate the change - I've used backColor in case the field is now empty
set the backColor of tTarget to "red"
else
# clear warning background color
set the backColor of tTarget to empty
end if
end closeField
我使用选项卡式按钮来隐藏/显示卡上的组。并非所有的团体都是“形式”的一部分。我可以通过将第3行更改为'将grp的目标“myForm”放入tTarget'来限制这种行为吗? – 2013-03-12 01:02:24
您可以设置属于窗体一部分的每个字段的另一个自定义属性,例如 - uFormField。然后你可以在第3行之后添加以下内容:如果tTarget的uFormField接着..... – splash21 2013-03-12 14:35:00
你也可以在卡级别捕获textChanged消息... – 2013-03-14 20:13:42
在glx2我们实际上做的有点矫枉过正 - 救场的md5digest当你保存它,然后检查md5digest领域对保存的价值,看它是否需要保存。显然你不想在每个按键上做计算,不管它有多快。在closeField上做这件事是一个很好的方法来处理它,尽管我似乎记得过去有一个问题,如果你点击OSX上的另一个应用程序,closeField不会被触发。
我们在谈论什么样的前端? – 2013-03-11 03:04:04