C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[67082] Re:Re:Re:Re:동적생선한 컴포넌트
수이사이드 [] 961 읽음    2012-05-02 11:36
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    int imgWidth = 32;
    int imgHeight = 32;

    TImage* img[10][10];
    for( int i = 0 ; i < 10; i++)
    {
        for( int j = 0; j < 10; j++)
        {
            img[i][j] = new TImage(this);
            img[i][j]->Parent = this;
            img[i][j]->Name = String("img_") + i +"_"+ j;
            img[i][j]->Picture->LoadFromFile("move.bmp");
            img[i][j]->Top = i * imgHeight;
            img[i][j]->Left = j * imgWidth;

            img[i][j]->OnClick = ImageClick;
        }
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ImageClick(TObject *Sender)
{
    TStringList* delimitedImgName = new TStringList;

    delimitedImgName->Delimiter = '_';
    ShowMessage( dynamic_cast<TImage*>(Sender)->Name);
    delimitedImgName->DelimitedText = dynamic_cast<TImage*>(Sender)->Name;
    for(int i = 0 ; i < delimitedImgName->Count; i++)
    {
        ShowMessage(delimitedImgName->Strings[i]);
    }
    delete delimitedImgName;
}
몇년째 눈팅만 하다 help me님의 실력이 없어서 죄송합니다란 말에 마음이 울컥해서 답글 달아봅니다. 일하기 싫은 마음도 좀 있고...ㅎ
대충 이런걸 원하신거 같은데...

이벤트로 넘어 오는 Sender는 해당 컴포넌트의 포인터를 가르키고 있습니다.
이걸 TImage 포인터로 형변환 한후 사용하시면 됩니다.
dynamic_cast<>는 c++ 스타일의 캐스팅입니다. c의 (TImage*)Sender와 같은 역할이죠. 물론 타입 체크등 부가 적인 기능이 있긴 하지만... 솔직히 c++캐스팅이 좀 특이하게 생겨서 c에서 c++ 넘어올때 적잖이 당황하는 경향이 있는데 별거 아니에요.
그럼...


help me 님이 쓰신 글 :
: 동적생성된 컴포넌트를 클릭했을때
:
: 그클릭으로 동적생선된 컴포넌트의 정보인 네임이나 변수명을 알고싶습니다.
:
: 가능할까요?
:
:
: help me 님이 쓰신 글 :
: : 어그러니깐...
: :
: : TImage *Img[10][10];로 동적생성한담에요
: :
: : 1. Button1클릭할때마다 X ,Y 증가시켜 Img[X][Y]로 해서 생성을 했거든요.
: :
: : 생성한다음
: :
: : 2. 그이미지 Img[X][Y]의 클릭 이벤트를 만들어서  클릭했을때 클릭한 Img[X][Y]의 X,Y값이 알고싶거든요.
: :
: : 포인트는 클릭한 동적생성한 Img컴포넌트의 X,Y를 받고싶습니다. 
: :
: : 음 한마디로 그 동적생성한 Img를 클릭했을때 그 X,Y과 어떤값인지 알고싶습니다.
: :
: : 제가 실력이없어서 설명도 잘못하네요. 죄송합니다.
: :
: : 혹시나 이방법은 가능할지 묻고싶습니다.
: : 동적생성할때 Name 값을 넣는데 이 Name 값을 X,Y값으로 넣어 나중 클릭했을때
: :
: : 클릭한 네임의 STR을 구분하여 X,Y를 구하는것입니다.
: :
: : 근데 이문제도 클릭했을때 그 X,Y를 받아와야한다는겁니다. ㅠㅠ 비교할값이 있어야하는데 비교를 못합니다.....
: :
: : 그래도 이해못하시겟다면 답변해주시는거보고 소스첨부해보겠습니다.
: :
: : Lyn 님이 쓰신 글 :
: : : 뭔코드를쓰신거임? (...)
: : : help me 님이 쓰신 글 :
: : : : TImage *Img[X][Y];
: : : : int X=50;
: : : : int Y=50;
: : : :
: : : : 해놓고 Button1Click이벤트를 햇을때 Img[X][Y]의 X,Y의 값을 얻고싶습니다.
: : : :
: : : : 동적생성한 변수네임을 어덯게 얻을수잇죠 ???

+ -

관련 글 리스트
67060 동적생선한 컴포넌트 help me 871 2012/04/30
67061     Re:동적생선한 컴포넌트 Lyn 961 2012/04/30
67062         Re:Re:동적생선한 컴포넌트 help me 901 2012/04/30
67067             Re:Re:Re:동적생선한 컴포넌트 help me 830 2012/05/01
67082                 Re:Re:Re:Re:동적생선한 컴포넌트 수이사이드 961 2012/05/02
67084                     Re:Re:Re:Re:Re:동적생선한 컴포넌트 help me 1005 2012/05/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.