有什么好方法可以表明数据已更改但未更新?

时间:2013-03-11 02:47:46

标签: sql livecode

将记录保存到数据库后,我希望有任何字段更改颜色,以指示用户在键入该字段时已进行了未提交的更改。

最好只在closeField上设置foreColor,还是跟踪每个按键更好,并将其与包含前一个字段内容的变量进行比较?

3 个答案:

答案 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就不会被触发。