將記錄保存到數據庫後,我希望有任何字段更改顏色,以指示用戶在輸入該字段時已做出未提交的更改。什麼是表明數據已更改但不更新的好方法?
最好只在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