DBGrid如何邊打邊算輸入長度 |
答題得分者是:st33chen
|
chris681016
中階會員 發表:69 回覆:122 積分:98 註冊:2006-10-12 發送簡訊給我 |
|
pceyes
尊榮會員 發表:70 回覆:657 積分:1140 註冊:2003-03-13 發送簡訊給我 |
|
chris681016
中階會員 發表:69 回覆:122 積分:98 註冊:2006-10-12 發送簡訊給我 |
感謝大大快速的回覆^^
但是我在輸入「內容」並不會馬上將資料寫回資料庫,必需要移動後才會寫入,請問大大還有別的方法嗎? 目地只是為了提示客戶在輸入超過幾個字後,會讓報表折行。
編輯記錄
chris681016 重新編輯於 2008-11-13 16:25:33, 註解 無‧
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
DBEdit 與 DBGrid 暨然是同一個 DataSource, 他們就會同時反應 User 的 Key-In 並同時顯示結果,
不是等到寫回資料庫才有結果. ===================引 用 chris681016 文 章=================== 感謝大大快速的回覆^^ 但是我在輸入「內容」並不會馬上將資料寫回資料庫,必需要移動後才會寫入,請問大大還有別的方法嗎? 目地只是為了提示客戶在輸入超過幾個字後,會讓報表折行。 |
chris681016
中階會員 發表:69 回覆:122 積分:98 註冊:2006-10-12 發送簡訊給我 |
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
因 TDataSource 之 OnDataChange() 要等換欄或換錄才被觸發,
故無法即時顯示 TDBGrid Key-In 內容至 TDBEdit. 請試一下於 TDBGrid->OnKeyUp() Event 做處理: (用 CBC 語法) [code cpp] void __fastcall Form1::DBGrid1KeyUp(......) { TField *oxFd = DBGrid1->SelectedField; String sxName = oxFd->FieldName; if (sxName == "您指定的欄名") { Variant FdVal = oxFd->Value; String sxVal = FdVal; int ixLen = sxVal.Length(); // 您要的 Length // .... 做您要的處理 } } [/code] |
chris681016
中階會員 發表:69 回覆:122 積分:98 註冊:2006-10-12 發送簡訊給我 |
大大一樣不會變化耶@@
我是delphi寫成這樣結果還是一樣。 procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var tf:TField; val:Variant; s_val:string; begin tf:=DBGrid1.SelectedField; if DBGrid1.SelectedField.FieldName='c_name' then begin val:=tf.Value; s_val:=val; ShowMessage(s_val); end; end; |
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
|
chris681016
中階會員 發表:69 回覆:122 積分:98 註冊:2006-10-12 發送簡訊給我 |
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
|
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
您好,
很有趣的問題, 我想我也可能用得到, 所以努力找, 終於被我找到了 假設拉一個 tlabel 叫 label3 來放目前打了多少字 以下程式段放在 dbgrid 的 keyup 事件 if DBGrid1.ControlCount>0 then label3.caption := inttostr(TInplaceEdit(DBGrid1.Controls[0]).GetTextLen); tinplaceedit 是用來放 dbgrid 編輯時的暫存資料的. 參考一下 補充 : 剛剛試了一下, D6 環境下一個中文字計2 再補充 : 剛剛試了一下, DBGRID 內 每一按键事件發生順序 KEYDOWN, KEYPRESS, KEYUP 本程式段要放在 KEYUP, 放在 KEYDOWN, KEYPRESS 的話會落後一碼 ( 因為該按鍵尚未完成動作 ) 但感覺放在 KEYUP 好像比較慢, 可能 KEYUP 事件 DELPHI 本身要處理比較多事情吧.
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲. |
chris681016
中階會員 發表:69 回覆:122 積分:98 註冊:2006-10-12 發送簡訊給我 |
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
因小弟從不使用 DBGrid 讓 User 做 Key-In,
且從 TDBGrid 的 Help 也很難聯想到 TInPlaceEdit 而未用過它, 害您多繞了許多路, 抱歉啦! 雖然問題已解決, 但想多瞭解一下 TInPlaceEdit, 故搜尋了一下 KTop, 找到這篇精彩文章, 您若要用 TDBGrid 作為 Edit 介面, 可前往參考一下. http://delphi.ktop.com.tw/board.php?cid=30&fid=71&tid=90281 |
chris681016
中階會員 發表:69 回覆:122 積分:98 註冊:2006-10-12 發送簡訊給我 |
編輯記錄
chris681016 重新編輯於 2008-11-14 18:01:09, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |