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

為什麼DBGrid的CellClick一定要按到框框才會執行呢???

答題得分者是:Rain
361002
一般會員


發表:7
回覆:18
積分:5
註冊:2003-04-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-23 16:56:58 IP:203.69.xxx.xxx 未訂閱
如題! 我按到格子裡面都沒用, 害我以為用錯了, 一定要按到框框的線才會去執行, 為什麼呢??? 是我少加了什麼嗎? 以下是我的程式, 可不可以麻煩各位幫我看一下!謝謝! procedure TfrmGroupOrder.DBGrid1CellClick(Column: TColumn); var iQty : integer; begin if DBGrid1.SelectedField = ADOTable1.Fields[3] then begin iQty := DBGrid1.SelectedField.Value; ShowMessage(inttostr(iQty)); end; end;
ccsam
一般會員


發表:6
回覆:8
積分:7
註冊:2003-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-23 17:31:29 IP:202.39.xxx.xxx 未訂閱
procedure TfrmGroupOrder.DBGrid1CellClick(Column: TColumn); var iQty : integer; begin iQty := StrtoInt(Column.Field.Text); ShowMessage(inttostr(iQty)); end; end;
361002
一般會員


發表:7
回覆:18
積分:5
註冊:2003-04-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-24 08:38:00 IP:203.69.xxx.xxx 未訂閱
我試了一下, 還是一樣耶! 點格子裡面沒用, 一定要點到"線"才會去run. 而且, 我是希望點到某個cell時才做某件事, 例如, 刪單之類的功能.
Rain
資深會員


發表:31
回覆:236
積分:268
註冊:2003-02-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-24 09:03:09 IP:218.5.xxx.xxx 未訂閱
很抱歉,因為先前有回復你的一個帖子,有提到把DBGrid的Options屬性的 dgAlwaysShowEditor項設為True,不觸發那個事件很可能跟此有關係,設為 原來的False大概就正常了,如果想保留這個項為True,可把相關的代碼放在 DataSource的OnDataChange事件中處理: … if Field = ADOTable1.Fields[3] then …
361002
一般會員


發表:7
回覆:18
積分:5
註冊:2003-04-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-07-24 13:27:34 IP:203.69.xxx.xxx 未訂閱
那請問Rain,  dbAlwaysShowEditor要寫在datasoure 的ondatachange的那個屬性呢?  DBGrid好像沒有相對應的屬性,  對不起,因為我是初學者, 所以對屬性並不熟, 還要麻煩你指點一二, 謝謝!
Rain
資深會員


發表:31
回覆:236
積分:268
註冊:2003-02-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-07-24 14:39:20 IP:218.85.xxx.xxx 未訂閱
你好: dbAlwaysShowEditor在DBGrid的Options屬性中,是它的一個項 ,直接設置就好。我的意思是在DataSoure的OnDataChange事件 中加入功能代碼。把DBGrid的Options的dgAlwaysShowEditor項設為 True則在滑鼠點擊單格時直接進入編輯狀態,所以不會觸發OnCellClick事件, 但是在剛進入一個單格或者從一個單格移動到另一個單格都會觸發 DataSource的OnDataChange事件,因此你可以把原來想在OnCellClick過程 中想做的事情放在OnDataChange事件中處理。 不知道這下子說清楚了沒有?
aquarius
資深會員


發表:3
回覆:347
積分:330
註冊:2003-05-21

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-07-24 14:57:44 IP:211.23.xxx.xxx 未訂閱
引言: 那請問Rain, dbAlwaysShowEditor要寫在datasoure 的ondatachange的那個屬性呢? DBGrid好像沒有相對應的屬性, 對不起,因為我是初學者, 所以對屬性並不熟, 還要麻煩你指點一二, 謝謝! < face="Verdana, Arial, Helvetica"> 我不是 RAIN, 不過我回答我想你也不會介意吧!!... :) 把 dgAlwaysShowEditor 設為 False, 然後對應的 event 改成如下的碼:
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
  if DBGrid1.SelectedIndex=2 then
    begin
    ShowMessage('HAHAHA') ;
    end ;      // 用來產生類似 AlwaysShowEdit 的效果
  if DBGrid1.EditorMode=false then
   DBGrid1.EditorMode:=true ;    end;    procedure TForm1.DBGrid1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  // 用來產生類似 AlwaysShowEdit 的效果
  if  DBGrid1.EditorMode=false then
     DBGrid1.EditorMode:=true ;
end;
 
...Aquarius
------
水瓶男的blog: http://791909.blogspot.com
361002
一般會員


發表:7
回覆:18
積分:5
註冊:2003-04-10

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-07-24 16:11:48 IP:203.69.xxx.xxx 未訂閱
感謝Rain跟aquarius的大力幫忙!< > 終於把一些要用的功能作出來了! < >
系統時間:2024-11-25 9:44:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!