全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3968
推到 Plurk!
推到 Facebook!
[<<] [1] [2] [>>]

在DBGrid.Columns[0]中填入字串後,如何移動到Columns[1]?

尚未結案
chiag
一般會員


發表:14
回覆:38
積分:10
註冊:2002-10-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-08 11:50:58 IP:218.164.xxx.xxx 未訂閱
又要煩各位大大了, 目前小弟在試DBGrid元件時, 想要在Columns[0]中填入字串後, 以程式碼控制游標移動到Columns[1]中, 己嘗試使用以下程式碼了, DBGrid.SelectedIndex := 1; 是可以移過去(直接輸入資料會出現在Columns[1]), 但似乎不會觸發ColEnter事件, 也不會出現輸入狀態的游標? 是否有那位大大知曉該如何解決呢? 先謝謝了!! 新手上路!!加油中...
P.D.
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-08 14:04:47 IP:61.66.xxx.xxx 未訂閱
引言: 又要煩各位大大了, 目前小弟在試DBGrid元件時, 想要在Columns[0]中填入字串後, 以程式碼控制游標移動到Columns[1]中, 己嘗試使用以下程式碼了, DBGrid.SelectedIndex := 1; 是可以移過去(直接輸入資料會出現在Columns[1]), 但似乎不會觸發ColEnter事件, 也不會出現輸入狀態的游標? 是否有那位大大知曉該如何解決呢? 先謝謝了!! 新手上路!!加油中...
加一個 dbgrid1.setfocus 就可以了!
chiag
一般會員


發表:14
回覆:38
積分:10
註冊:2002-10-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-08 14:17:08 IP:218.164.xxx.xxx 未訂閱
感謝P.D.的回應, 只可惜,仍無法解決問題.... DBGrid.SelectedIndex := 1; 該行CODE,我是放DBGridEnter事件, So, DBGrid應該取得Focus了, 還是,我誤會您的意思了.... 新手上路!!加油中...
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-04-08 14:41:33 IP:61.221.xxx.xxx 未訂閱
chiag你好: 與其用onEnter不如試試onExit,或在onkeypress中觸發
------
======================
昏睡~
不昏睡~
不由昏睡~
chiag
一般會員


發表:14
回覆:38
積分:10
註冊:2002-10-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-04-08 17:46:56 IP:218.164.xxx.xxx 未訂閱
感謝ko大大的回應, but,還是無法解決問題 可能是問題沒有詳細說明吧! 原先希望能在進入 > 新手上路!!加油中...
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-04-08 18:12:39 IP:61.216.xxx.xxx 未訂閱
1.給值Columns[0].. 2.SHOWMESSAGE('輸入貨號'); 3.DBGrid.SelectedIndex := 1; 4.DBGrid1.SetFocus; TRY TRY SEE
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-04-08 18:18:50 IP:218.16.xxx.xxx 未訂閱
DBGrid.SelectedIndex := 1; 後加入 DBGrid.EditorMode := true;
chiag
一般會員


發表:14
回覆:38
積分:10
註冊:2002-10-02

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-04-08 18:45:00 IP:218.164.xxx.xxx 未訂閱
再度感謝二位大大的回應, 只可惜,仍無法解決問題, 因為仍舊無游標,也不會觸發DBGridColEnter事件, but, 另外,小弟有試出另一解決方法, 即在設定Columns[0]的值後, 使用PostMessage()模擬按下Enter鍵即可解決了. 不知是否有其它的方法, 新手上路!!加油中...
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-04-08 18:55:31 IP:61.216.xxx.xxx 未訂閱
我post的那段我Run過可行寫在/newRecord事件內,你要不要把你將Columns[0]給值那一段完整CodePost上來ㄋ??
chiag
一般會員


