線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:969
推到 Plurk!
推到 Facebook!

請教DBGrid元件的OnKeypress事件相關問題

尚未結案
cashxin2002
版主


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

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-21 23:30:16 IP:63.84.xxx.xxx 未訂閱
請教各位前輩.    小弟在DBGrid元件的OnKeyPress事件中, 輸入如下程式碼, 但當指標移動到指定的SelectIndex欄位時, 似乎并沒有Key=#0的作用(如下紅色處), 還是可以鍵入, 該如何解決呢? 
procedure TForm3.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key=#13 then
    begin
      if ADOTable1.State = dsBrowse then
        begin
          ADOTable1.Next;
        end
      else
      if ADOTable1.State = dsInsert then
        begin
          if DBGrid1.SelectedIndex < (DBGrid1.FieldCount-1) then
            begin
              if (DBGrid1.SelectedIndex = 2) or (DBGrid1.SelectedIndex
                = 3) or (DBGrid1.SelectedIndex = 4) then
                begin
                  Key := #0;
                end;
              DBGrid1.SelectedIndex := DBGrid1.SelectedIndex 1;
            end
          else
            begin
              ADOTable1.Post;
            end;
        end
      else
      if ADOTable1.State = dsEdit then
        begin
          if DBGrid1.SelectedIndex < (DBGrid1.FieldCount-1) then
            begin
              if (DBGrid1.SelectedIndex = 2) or (DBGrid1.SelectedIndex
                = 3) or (DBGrid1.SelectedIndex = 4) then
                begin
                  Key := #0;
                end;
              DBGrid1.SelectedIndex := DBGrid1.SelectedIndex 1;
            end
          else
            begin
              ADOTable1.Post;
            end;
        end;
    end;
end;
懇請指教, 感謝! ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-22 09:33:33 IP:218.163.xxx.xxx 未訂閱
看不出你所說的問題, 很正常啊 當符合條件時, EnterKey 設成key=#0使程式無任何反應, 很正確不是嗎
cashxin2002
版主


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-22 11:19:34 IP:63.84.xxx.xxx 未訂閱
感謝ccchen版主大人的回覆﹒    小弟所要達到的效果﹐是在ADOTable1處于新增或修改的狀態時﹐對應的DBGrid1中輸入焦點會隨回車鍵(Key=#13)的按下往下一欄位移動﹐直至最后一欄位做Post動作﹐但因為在DBGrid1的欄位編輯器中﹐小弟在IndexNo2, 3, 4欄位設定了PickList屬性﹐所以想做到如果DBGrid1的輸入焦點在這三個欄位上時﹐用Key:=#0來控制不允許做輸入的動作﹐只能從PickList中選取預設的資料﹐但目前的程式碼似乎沒有作用﹐當焦點到這三個欄位時﹐依然可以做Key In﹐這就是小弟的問題所在﹒    煩請指教﹐感謝﹗    ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-10-23 08:29:04 IP:218.163.xxx.xxx 未訂閱
可是你只有在key=#13時才改成key=#0啊, 並沒有去管其他的輸入值 照你的程式來看, key=#13時, 若selectedindex=2,3,4則key=#0 key<> #13時完全沒處理, 所以當然可以輸入其他值
cashxin2002
版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-10-24 12:53:48 IP:63.84.xxx.xxx 未訂閱
感謝ccchen版主大人的提示.    小弟將紅色部分寫在OnKeyPress事件中的另一個if..begin..end;中, 并放置在if Key = #13之前即可, 感謝!    ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
系統時間:2024-06-22 18:58:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!