請問如何使用DBEdit1->Text="1111"與一般手動輸入一樣!! |
答題得分者是:herbert2
|
l90425
初階會員 ![]() ![]() 發表:95 回覆:152 積分:49 註冊:2008-04-03 發送簡訊給我 |
請各位大大儘量能幫我解決這個問題我一定會非常感恩的啦!
請問各位大大要如何使這個DBEdit1->Text="1111"怎麼樣與手動輸入是一樣的呢? 因為一但不想修改的時候只要按下DBNavigator中的Cancel鈕就能還原成還沒有修改過的數值, 但是下面的程式碼卻會造成一旦使用DBEdit1->Text="1111"之後再點選DBEdit1時DBNavigator中的Cancel鈕已經無法再復原了。 [code cpp] DBEdit1->Text="1111" DBEdit4->DataSource->DataSet->Post();(原本為了克服在次按下DBEdit1不會再變成空白值或上一個數值) DBEdit4->DataSource->DataSet->Edit(); [/code] 所以希望要怎麼寫才能使DBEdit1->Text="1111"與一般手動輸入一樣? 麻煩各位大大幫忙了,謝謝!謝謝! ps如果有發錯地方請通知一下要發在什麼地方呢?謝謝!
------
-謝謝大大熱心的回覆!謝謝! |
herbert2
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
假如 DBEdit1->DataSource == DBEdit4->DataSource,
則 DBEdit1->Text = "1111" 已令該 TDataSet 進入 dsEdit 模式, DBEdit4->Post() 又令該 TDataSet 將已修改過的資料存檔, DBEdit4->DataSource->Edit() 又再進入 dsEdit 模式, 但此時 DBEdit1 之欄值已是 "1111", 故當然無法用 Cancel 去還原 DBEdit1 被改為 "1111" 前的欄值. 不知您為何一定要填 DBEdit1->Text = "1111", 若是為了於 Insert() 時給初值, 則應於 TQuery->AfterInsert() 時, 設 Query->FieldByName(DBEdit1->FieldName)->AsString = "1111" 較妥當. |
l90425
初階會員 ![]() ![]() 發表:95 回覆:152 積分:49 註冊:2008-04-03 發送簡訊給我 |
對不起!打錯了這個才對!
[code cpp] void __fastcall TForm1::Button5Click(TObject *Sender) { DBEdit1->Text="1111" DBEdit1->DataSource->DataSet->Post();(原本為了克服在次按下DBEdit1不會再變成空白值或上一個數值) DBEdit1->DataSource->DataSet->Edit(); } [/code] 我是想做檔按下Button5按鈕時DBEdit1格會自動輸入一個數值(ex:111), 而我為什麼會寫Post();是為了當再按下DBEdit1不會再變成空白值或上一個數值(未修改前的數值), 而我為什麼會寫Edit();是為了不讓DBNavigator中的Post鈕不變成灰色(不可按下), 所以我想請大大幫我想一個按下Button5執行了DBEdit1->Text="1111" 但再按下DBEdit1是會顯現1111 而按下DBNavigator中的Cancel鈕還原成還沒有修改過的數值。 Query->FieldByName(DBEdit1->FieldName)->AsString = "1111" 可以了,謝謝! 謝謝大大的回覆!麻煩大大了!謝謝!
------
-謝謝大大熱心的回覆!謝謝! |
herbert2
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
//----------------
void __fastcall TForm1::Button5Click(TObject *Sender) { DBEdit1->Text="1111"; // 設定 TDataSource->AutoEdit = false; 則 DBEdit1 此時是 ReadOnly, 填值是做白工; // Mouse 一點到任一可 Focuse 的元件, DBEdit1->Text 立即還原成還沒有修改過的數值. // 設定 TDataSource->AutoEdit = true; 則會自動進入 dsEdit 模式. // DBNavigator 中的 Post 鈕便 Enabled, 不會是灰色. // 此時 DBEdit1->Text 已顯現 "1111". // 再按下 DBNavigator 中的 Cancel 鈕, 自動還原成還沒有修改過的數值. } //---------------- 假設您的 TDataSet 為 TQuery *Query1, 也可寫成: //---------------- void __fastcall TForm1::Button5Click(TObject *Sender) { Query1->Edit(); DBEdit1->Text="1111"; // 或 Query1->FieldByName(DBEdit1->FieldName)->AsString = "1111"; // 設定 TDataSource->AutoEdit = false 即可, Edit() 會使 DataSet 進入 dsEdit 模式, // DBNavigator 中的 Post 鈕便 Enabled, 不會是灰色. // 此時 DBEdit1->Text 已顯現 "1111". // 再按下 DBNavigator 中的 Cancel 鈕, 自動還原成還沒有修改過的數值. } //---------------- 假設您的 TDataSet 為 TQuery *Query1, 若非 DBEdit1 需有多個值, 則應不需要設 Button5, 直接按下 DBNavigator 中的 Edit 鈕, DataSet 便會進入 dsEdit 模式, 則寫成: //---------------- void __fastcall TForm1::Query1AfterEdit(TObject *Sender) { Query1->FieldByName(DBEdit1->FieldName)->AsString = "1111"; // 已進入 dsEdit 模式, DBNavigator 中的 Post 鈕便 Enabled, 不會是灰色. // 此時 DBEdit1->Text 已顯現 "1111". // 再按下 DBNavigator 中的 Cancel 鈕, 自動還原成還沒有修改過的數值. } //----------------
編輯記錄
herbert2 重新編輯於 2008-09-12 00:22:18, 註解 無‧
|
l90425
初階會員 ![]() ![]() 發表:95 回覆:152 積分:49 註冊:2008-04-03 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |