2013-03-11 55 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不會被觸發。

相關問題