将记录保存到数据库后,我希望有任何字段更改颜色,以指示用户在键入该字段时已进行了未提交的更改。
最好只在closeField上设置foreColor,还是跟踪每个按键更好,并将其与包含前一个字段内容的变量进行比较?
答案 0 :(得分:4)
您是在询问如何在加载了字段数据的过程中检测到文本更改,并且输入了新的未保存数据?您提到了新的未提交的更改,我不确定您的想法。这意味着使用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"
如果在该字段内编辑了任何内容,颜色将变为蓝色。当然,保存处理程序也应该将颜色设置为黑色。
答案 1 :(得分:1)
这是一个卡级脚本来处理表单上的所有字段。将数据加载到卡上时,将每个字段的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
答案 2 :(得分:1)
在glx2中我们实际上做了一些矫枉过正 - 保存时保存字段的md5digest,然后根据保存的值检查字段的md5digest,看是否需要保存。显然你不想在每个按键上进行计算,无论它有多快。在closeField上执行此操作是处理它的好方法,尽管我似乎记得过去有一个问题,如果你点击OSX上的另一个应用程序,closeField就不会被触发。