안녕하세요... 댁스터입니다..
휴~~ 이제야 질문 내용을 이해하겠군요... 헤헤
그런데 Edit의 Visible이 False인 상태에서는 Edit가 포커스를 갖을 수 없기
때문에 값을 넣을 수가 없죠... 고로 OnChange 이벤트도 발생할 수도 없습니다.
그렇게 때문에 fadeaway님께서 위와 같이 하고 메시지 박스가 떳다는 건 뭔가
다른 방법으로 하셨기 때문일 껍니다...
Edit의 값을 입력해야 OnChange가 발생한다... 그러므로 Edit의 visible속성은
True로 하셔야 Onchange 이벤트 헨들러가 실행이 됩니다..
그런데 요 Edit를 화면에서 안보이게 하고 싶으신 거죠?
편법이지만, 저같으면 이렇게 하겠습니다... Visible은 그냥 True로 하고,
Edit의 Top 속성을 음수 값으로 주는 겁니다... 그러면 화면 밖으로 나가서 보이지
않게 되겠죠... 하지만 Visible은 True이므로 포커스를 가질 수 있습니다.. 물론
값을 입력할 수도 있죠... 당연히 OnChange이벤트 헨들러도 실행이 됩니다...
물론 화면상에는 보이지 않지만요...
정리하자면, Edit의 Visible을 True로 하고, Top을 -100정도로 주고
Onchange 이벤트헨들러에 if (Edit1.Text = 'hello') then ShowMessage('');
요렇게 해주면 됩니다... 하지만 문제는 폼에 다른 컨트롤들이 추가되면
Edit가 포커스를 잃고 다른 컨트롤이 포커스를 가질 경우 위 방법이 통하지 않겠죠
이건 왜 그런지 이해가 가실껍니다... 이럴때는 직접 Edit가 포커스를 가질 수
있도록 해주어야 합니다... (SetFocus메소드를 이용하시면 됩니다.)
그럼, 참고하세요..
THEXDER
|