2013-03-11 59 views
3

将记录保存到数据库后,我希望有任何字段更改颜色,以指示用户在输入该字段时已做出未提交的更改。什么是表明数据已更改但不更新的好方法?

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

+0

我们在谈论什么样的前端? – 2013-03-11 03:04:04

回答

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" 

如果在该字段中编辑了任何内容,颜色将变为蓝色。当然,保存处理程序也应该将颜色设置为黑色。

+0

是的,搜索或新记录按钮会将foreColor重置为空或黑色。当卡或堆栈关闭时,我也考虑了一个通用的捕获。回答警告“数据已被更改,如果退出,更改将会丢失。”但我认为实时着色更有效。 – 2013-03-11 03:24:23

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 
+0

我使用选项卡式按钮来隐藏/显示卡上的组。并非所有的团体都是“形式”的一部分。我可以通过将第3行更改为'将grp的目标“myForm”放入tTarget'来限制这种行为吗? – 2013-03-12 01:02:24

+0

您可以设置属于窗体一部分的每个字段的另一个自定义属性,例如 - uFormField。然后你可以在第3行之后添加以下内容:如果tTarget的uFormField接着..... – splash21 2013-03-12 14:35:00

+0

你也可以在卡级别捕获textChanged消息... – 2013-03-14 20:13:42

1

在glx2我们实际上做的有点矫枉过正 - 救场的md5digest当你保存它,然后检查md5digest领域对保存的价值,看它是否需要保存。显然你不想在每个按键上做计算,不管它有多快。在closeField上做这件事是一个很好的方法来处理它,尽管我似乎记得过去有一个问题,如果你点击OSX上的另一个应用程序,closeField不会被触发。

相关问题