全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1859
推到 Plurk!
推到 Facebook!

請問如何讓Grid內某ㄧ欄位在編輯狀態無法修改

答題得分者是:P.D.
marklue
一般會員


發表:33
回覆:55
積分:17
註冊:2005-02-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-19 03:26:41 IP:203.73.xxx.xxx 未訂閱
各位前輩好: 請問在Grid內某ㄧ欄位為KEY,欲在編輯狀態無法修改 但是新增狀態要可以輸入,需要怎樣控制 以下是我嘗試的方法 在DataSource1StateChange 判斷ADOQuery1.State=dsEdit則DBGrid1.Columns[1].ReadOnly:=True 可是發覺Grid如往下新增後狀態為INSERT 但是游標往上移時STATE還是保留在INSERT未改為EDIT 所以還是鎖不到 而且DBGrid1.Columns[1]是自定欄位,用LOOKUP對應成下拉式選單 煩請各位前輩告知錯誤之處 謝謝!
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-19 09:00:44 IP:61.71.xxx.xxx 未訂閱
這是當然的, 因為你先下了Insert, 所以整個db.state會記錄為Insert, 如果你想改為edit, 則會造成Insert失效, 也就是Insert會失敗 兩個做法, 1.Insert時鎖定dbgrid表不准移動記錄 2.把這句DBGrid1.Columns[1].ReadOnly:=True改到Edit的按鍵上寫即可 或者如果你沒有另外撰寫edit button, 而是直接在grid 上按下就修改的話, 寫到 adoquery1.beforeedit事件上應該也可以 發表人 - P.D. 於 2005/05/19 09:03:33
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-19 10:20:57 IP:202.62.xxx.xxx 未訂閱
您好﹗    試試看這樣﹕ 把DataSource元件的AutoEdit屬性值設為False﹐然后在ADOQuery元件的AfterEdit事件中輸入﹕DBGrid1.Columns[1].ReadOnly := True;    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
marklue
一般會員


發表:33
回覆:55
積分:17
註冊:2005-02-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-19 22:31:06 IP:203.73.xxx.xxx 未訂閱
P.D.您好: 可以了! 謝謝! 發表人 - marklue 於 2005/05/19 23:41:37
系統時間:2024-10-06 9:46:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!