배열 컨트롤에서 이벤트를 간단히 하는 방법 없나요??
만약 img[i].OnClick := 프로시저1;
컨트롤 생성시 For 문을 사용하거던요...
이렇게 하니깐 모두 '프로시저1' 만 동작 되네요..
즉.. img[1].OnClick := 프로시저1, img[2].OnClick := 프로시저1 ...
20개의 컨트롤 배열 이벤트 작성하는데, 설마... 프로시저 20개 만들어야 되는건 아니겠죠??
img[1].OnClick := 프로시저1
img[2].OnClick := 프로시저2
img[3].OnClick := 프로시저3
...
(설마 이렇게 된다면... 안돼에~~~-_-;)
간단하게.. 20개의 이미지 배열 컨트롤을 생성했을때, 각각 메시지 박스에 다른 메시지를 출력하게 하려면 어떻게 해야 되나요??
예를들어...
1번 누르면 '1번 그림 눌림' 2번 누르면 '2번 그림 눌림'
이렇게 간단히 하는방법이 없을까요??
이거 연구하느라 지금 1시간 하고도 20분 지나네요-_-;
그냥 프로시저 20개 선언하려니.. 컨트롤배열을 사용하는 의미가 없는것 같고...
begin
showmessage(TControl(sender).Name);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i : integer;
begin
for i:=0 to ComponentCount - 1 do begin
if Components[i] is Timage then
Timage(Components[i]).OnClick := Image1Click;
end;
end;
.name을 쓰면 객체의 이름을 가져올수 있어요..
컴포넌트 Tag 속성을 이용해서 다른 기능을 하게 case 문으로 만들어도
될것 같은데 이건 어차피 구현부분을 각각해줘야 한다는 말이니깐 별 의미가
없어 보이네요
즐푸..^^: