|
우선 님이 가장 원하시는 답변입니다.
메인폼의 이름을 Form1이라고 가정하면...
for(int loop=0; loop<Form1->ComponentCount; loop++)
{
if(!strcmp( (TLabel *)(Form1->Components[loop])->Name.c_str(), BUF) )
{
sprintf(BUF1, (TLabel *)(Form1->Components[loop])->Caption.c_str());
// 등등.. 원하는 작업을 합니다. 아래처럼..
// (TLabel *)(Form1->Components[loop])->Left = 10;
// (TLabel *)(Form1->Components[loop])->Visible = true;
}
}
다음으로 제가 추천하는 방법입니다.
레이블을 150개나 떨어트리고.. 그 이름을 지정하는것... 노가다인거 같은데요
동적으로 만드는게 좋을듯 합니다.
TLabel *myLabel[150];
for ( int loop=0; loop<150; loop++ )
{
myLabel[loop] = new TLabel(Form1);
myLabel[loop]->Parents = Form1;
myLabel[loop]->Left = loop%5 * 20;
myLabel[loop]->Top = loop/5;
myLabel[loop]->Caption = (String) "T" + (int)loop/30+1 + "LB" + (int)loop%30+1;
// 이렇게 하면 아래 처럼 별도의 이름이 필요 없을듯..
// 왜냐하면.. 포인터가 저장되어 있으므로..
// 그렇지 않더라도.. (1)번방법으로 컨트롤 할 수 있슴.
myLabel[loop]->Name = (String) "T" + (int)loop/30+1 + "LB" + (int)loop%30+1;
}
이렇게 생성하시고 사용은
for ( int loop=0; loop<150; loop++)
{
sprintf(BUF1, myLabel[loop]->Caption.c_str());
// 등등.. 원하는 작업을 합니다. 아래처럼..
// myLabel[loop]->Left = 10;
// myLabel[loop]->Visible = true;
}
이렇게 합니다.
컴파일 해보지 않아서 에러가 있을 수도 있는데요.. 그렇다면 리플해주세요.
다시 올리겠습니다. 그리고 죽지 마세요~ ^^;
시후 님이 쓰신 글 :
: 가정입니다..
: 라벨이 150개 정도 있다고 치면..
: 라벨의 이름은
: T1LB1, T1LB2, T1LB3, T1LB4, T1LB5, T1LB6, T1LB7, T1LB9, T1LB10, .... , T1LB30
: T2LB1, T2LB2, T2LB3, T2LB4, T2LB5, T2LB6, T2LB7, T2LB9, T2LB10, .... , T2LB30
: T3LB1, T3LB2, T3LB3, T3LB4, T3LB5, T3LB6, T3LB7, T3LB9, T3LB10, .... , T3LB30
: T4LB1, T4LB2, T4LB3, T4LB4, T4LB5, T4LB6, T4LB7, T4LB9, T4LB10, .... , T4LB30
: T5LB1, T5LB2, T5LB3, T5LB4, T5LB5, T5LB6, T5LB7, T5LB9, T5LB10, .... , T5LB30 입니다.
:
: char BUF[10]={""}, BUF1[10]={""}, *ptr;
: int i, j;
:
: for(i = 1 ; i < 6 ; i++)
: {
: for(j = 1 ; j < 31 ; j++)
: {
: strcpy(BUF, ("T"+IntToStr(i)+"LB"+IntToStr(j)).c_str());
: BUF1 = BUF->Caption;
: ptr = strstr(BUF1, DB에서 불러온 값);
:
: if(ptr != NULL)
: {
: // 실행되는 부분
: }
: else continue;
: }
: }
:
: 제가 궁금한건 위의 BUF 에는 i=1,j=1일 경우 "T1LB1"이 들어 갑니다.
: 그 다음라인의 BUF1 = BUF->Caption은 실제로는 T1LB1->Caption 의 값을 가져 오기를 원하거든요.
: 근데 다음과 같은 에러가 떨어 지거든요..
: [C++ Error] BIZE.cpp(435): E2288 Pointer to structure required on left side of -> or ->*
: 위의 코드가 말도 안되는 건지 아니면 원하는 라벨의 캡션 값을 불러 들일수 있는지 궁금하거든요.
: 열분 고수님들 답변을 부탁합니다.
: 가능하다면 방법을 좀 알려 주세염..
: 위의 방법이 안된다면 순차적으로 150번을 비교를 해야 하거든요
: 그렇다고 ptr을 150개나 만들어서 비교할수도 없잖아여..
: 아 죽겠습니다..다른 좋은 방법이 있으면 방법도 좀 갈켜 주세염...부탁드립니다..
:
:
:
|