|
요즘 일본애들한테 실력 없다고 무시받는데, 고수님들 덕분에..... 정말 열심히 해서....
일본애들한테 무시 안받겠습니다.
정말 감사합니다. 대한민국 만세!
참고로 ./// 일본에서 공부하는 실력없는 학생이지만... 여러분의 도움으로 실력있는 학생으로 변하겠습니다.
감사합니다.
빈라덴 님이 쓰신 글 :
: 두분 감사합니다.
:
: 장성호 님이 쓰신 글 :
: : 정확히 목적이 무엇인지 궁금합니다.
: :
: : VB에서는 Design타임대 Control을 배열로 선언할수 있지만
: : BCB에서는 안됩니다.
: :
: : 가령 TCheckBox 가 CheckBox1 ~~ CheckBox64 까지 64개 폼에 올려 놓았다고 가정합시다
: :
: : [방법1]
: : 전력으로 TCheckBox * 형 변수를 선언합니다
: :
: : TCheckBox *ChkBox[64];
: : void __fastcall TForm1::FormCreate(TObject *Sender)
: : {
: : String sChkName;
: : for(int i=0;i<64;i++) //프로그램이 시작될때 Component를 찾아 모두 배열에 넣어줍니다.
: : { //문론 Memory가 64 * 4 Byte 더 쓰게 되죠
: : sChkName="CheckBox"+IntToStr(i+1);
: : ChkBox[i]=this->FindComponent(sChkName);
: : }
: : }
: : //---------------------------------------------------------------------------
: :
: : void __fastcall TForm1::Timer1Timer(TObject *Sender) //원하시는대로 Timer에서 체크할수 있습니다.
: : {
: : for(int i=0;i<64;i++)
: : {
: : if(ChkBox[i])
: : {
: : if(ChkBox[i]->Checked)ShowMessage("체크됨");
: : }
: : }
: :
: : }
: : //---------------------------------------------------------------------------
: : [방법2]
: : CheckBox를 Design타임때 만들지 말고
: : Coding으로 만들면 됩니다.
: :
: : 전역으로 배열 선언해 놓구
: : TCheckBox *ckbox[64]
: :
: : 프로그램이 시작될때 전부다 만들어 줍니다. 문론 Click할때 동작할 함수도 걸구요
: :
: : void __fastcall TForm1::FormCreate(TObject *Sender)
: : {
: : for(int i=0;i<64;i++)
: : {
: : ckbox[i]=new TCheckBox(this);
: : ckbox[i]->Parent=Panel1;
: : ckbox[i]->Left=10;
: : ckbox[i]->Top=10;
: : ckbox[i]->Width=50;
: : ckbox[i]->Caption="CheckBox"+IntToStr(i+1);
: : ckbox[i]->OnClick=CheckBox1Click;
: : }
: : }
: : 코딩으로정확한 위치와 좌표 색상등을 모두 정확하게 해주기는 쉽지 않겠죠?
: :
: :
: : [방법3]
: : 만약 CheckBox가 50개 100개라 해서 CheckBox의 OnClick이벤트는 모두 하나의 함수에 걸어줄수 있습니다.
: : ObjectInspecter에서 모든 CheckBox의 OnClick함수를 같은함수로 걸어주면 됩니다.
: :
: : 문론 Coding으로도 가능하구요
: : CheckBox2->OnClick=CheckBox1Click; //이런식으로 걸어줘도 되구요
: :
: : 여러개의 CheckBox가 하나의 함수로 뛸때 구분방법이 필요하겠죠
: :
: : 저는 구분을 주로 Tag로 합니다.
: : 그러기 위해선 CheckBox마다 Tag값을 다르게 설정해 줘야 겠죠
: :
: : 뭐 다른 방법도 있습니다.
: : 이름이나 찾거나 Caption으로 구분하거나 등등
: :
: : void __fastcall TForm1::CheckBox1Click(TObject *Sender)
: : {
: : if(Sender)
: : {
: : TCheckBox *ckBox=(TCheckBox *)Sender;
: : if(ckBox->Checked)ShowMessage(IntToStr(ckBox->Tag)+"번 CheckBox가 되었습니다.");
: : }
: : }
: : //---------------------------------------------------------------------------
: :
: :
: :
: :
: :
: : @목적이 CheckBox체크설정을 변경하기위해서 함수를 여러개 만들어야 된다고 생각하신다면...
: :
: : 문론 하나의 함수로 가능합니다.
: :
: : [방법1]
: : void __fastcall TForm1::CheckBoxChecked(String sChkName , bool bCheck)
: : {
: : TCheckBox *ckBox=this->FindComponent(sChkName);
: : if(ckBox)ckBox->Checked=bCheck;
: : }
: : //---------------------------------------------------------------------------
: :
: : [방법2]
: : //CheckBox의 Tag값을 모두 다르게 줬다면
: : 폼에 있는 ComponentCount 와 Components 를 이용해서
: : CheckBox만 모두 검색하여 Tag값이 같은것을 찾으면 됩니다.
: :
: :
: : ....................
: : 제가 해드린 답변중에 해답이 있었으면 좋겠네요
: :
: : 그럼
: :
: :
: :
: :
: : 빈라덴 님이 쓰신 글 :
: : : 가령 체크박스를 여러개 선언하여 배열화 하는 방법은?
: : :
: : : 좀 알려주세요.
: : :
: : :
: : : 64체크박스가 어디에 선택되었는지를
: : : 타이머에서 체크할려고 하고 싶은데....
: : :
: : : 체크박스를 배열화 하여 하는 방법은 없나요ㅕ?
: : :
: : : 물론 하나 하나 전부 함수를 선언하여 true나 false를 주는 방법은 있지만
: : :
: : :
: : : 다른 방법이요.
|