發表:14
回覆:38
積分:10
註冊:2002-10-02

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-04-08 19:21:35 IP:218.164.xxx.xxx 未訂閱
真棒!!小弟真喜歡chih的態度!! 我再詳述一下給定Columns[0]的值及程式架構. DBGrid.DataSet -> dmCS.cdsList DBGrid.Columns[0].Field -> Seq dmCS.cdsList.FieldByName{'Seq').Value := '1'; 其中 dmCS -> DataModule為bpl檔, cdsList -> 為ClientDataSet放在DataModule內, 而給定Columns[0]值又是在另一bpl檔內. 因此,想請chih大大指教, 該如何撰寫在newRecord事件內的程式碼呢? 或是您會如何來撰寫這部份的程式碼呢? 新手上路!!加油中...
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-04-08 19:36:27 IP:61.216.xxx.xxx 未訂閱
hi...chiag,過獎..互相學習而已啦..^^ Procedure TForm1.DetailSQLNewRecord(DataSet: TDataSet); Begin dmCS.cdsList.FieldByName('Seq').Value := '1';//這各就是給Columns[0]值ㄚ,ㄝ你之前不是有寫你給值OK了嗎?? SHOWMESSAGE('輸入貨號'); DBGrid1.SelectedIndex := 1; DBGrid1.SetFocus; End; TRY TRY SEE.. 發表人 - chih 於 2003/04/08 19:42:43
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-04-08 19:52:10 IP:218.16.xxx.xxx 未訂閱
DBGrid.EditorMode := true; 是會將 selected column 變成 edit 狀態的 你是甚樣寫的? 要觸發DBGridColEnter事件還不簡單,你真接呼叫它就可以了 DBGrid.SelectedIndex := 1; DBGridColEnter(Sender); DBGrid.EditorMode := true; // 要是最後一句,免得別句又改了 EditorMode
chiag
一般會員


發表:14
回覆:38
積分:10
註冊:2002-10-02

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-04-08 20:31:12 IP:218.164.xxx.xxx 未訂閱
按回應的順序,先回應chih大大: Procedure TForm1.DetailSQLNewRecord(DataSet: TDataSet); 您的是TForm1.DetailSQLNewRecord 我的是TdmCS.DetailSQLNewRecord 那該如何撰寫呢? 因為在TdmCS內是找不到DBGrid的, 兩者是在不同的Package檔內 再回應>>事件中加入:
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-04-08 21:38:23 IP:61.217.xxx.xxx 未訂閱
cdsList-->是Query嗎?? DataSource1.DataSet->DetailSQL DBGrid1.DataSource->DataSource1 這樣知道要寫在哪各事件了吧??? 應該是TdmCS.cdsListNewRecord
引言: Procedure TForm1.DetailSQLNewRecord(DataSet: TDataSet); 您的是TForm1.DetailSQLNewRecord 我的是TdmCS.DetailSQLNewRecord 那該如何撰寫呢? 因為在TdmCS內是找不到DBGrid的, 兩者是在不同的Package檔內 []是在不同的>< face="Verdana, Arial, Helvetica">
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-04-08 21:38:26 IP:218.16.xxx.xxx 未訂閱
奇怪。 我 post 之前是試過可以才 post 的。 剛才重新再做一個專案亦是可以的。 應是你的其他設定或事件在設定成 EditMode 之後執行又將之取消了。 你可檢查一下 DBGrid 的 Options->goEditing 是否 True; 另一個方法是將 DBGrid 的 Options->goAlwaysShowEditor 設成 True。
chiag
一般會員


發表:14
回覆:38
積分:10
註冊:2002-10-02

發送簡訊給我
#16 引用回覆 回覆 發表時間:2003-04-08 22:06:56 IP:218.164.xxx.xxx 未訂閱
回應chih大大: 由TForm是採用動態入的BPL檔, 所以並沒有相互USE,而僅是在TForm內use dmCS而己..    稟告版主: 目前小弟的程式,除了DBGridEnter這個事件外, 應該是無其它的事件或設定會改變EditMode吧, 是可以Columns[1]內輸入資料,但沒有游標在那一閃一閃的,真不習慣吔 至於,DBGrid.Options內的設定再度參照版主指示, 狀況雷同, so,小弟的小小要求只是會有游標在Columns[1]那一閃一閃亮晶晶 新手上路!!加油中...
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#17 引用回覆 回覆 發表時間:2003-04-08 23:12:32 IP:61.217.xxx.xxx 未訂閱
那你怎麼去啟動載入BPL??
chiag
一般會員


發表:14
回覆:38
積分:10
註冊:2002-10-02

發送簡訊給我
#18 引用回覆 回覆 發表時間:2003-04-08 23:31:15 IP:218.164.xxx.xxx 未訂閱
整個架構是: 在MainForm內use自訂函數的bpl檔(靜態載入), 再由該檔內的自訂函數來動態載入其它的bpl檔, 該自訂函數是以LoadPackage()為實際載入的動作, 整體架構是參考sryang大大(再一次的感謝)的建議http://delphi.ktop.com.tw/topic.php?TOPIC_ID=26376http://www.vclxx.org/DELPHI/D32FREE/DMENU.ZIP 來設計的. 新手上路!!加油中...
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#19 引用回覆 回覆 發表時間:2003-04-08 23:41:47 IP:218.16.xxx.xxx 未訂閱
最簡單的方法,就是你試試做個新專案試一試 : 1 個 dataset, 1 個 DS, 1 個 dbGrid dbGrid 的 onEnter 事件 設定 dbgrid.editmode := true; 看看是否能達到要求 注意,即使是Edit 狀態也是全選了裡面的內容的,就像你 Tab 去一個 Edit 一樣。
chiag
一般會員


