ClientDataSet 在 onGetText 的問題~ |
尚未結案
|
eightball
一般會員 發表:1 回覆:5 積分:1 註冊:2004-11-01 發送簡訊給我 |
|
海星
高階會員 發表:41 回覆:217 積分:106 註冊:2003-01-09 發送簡訊給我 |
|
eightball
一般會員 發表:1 回覆:5 積分:1 註冊:2004-11-01 發送簡訊給我 |
引言: 你應該是在 DBEdit 的 OnExit 的事件上寫上你的東西才對. 這樣只要一離開 DBEdit 他就會去執行事件,去檢查輸入有沒有正確. 不然你也可以放一個布林變數,當變數 = True 時,表示已經執行過, 不要再執行了,下次可以再執行時,重新把這個變數設成 False.您好~ 感謝您的回答,但是我是使用 DBGrid ,直接由DBGrid 上面去 修改,我也有想過使用參數來控制 onGetText 的執行, 但是好像不是最好的方法,, 所以再請教各位沒有沒其它的好方法~ |
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
引言: 假設在第一次執行查詢的動作時,只執行一次該 Events . 然後再來就是內容有異動時再執行一次 onGetText 的Events ...??? OnGetText is used to determine the DisplayText of that field. Perhaps you should try other event like AfterPost? Or try OnDataChange event of your datasource? http://pywong.hk.st http://www.lazybones.ca |
海星
高階會員 發表:41 回覆:217 積分:106 註冊:2003-01-09 發送簡訊給我 |
|
eightball
一般會員 發表:1 回覆:5 積分:1 註冊:2004-11-01 發送簡訊給我 |
引言:嗯.. procedure TDMhehg.CD2exe_manGetText(Sender: TField; var Text: String; DisplayText: Boolean); begin Text := GetEmpNam(Sender.AsInteger); end; 我的目的就是不要讓它一直去 run 這個 GetText 的動作..引言: 假設在第一次執行查詢的動作時,只執行一次該 Events . 然後再來就是內容有異動時再執行一次 onGetText 的Events ...??? OnGetText is used to determine the DisplayText of that field. Perhaps you should try other event like AfterPost? Or try OnDataChange event of your datasource? http://pywong.hk.st http://www.lazybones.ca |
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
引言:嗯.. procedure TDMhehg.CD2exe_manGetText(Sender: TField; var Text: String; DisplayText: Boolean); begin Text := GetEmpNam(Sender.AsInteger); end; 我的目的就是不要讓它一直去 run 這個 GetText 的動作..face='Lucida Console'>http://pywong.hk.st http://www.lazybones.ca |
eightball
一般會員 發表:1 回覆:5 積分:1 註冊:2004-11-01 發送簡訊給我 |
|
T.J.B
版主 發表:29 回覆:532 積分:497 註冊:2002-08-14 發送簡訊給我 |
很奇怪ㄝ 為什麼你要說不想一直去觸發OnGetText事件???
你有需要 秀出來的值要跟原來的不一樣 才會去做的ㄚ class="code">
procedure TDMhehg.CD2exe_manGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
Text := GetEmpNam(Sender.AsInteger);
end;
那不管是瀏覽模式或是新增修改模式都會觸發並且執行 如果這樣寫
procedure TDMhehg.CD2exe_manGetText(Sender: TField; var Text: String; DisplayText: Boolean); begin if ado1.state in [dsbrowse] then Text := GetEmpNam(Sender.AsInteger); end;那麼在新增修改模式會觸發但是不會執行 而在瀏覽模式會觸發並且執行 所以一但資料有變動的時候不管在什麼模式下 都一定會觸發OnGetText事件 要不要執行 就看你程式碼怎麼控制 如果你堅持 而且project是剛開始做 可以在SQL裡面就把它case end 掉 如果不是 就不要從SQL改了 天行健 君子當自強不息~~@.@ 發表人 - T.J.B 於 2004/11/25 11:16:45
------
天行健 君子當自強不息~~@.@ |
海星
高階會員 發表:41 回覆:217 積分:106 註冊:2003-01-09 發送簡訊給我 |
引言: 感謝大大的回覆.. 不是不用DBEdit..只不過,我們家的USER 想的很多,要的功能也很多, 要叫他一個個的去選,去改,他就會覺得 不符合需求時,就變成,造成他工作的 Delay ... 所以嚕..只好想辦法嚕~全世界的User都是一模一樣的狀況,又不是你們家這樣而已? 我都已經進化到讓他們可以複製上一筆的紀錄,然後再修改需修改的欄位, 甚至當新增一筆資料時,一堆資料預設值都幫他們打好了, 選擇絕對還是最快的,當你的選擇東西太多時,當然你要去做處理, 讓他的選項縮小,不然50多筆資料要去選反而會變慢了,他們當然會抱怨, DBGrid 還是少拿當成輸入資料為妙,例如貨品數量是100,User改了一下, 然後他又想查一下別的東西,去點別的東西,那個東西就儲存了, 然後嚴重事情就發生了..資料不正確,以後你就頭疼了... |
eightball
一般會員 發表:1 回覆:5 積分:1 註冊:2004-11-01 發送簡訊給我 |
引言: 很奇怪ㄝ 為什麼你要說不想一直去觸發OnGetText事件??? 你有需要 秀出來的值要跟原來的不一樣 才會去做的ㄚ class="code"> procedure TDMhehg.CD2exe_manGetText(Sender: TField; var Text: String; DisplayText: Boolean); begin Text := GetEmpNam(Sender.AsInteger); end; 那不管是瀏覽模式或是新增修改模式都會觸發並且執行 如果這樣寫嗯嗯..感謝大大的指教,再來試試看~procedure TDMhehg.CD2exe_manGetText(Sender: TField; var Text: String; DisplayText: Boolean); begin if ado1.state in [dsbrowse] then Text := GetEmpNam(Sender.AsInteger); end;那麼在新增修改模式會觸發但是不會執行 而在瀏覽模式會觸發並且執行 所以一但資料有變動的時候不管在什麼模式下 都一定會觸發OnGetText事件 要不要執行 就看你程式碼怎麼控制 如果你堅持 而且project是剛開始做 可以在SQL裡面就把它case end 掉 如果不是 就不要從SQL改了 天行健 君子當自強不息~~@.@ 發表人 - T.J.B 於 2004/11/25 11:16:45 |
eightball
一般會員 發表:1 回覆:5 積分:1 註冊:2004-11-01 發送簡訊給我 |
引言:嗯嗯..了解,,感謝指教~ 再來試試看~引言: 感謝大大的回覆.. 不是不用DBEdit..只不過,我們家的USER 想的很多,要的功能也很多, 要叫他一個個的去選,去改,他就會覺得 不符合需求時,就變成,造成他工作的 Delay ... 所以嚕..只好想辦法嚕~全世界的User都是一模一樣的狀況,又不是你們家這樣而已? 我都已經進化到讓他們可以複製上一筆的紀錄,然後再修改需修改的欄位, 甚至當新增一筆資料時,一堆資料預設值都幫他們打好了, 選擇絕對還是最快的,當你的選擇東西太多時,當然你要去做處理, 讓他的選項縮小,不然50多筆資料要去選反而會變慢了,他們當然會抱怨, DBGrid 還是少拿當成輸入資料為妙,例如貨品數量是100,User改了一下, 然後他又想查一下別的東西,去點別的東西,那個東西就儲存了, 然後嚴重事情就發生了..資料不正確,以後你就頭疼了... |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |