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

請問取消DBGrid的向下鍵即新增的方式?

 
skycap
一般會員


發表:10
回覆:14
積分:4
註冊:2002-11-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-31 10:32:51 IP:61.216.xxx.xxx 未訂閱
請教各位大大: 若我已在DBgrid中對大部分欄位下readonly,只開放出一個欄位可Edit, 且資料庫此資料表field是不可有NULL的.. 但因DBGrid中若按鍵盤往下鍵,結果會自行新增,(因datasource為autoedit) 此時若移到其他record ,則record會自動post,則資料庫會當出錯誤訊息; 可否取消此dbgrid的按往下鍵即新增呢? 多謝各位大大! 我的環境為DELPHI 6,ADOQUERY,MS-SQL
T.J.B
版主


發表:29
回覆:532
積分:497
註冊:2002-08-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-31 13:13:47 IP:61.220.xxx.xxx 未訂閱
你可以在AdoQuery的onafterinsert事件寫 AdoQuery1.Cancel; 這樣就無法新增了 天行健 君子當自強不息~~@.@
------
天行健
君子當自強不息~~@.@
mmcho
一般會員


發表:7
回覆:9
積分:3
註冊:2002-04-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-31 16:05:20 IP:211.22.xxx.xxx 未訂閱
我的組長教過我 在DBGrid1KeyDown下填入此程式碼 procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key in [VK_DOWN]) and (DBGrid1.DataSource.DataSet.recno = DBGrid1.DataSource.DataSet.recordcount) then DBGrid1.Options := DBGrid1.Options - [dgEditing] else DBGrid1.Options := DBGrid1.Options [dgEditing]; end;
T.J.B
版主


發表:29
回覆:532
積分:497
註冊:2002-08-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-31 16:30:54 IP:61.220.xxx.xxx 未訂閱
引言: 我的組長教過我 在DBGrid1KeyDown下填入此程式碼 procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key in [VK_DOWN]) and (DBGrid1.DataSource.DataSet.recno = DBGrid1.DataSource.DataSet.recordcount) then DBGrid1.Options := DBGrid1.Options - [dgEditing] else DBGrid1.Options := DBGrid1.Options [dgEditing]; end;
MMCHO所說的這個技巧 真是很不錯喔 天行健 君子當自強不息~~@.@
------
天行健
君子當自強不息~~@.@
skycap
一般會員


發表:10
回覆:14
積分:4
註冊:2002-11-07

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-31 23:08:59 IP:210.64.xxx.xxx 未訂閱
不好意思..因為忙於程式的撰寫與修改, 又常於好幾個程式討論區中發問, 有時會忘記自己在哪裡提問過了.. 有些討論區又是不需回覆的. 所以超出回覆時間,被提出警告了.. 現在才趕緊回來結案. 我沒有什麼要申訴的,是我的錯!抱歉!
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-06-01 11:25:16 IP:61.230.xxx.xxx 未訂閱
對不起,純討論,我覺得 T.J.B. 版主的方法較好, 原因有三 : 1. 非 Local 資料庫 DataSet.recno 與 DataSet.recordcount 可能無效. 2. 如果 DataSet 的資料量很大, 要取得 DataSet.recordcount 必須自資料庫取回所有資料, 降低效率. 3. 如果按 [Insert] 鍵, 則防止不到.
hxf_wolf
一般會員


發表:7
回覆:38
積分:9
註冊:2002-03-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-06-05 08:39:36 IP:218.75.xxx.xxx 未訂閱
procedure DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = vk_down then begin DBGrid1.DataSource.Next; if DBGrid1.DataSource.Eof then key := 0 else DBGrid1.DataSource.Prior; end; end; Happy Coding
------
Happy Coding
系統時間:2024-07-03 23:55:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!