想要check 每個TCheckBox的Checked |
答題得分者是:taishyang
|
leeli
初階會員 發表:57 回覆:55 積分:27 註冊:2003-06-25 發送簡訊給我 |
各位大大:
小弟有個問題:
如果,今天我建立的十個Edit0~9,我若想要幫每個Edit填入字串,我可以使用一個迴圈,向下面一樣來填入字串:
for(i=0;i<=9;i ) { ((TEdit *)FindComponent("Edit" IntToStr(i)))->Text="要輸入的字串"; }。 今天,如果我建立了十個CheckBox0~9。我想要用個迴圈來check每個if(CheckBox(i)->Checked==true),請問這樣的語法該如何下呢? 小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。 對於各位的大力協助,感激不盡! 發表人 - taishyang 於 2005/03/08 18:33:23
------
小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。 對於各位的大力協助,感激不盡! |
blk5743
高階會員 發表:34 回覆:371 積分:236 註冊:2003-11-17 發送簡訊給我 |
參考一下
void __fastcall TForm1::Button1Click(TObject *Sender) { bool BChkAll = true; for(int i = 0 ; i <= 9; i ) { TCheckBox *CheckBox = dynamic_cast |
leeli
初階會員 發表:57 回覆:55 積分:27 註冊:2003-06-25 發送簡訊給我 |
引言: 參考一下感謝大大的回答,不過小弟我是想要check每一個Checked為true or false,而不是全部為true or false 小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。 對於各位的大力協助,感激不盡!void __fastcall TForm1::Button1Click(TObject *Sender) { bool BChkAll = true; for(int i = 0 ; i <= 9; i ) { TCheckBox *CheckBox = dynamic_cast
------
小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。 對於各位的大力協助,感激不盡! |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
blk5743
高階會員 發表:34 回覆:371 積分:236 註冊:2003-11-17 發送簡訊給我 |
引言: 感謝大大的回答,不過小弟我是想要check每一個Checked為true or false,而不是全部為true or false改一下就好了 void __fastcall TForm1::Button1Click(TObject *Sender) { char Msg[40]; for(int i = 0 ; i <= 9; i ) { TCheckBox *CheckBox = dynamic_cast |
FCI
一般會員 發表:5 回覆:11 積分:3 註冊:2005-10-13 發送簡訊給我 |
|
justdo
高階會員 發表:2 回覆:359 積分:222 註冊:2004-08-17 發送簡訊給我 |
|
FCI
一般會員 發表:5 回覆:11 積分:3 註冊:2005-10-13 發送簡訊給我 |
引言: 那是因為FindComponent沒有找到擁有該名字的TCheckBox 或者是找到了,但是dynamic_cast失敗 導致傳回的CheckBox指標為null 所以在FindComponent之後,記得先檢查傳回的指標是否為null 才去access他大大謝謝您的回答 我已經確定是dynamic_cast的傳回失敗 但我CHECK了所有的checkbox的名稱但是還是有錯誤 我在.h 中設了 TCheckBox *CheckBox1; 及 TCheckBox * CheckBoxes[5]; 也在.ccp 中設立陣列 CheckBoxes[0] =CheckBox1; 如果用TCheckBox *CheckBox= dynamic_cast< TCheckBox* >(CheckBox1) 可以拿出值 但如果用下列 就不行了 1==> TCheckBox *CheckBox= dynamic_cast< TCheckBox* >(Sebder); 2==>TCheckBox *Box= dynamic_cast< TCheckBox*>(FindComponent("CheckBoxes" IntToStr(i))); 煩請大大幫我解釋一下,謝謝 **新手上路,煩請多多幫忙** 風是移動的, 雲是改變的, 水是不定的, 人是成長的. 發表人 - FCI 於 2005/10/16 01:11:21 發表人 - FCI 於 2005/10/16 01:15:46 |
FCI
一般會員 發表:5 回覆:11 積分:3 註冊:2005-10-13 發送簡訊給我 |
謝謝大大,我已經解開了
void __fastcall TForm1::Button1Click(TObject *Sender)
{
for (int i=0; i<5; i )
{
TCheckBox *Box= dynamic_cast<
TCheckBox *>(CheckBoxes[i]);
if (Box == NULL)
{
ShowMessage("NULL");
return;
}
else if((Box == CheckBoxes[i])&&(Box->Checked))
{
ShowMessage("CheckBox" IntToStr(i) " Checked!");
}
}
} 只要這樣寫就可以了< >,謝謝您< > **新手上路,煩請多多幫忙** 風是移動的,
雲是改變的,
水是不定的,
人是成長的. 發表人 - FCI 於 2005/10/16 01:50:23
|
justdo
高階會員 發表:2 回覆:359 積分:222 註冊:2004-08-17 發送簡訊給我 |
TCheckBox *Box= dynamic_castdynamic_cast的用途在轉型 但是CheckBoxes[i]本身的type就是TCheckBox了,所以這邊轉型的動作是多餘的 你誤會了樓上大大的做法.. 變數名跟元件名是不一樣的 以TCheckBox* CheckBoxs[5];來說 CheckBoxes是變數名 CheckBoxes[i]->Name 是元件名 FindComponent的用途是用來找尋元件名的,所以參數是字串 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |