|
령아님 안녕하세요..
저같은 경우는 이렇게 처리하는데, 참고하시기 바랍니다.
Edit 9개를 폼위에 올려 놓구요, 버튼 하나를 만든다음
다음과 같이 코딩하세요..(비어있는 Edit가 있어야 겠죠..^^)
void __fastcall TForm1::Button1Click(TObject *Sender)
{
unsigned short Comc;
TClass ClassRef;
for(Comc=0;Comc<ComponentCount-1;Comc++)
{
ClassRef = Components[Comc]->ClassType();
if(String(ClassRef->ClassName())=="TEdit")
{
if(dynamic_cast<TEdit *>(Components[Comc])->Text == "")
ShowMessage( dynamic_cast<TEdit *>(Components[Comc])->Name + " is empty!!");
}
}
}
ComponentCount 는 현재 객체(this)의 컴포넌트 갯수를 들고 있구요,
각 컴포넌트의 ClassType을 미리 선언해둔 ClassRef에 대입합니다.
TClass 는 class-reference 형인데요..TMetaClass* TClass 이렇게 선언되어 있습니다.
class-reference 형은 애기하자면 좀 길어 질것 같구, 그냥 객체보다는 클래스 자체로서
다루고 싶을때 사용하신다는 정도만 아시면 될 것 같네요..
클래스종류가 TEdit라면 이녀석을 TEdit로 dynamic_cast해서 일반 컴포넌트 쓰듯이
처리하면 된답니다..
도움이 되었길..
령아~!♡ 님이 쓰신 글 :
:
: 안녕하세요...
:
: 일단..개박살.U&I 님과 최보현.U&I 님의 답변에 감사드리구요...
:
: 이번에는 어떤 문제가 있는것이 아니라...
:
: 궁금증인데요...
:
: 9개의 에디트 박스가 있습니다...
:
: 그리고 이름은.. EditBox1,EditBox2......EditBox9
:
: 이런식으로 되어있구요...
:
: 그렇다면...
:
: 9개의 EditBox가 비어있는 항목이 있는지 없는지를 확인하고 싶은데요...
:
: 만약 if 문을 쓰게 되면, 9개의 if 문이 필요하구요...
:
: 생각해보니.. name 이 EditBox까지는 똑같구...뒤의 숫자만 다르다 는것이지요..
:
: 그래서 do,while 문으로 비어있지 않으면 돈다...는 조건을 주고,
:
: 'while 문 안에 뒷부분의 숫자만 바꾸는 부분을 만들어주면 되지 않을까?' 하는 생각을 했지요.
:
: 물론 실패 했습니다.
:
: 그래서 질문은...
:
: 꼭 이방법이 아니더라두...
:
: 콤포넌트의 이름을 바꾸어주면서 비교하는 문을 만들수는 없는가 하는거지요...
:
: 질문이 이해가 되실런지...
:
: 제가 워낙 허접한 말재주라...
:
: 그럼 여기까지..허접한 질문이었습니다...답변 부탁 드릴게요.~
|