發表:14
回覆:38
積分:10
註冊:2002-10-02

發送簡訊給我
#20 引用回覆 回覆 發表時間:2003-04-09 00:16:38 IP:218.164.xxx.xxx 未訂閱
回應版主還是不行吔!! 不知版主是否可提供您的測試專案,以供參考!! 新手上路!!加油中...
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#21 引用回覆 回覆 發表時間:2003-04-09 07:53:27 IP:211.74.xxx.xxx 未訂閱
是否可以把程式上傳到求助區?你POST的連結我看裡面並沒有DBGrid的部分..所以不知道你是在哪載入Bpl..
chiag
一般會員


發表:14
回覆:38
積分:10
註冊:2002-10-02

發送簡訊給我
#22 引用回覆 回覆 發表時間:2003-04-09 11:32:40 IP:218.164.xxx.xxx 未訂閱
原程式較不方便上傳, 不過可上傳另一程式,以供測試. 檔名:MyDBGrid.zip 新手上路!!加油中...
LPH
一般會員


發表:53
回覆:43
積分:19
註冊:2003-04-02

發送簡訊給我
#23 引用回覆 回覆 發表時間:2003-04-09 12:12:07 IP:218.162.xxx.xxx 未訂閱
procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = vk_Return then DBGRid1.SelectedIndex := DBGrid1.SelectedIndex 1; DBGrid1.SetFocus; end; 好像可以!!
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#24 引用回覆 回覆 發表時間:2003-04-09 12:24:56 IP:218.16.xxx.xxx 未訂閱
在 Form 的 onShow 事件加入 DBGrid1.SetFocus; DBGrid1.EditorMode := true;
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#25 引用回覆 回覆 發表時間:2003-04-09 12:27:05 IP:211.74.xxx.xxx 未訂閱
檔案在哪ㄋ??沒看到
引言: 原程式較不方便上傳, 不過可上傳另一程式,以供測試. 檔名:MyDBGrid.zip 新手上路!!加油中...
chiag
一般會員


發表:14
回覆:38
積分:10
註冊:2002-10-02

發送簡訊給我
#26 引用回覆 回覆 發表時間:2003-04-09 12:34:53 IP:218.164.xxx.xxx 未訂閱
不是在求助區嗎? http://delphi.ktop.com.tw/topic.php?TOPIC_ID=28388 新手上路!!加油中...
chiag
一般會員


發表:14
回覆:38
積分:10
註冊:2002-10-02

發送簡訊給我
#27 引用回覆 回覆 發表時間:2003-04-09 12:38:28 IP:218.164.xxx.xxx 未訂閱
按照版主的建議也不行吔!! 新手上路!!加油中...
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#28 引用回覆 回覆 發表時間:2003-04-09 13:03:05 IP:218.16.xxx.xxx 未訂閱
真奇怪,我用你的範例一加入就行了 你有沒有在 dbGrid1.DBGrid1Enter 刪去了 // 那些丫,你不執行 selectedindex := 1 當然不會跳到 column 1 囉
chiag
一般會員


發表:14
回覆:38
積分:10
註冊:2002-10-02

發送簡訊給我
#29 引用回覆 回覆 發表時間:2003-04-09 13:16:00 IP:218.164.xxx.xxx 未訂閱
請問版主,您所謂的可行,是指假設當按下a鍵後, 游標就會出現這樣子嗎? 若是的話,那可不行喔< > 而是要在未按下任何按鍵之前喔!!< > 新手上路!!加油中...
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#30 引用回覆 回覆 發表時間:2003-04-09 13:25:26 IP:218.16.xxx.xxx 未訂閱
甚麼也不用做,一 run 游標就在第二欄一閃一閃的。 我沒你使用的數據庫,所以轉用了 Delphi 範例 DBDEMOS 的數據庫(有多欄多筆資料),不過這應是沒影響 DBGrid 的。
chiag
一般會員


發表:14
回覆:38
積分:10
註冊:2002-10-02

發送簡訊給我
#31 引用回覆 回覆 發表時間:2003-04-09 13:33:44 IP:218.164.xxx.xxx 未訂閱
懇請版主提供程式, 以茲研究!! 謝謝!! 新手上路!!加油中...
[<<] [1] [2] [>>]
系統時間:2024-07-03 8:28:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!