如何游標移到另一個欄位就計算處理上一個欄位的東西 ? |
答題得分者是:g6101
|
e_snare
一般會員 發表:26 回覆:35 積分:12 註冊:2004-03-14 發送簡訊給我 |
|
g6101
高階會員 發表:22 回覆:129 積分:110 註冊:2002-06-15 發送簡訊給我 |
e_snare您好:
不知你要何種元件?先假設你要用的是TStringGrid元件,請參考以下的程式碼
AnsiString NewEditText = NULL; AnsiString OldEditText = NULL; int getCol,getRow; void __fastcall TForm1::StringGrid1GetEditText(TObject *Sender, int ACol, int ARow, AnsiString &Value) { OldEditText = Value; //取得舊字串 getCol = ACol; getRow = ARow; } //---------------------- void __fastcall TForm1::StringGrid1SetEditText(TObject *Sender, int ACol, int ARow, const AnsiString Value) { NewEditText = Value; //取得新字串 getCol = ACol; getRow = ARow; } //---------------------- void __fastcall TForm1::StringGrid1Click(TObject *Sender) { AnsiString str; if (NewEditText != NULL && NewEditText != OldEditText) { //當條件成立代表被修改! //加入你要對StringGrid1->Cells[getCol][getRow]處理的動作 str.sprintf("欄位(Cells[%d][%d])內容(%s)被更動!",getCol,getRow,StringGrid1->Cells[getCol][getRow]); ShowMessage(str); OldEditText = NULL; } NewEditText = NULL; } //---------------------- void __fastcall TForm1::StringGrid1Exit(TObject *Sender) { //焦點要從StringGrid1轉移到其它元件時... AnsiString str; if (NewEditText != NULL && NewEditText != OldEditText) { //當條件成立代表被修改! //加入你要對StringGrid1->Cells[getCol][getRow]處理的動作 str.sprintf("欄位(Cells[%d][%d])內容(%s)被更動!",getCol,getRow,StringGrid1->Cells[getCol][getRow]); ShowMessage(str); OldEditText = NULL; } NewEditText = NULL; } //-----------------------◎天長地久有時盡,追求知識無絕期! |
e_snare
一般會員 發表:26 回覆:35 積分:12 註冊:2004-03-14 發送簡訊給我 |
|
g6101
高階會員 發表:22 回覆:129 積分:110 註冊:2002-06-15 發送簡訊給我 |
以下是用TLabeledEdit元件的方法
.h public: // User declarations void __fastcall MyClick(TObject *Sender); void __fastcall MyChange(TObject *Sender); .cpp TLabeledEdit *src = NULL; TForm1 *Form1; //------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { LabeledEdit1->OnClick = MyClick; LabeledEdit1->OnChange = MyChange; LabeledEdit2->OnClick = MyClick; LabeledEdit2->OnChange = MyChange; LabeledEdit3->OnClick = MyClick; LabeledEdit3->OnChange = MyChange; } //------------------- void __fastcall TForm1::MyClick(TObject *Sender) { if (src == NULL) { return ; } AnsiString str; str.sprintf("%s內容(%s)已變更",src->Name,src->Text); ShowMessage(str); //在這裡加入你要對上一個TLabeledEdit元件處理的動作 src = NULL; } //------------------- void __fastcall TForm1::MyChange(TObject *Sender) { src = dynamic_cast◎天長地久有時盡,追求知識無絕期! 發表人 - g6101 於 2004/04/23 00:15:48 |
e_snare
一般會員 發表:26 回覆:35 積分:12 註冊:2004-03-14 發送簡訊給我 |
謝謝 可以了。 還有一個問題就是
如果有一個陣列
AnsiString Buf[2];
它是在別的function裡,分別是這兩個欄位處理過的東西! 那以上面的程式來說,如果
void __fastcall TForm1::MyClick(TObject *Sender)
{
if (src == NULL) { return ; }
AnsiString str;
str.sprintf("%s內容(%s)已變更",src->Name,src->Text);
ShowMessage(str);
//在這裡加入你要對上一個TLabeledEdit元件處理的動作
如何取得個別的陣列裡的值?我只能ShowMessage(Buf[0]);
卻不知如何能點這個欄位只抓上一個欄位Buf[i],
點上一個欄位,再抓這個欄位Buf[i],
src = NULL;
}
//-------------------
AnsiString Buf[2];
它是在別的function裡,它怎麼去抓相對應的Buf[]
|
g6101
高階會員 發表:22 回覆:129 積分:110 註冊:2002-06-15 發送簡訊給我 |
再參考以下的程式碼
TLabeledEdit *src = NULL; AnsiString Buf[3]; TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { LabeledEdit1->OnClick = MyClick; LabeledEdit1->OnChange = MyChange; LabeledEdit2->OnClick = MyClick; LabeledEdit2->OnChange = MyChange; LabeledEdit3->OnClick = MyClick; LabeledEdit3->OnChange = MyChange; LabeledEdit1->Tag = 0; LabeledEdit2->Tag = 1; LabeledEdit3->Tag = 2; Buf[0] = "內容(1)"; Buf[1] = "內容(2)"; Buf[2] = "內容(3)"; } //------------------ void __fastcall TForm1::MyClick(TObject *Sender) { if (src == NULL) { return ; } ShowMessage(Buf[src->Tag]); src = NULL; } //------------ void __fastcall TForm1::MyChange(TObject *Sender) { src = dynamic_cast◎天長地久有時盡,追求知識無絕期! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |