全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1827
推到 Plurk!
推到 Facebook!

請問如何使用DBEdit1->Text="1111"與一般手動輸入一樣!!

答題得分者是:herbert2
l90425
初階會員


發表:95
回覆:152
積分:49
註冊:2008-04-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-09-11 10:10:29 IP:59.125.xxx.xxx 未訂閱
請各位大大儘量能幫我解決這個問題我一定會非常感恩的啦!
請問各位大大要如何使這個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如果有發錯地方請通知一下要發在什麼地方呢?謝謝!
------
-謝謝大大熱心的回覆!謝謝!
編輯記錄
l90425 重新編輯於 2008-09-11 10:13:02, 註解 無‧
l90425 重新編輯於 2008-09-11 10:36:09, 註解 無‧
l90425 重新編輯於 2008-09-11 12:24:15, 註解 無‧
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-09-11 20:00:49 IP:211.72.xxx.xxx 訂閱
假如 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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-09-11 23:09:55 IP:59.125.xxx.xxx 未訂閱
對不起!打錯了這個才對!

[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"
可以了謝謝!
謝謝大大的回覆!麻煩大大了!謝謝!
------
-謝謝大大熱心的回覆!謝謝!
編輯記錄
l90425 重新編輯於 2008-09-12 00:01:02, 註解 無‧
l90425 重新編輯於 2008-09-12 00:02:02, 註解 無‧
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-09-12 00:16:09 IP:211.72.xxx.xxx 訂閱
//----------------
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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-09-12 01:16:41 IP:59.125.xxx.xxx 未訂閱
嗯嗯!
謝謝大大解釋的那麼清楚,
實在太謝謝大大了。
謝謝!感恩呀!
------
-謝謝大大熱心的回覆!謝謝!
系統時間:2024-04-19 7:34:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!