> 이런 자료들을 보다보니 Sender = Ed_itemcd, Sender is Tedit, TEdit(sender)등이 나오는데 무슨 사린진 모르겠네요.
> Sender나 as나 is에 자세한 사항을 알고 싶어서 이렇게 부탁드립니다.
저도 정확하게는 모르지만 아느만큼만 답변할께요.
Sender는 해당 이벤트를 일으킨 객체를 말합니다.즉, 윈도에 메세지를 날린 녀석을 지칭하는거죠. Sender is TEdit라는 것은 이벤트를 일으킨 클래스가 TEdit라는 것을 말합니다. 컴포넌트의 대부분의 이벤트에 Sender가 붙어 있잖아요. TEdit(Sender)는 Sender를 TEdit형으로 형변환하는 거구요.
as연산자는 객체의 형변환을 할 때 씁니다. TEdit(Sender) 나 Sender as TEdit나 같은 결과가 나옵니다. is는 객체의 타입을 검사하는 겁니다. Sender is TEdit같이 쓰죠.
즉 이벤트를 일으킨 녀석이 TEdit다라는 겁니다. 그렇기 때문에 TPanel의 클릭이벤트에
(Sender as TEdit).Caption:='에디트박스'라고 쓴다면 형변환 오류가 나올 것입니다.
(Sender as TPanel).Caption='나는 패널이다'라고 해야겠죠. 잘은 모르지만 Sender를 쓰는 경우는 같은 종류의 컴포넌트가 이벤트를 공유할 때 많이 쓰는 것 같습니다.
예를 들어 폼에 에디트박스가 여러개 있고 포커스가 오면 색깔이 변하게 하고 싶다면
Edit1의 OnEnter이벤에 (Sender as TEdit).Color:= clYellow; 라고 적고
다른 에디트박스의 OnEnter이벤트를 Edit1의 OnEnter이벤트와 연결시키면 폼위의 모든 에디트박스에 적용이 됩니다.
설명이 좀 너저분했군요. 양해 바랍니다. 저도 많이 부족한데 답변이 도움이 되었으면 좋겠군요.
왕초보입니다. 강좌도 보고, 책을 통하여 공부하고 있습니다. 이런 자료들을 보다보니 Sender = Ed_itemcd, Sender is Tedit, TEdit(sender)등이 나오는데 무슨 사린진 모르겠네요. Sender나 as나 is에 자세한 사항을 알고 싶어서 이렇게 ...
박성훈
•
1999.12.03 20:18
king 초보 wrote:
> 왕초보입니다.
> 강좌도 보고, 책을 통하여 공부하고 있습니다.
> 이런 자료들을 보...
> 왕초보입니다.
> 강좌도 보고, 책을 통하여 공부하고 있습니다.
> 이런 자료들을 보다보니 Sender = Ed_itemcd, Sender is Tedit, TEdit(sender)등이 나오는데 무슨 사린진 모르겠네요.
> Sender나 as나 is에 자세한 사항을 알고 싶어서 이렇게 부탁드립니다.
저도 정확하게는 모르지만 아느만큼만 답변할께요.
Sender는 해당 이벤트를 일으킨 객체를 말합니다.즉, 윈도에 메세지를 날린 녀석을 지칭하는거죠. Sender is TEdit라는 것은 이벤트를 일으킨 클래스가 TEdit라는 것을 말합니다. 컴포넌트의 대부분의 이벤트에 Sender가 붙어 있잖아요. TEdit(Sender)는 Sender를 TEdit형으로 형변환하는 거구요.
as연산자는 객체의 형변환을 할 때 씁니다. TEdit(Sender) 나 Sender as TEdit나 같은 결과가 나옵니다. is는 객체의 타입을 검사하는 겁니다. Sender is TEdit같이 쓰죠.
즉 이벤트를 일으킨 녀석이 TEdit다라는 겁니다. 그렇기 때문에 TPanel의 클릭이벤트에
(Sender as TEdit).Caption:='에디트박스'라고 쓴다면 형변환 오류가 나올 것입니다.
(Sender as TPanel).Caption='나는 패널이다'라고 해야겠죠. 잘은 모르지만 Sender를 쓰는 경우는 같은 종류의 컴포넌트가 이벤트를 공유할 때 많이 쓰는 것 같습니다.
예를 들어 폼에 에디트박스가 여러개 있고 포커스가 오면 색깔이 변하게 하고 싶다면
Edit1의 OnEnter이벤에 (Sender as TEdit).Color:= clYellow; 라고 적고
다른 에디트박스의 OnEnter이벤트를 Edit1의 OnEnter이벤트와 연결시키면 폼위의 모든 에디트박스에 적용이 됩니다.
설명이 좀 너저분했군요. 양해 바랍니다. 저도 많이 부족한데 답변이 도움이 되었으면 좋겠군요.