|
TScrollBox 안에 어떤 컴포넌트를 올리셨는지는 잘은 모르겠습니다만 기본적으로 OnClick 라는 이벤트는 가지고 있는 컴포넌트라 예상이 되는군요.. 이미지 컴포인가요? ^^;;
동적으로 생성된 컴포넌트라면 반듯이 List화 되어 메모리 포인터를 가지고 계실꺼라 생각됩니다.
그게 배열이든 리스트든 뭐든간에요~ ^^
원하시는 작업을 하시기 위해서는 이름을 지어주는 일이 필요합니다.
저는 저희 어머님의 아들이고 또 저희 형 역시 어머님의 아들이지요
어머님이 아들~ 하고 부르신다면 형과 저는 혼돈될 수 밖에 없지요
그래서 저희들은 각자 이름이 있고 그 이름을 부르시니 곧 대답할 수 있는것입니다.
컴포넌트도 마찬가지로 생성하신다면 고유의 이름이 있습니다.
바로 메모리 주소이지요, 또한 Name 이라는 프로퍼티를 통해 우리가 알아보기 쉬운 이름을 지어줄 수도 있지요
각 컴포넌트의 이름을 지어주셔두되고 메모리 주소를 사용하셔두 됩니다.
컴포넌트 동적 생성시에 OnClick 이벤트 함수를 정의해 줍니다.
TImage *pImage = new TImage( this );
...
pImage->OnClick = ImagesClick;
TForm1::ImagesClick( TObject *Sender )
{
}
TImage를 사용하지 않을셨을 경우에는 해당 컴포넌트의 OnClick 함수원형을 알아내셔서 같은 형태의 함수를 선언하시고 OnClick 에 해당 함수 포인터를 넘겨주시면 됩니다.
모든 컴포넌트들을 저렇게 작업하시면 해당컴포넌트들의 모든 OnClick이벤트는 저 함수로 호출되게 됩니다.
이제 리스트 해두셨던 컴포넌트들의 메모리 포인터나 이름과 비교하면 되는것이지요
if( ( (TImage *) Sender )->Name == "지어준이름" ) 과 같이 비교하실 수 있으며
리스트해두신 포인터과 비교하시려면
if( List의 메모리 주소값 == Sender ) 처럼 비교하실 수 있습니다.
TImage에 큰 이미지를 Scretch하여 작게 보여준 상태라면
크게 보여줄 이미지 컴포넌트에 그냥 Assign을 하셔도 무방합니다.
( Image->Picture->Bitmap->Assign( ( (TImage * ) ( Sender ) )->Picture->Bitmap );
여기까지입니다.
경우에 맞는 방법을 찾으셔서 작업하시는것이 좋겠습니다.
고수가 아니여서 답변을 드리기가 항상 곤란하군요... -_-;;
왜 고수님에게만 답변을 구하시는지.. ㅠ.ㅠ
왕초보 님이 쓰신 글 :
: ScrollBox안에 동적으로 생성된 컴포넌트 클릭시 이미 만들어 놓은 이미지 컴포넌트에 나타나게 하려고 합니다.
:
: 코드의 대충의 목적은
:
: 탐색기처럼 옆에 디렉토리 파일을 클릭하면 미리보기 창에 그 디렉토리안에 있는
:
: 파일들이 동적으로 생성되고, 그 미리보기창에 동적으로 생성된 파일을 클릭하면 메인 화면에 크게 출력되게
:
: 하려고 하거든여...잘 안되네여......고수님들....방법좀 갈켜주세여.....
|