|
왕초보 님이 쓰신 글 :
: 여기에 있는 글 중에서 label을 TList를 이용하여 배열처럼 사용하는 예를 보고서 체크박스를
: 해 보았는데여...
: 10개 정도의 체크박스를 놓고
: void __fastcall TForm1::FormCreate(TObject *Sender)
: {
: pComList = new TList;
: for( int i=1; i<=MAX_CHK; i++ ){
: pComList->Add((TCheckBox*)FindComponent( "chk_Com"+IntToStr(i)));
: }
: 하고서
: 버튼을 하나 누르면
: for( int i=0; i<=MAX_CHK; i++ )
: {
: ((TCheckBox*)pComList->Items[i])->Checked = true;
: }
: 이렇게 했는데 한 두개정도 체크가 되고는 에러메시지가 뜹니다.
: 어케 된거지 고수님들의 고견을 부탁합니다.....
:
안녕하십니까?
한꼬맹이 입니다.
다른 건 잘모르겠고 이상한 부분이 있다면....
for( int i=1; i<=MAX_CHK; i++ ){
pComList->Add((TCheckBox*)FindComponent( "chk_Com"+IntToStr(i)));
위에 부분을 보면 MAX_CHK개의 체크박스가 있는것 같습니다.
그렇다면 다음 구문을 보면
for( int i=0; i<=MAX_CHK; i++ )
{
((TCheckBox*)pComList->Items[i])->Checked = true;
}
MAX_CHK + 1 만큼의 리스트에 접근을 하고 있습니다.
그래서 아마도 EListError예외가 발생할것 같군요....
이문제를 해결하기 위해서 위의 코드를 이렇게 고쳐보세요
for( int i=0; i< pComList->Count; i++ )
{
((TCheckBox*)pComList->Items[i])->Checked = true;
}
그럼 도움되시길,....
|