안녕하세요
폼에 TEdit, TMemo, TCombobox 등등의 여러가지 컨트롤이 있을때
각 포커스가 이동하잖아요?
그때 포커스가 있는 컨트롤의 색을 바꿀 수 있는 방법 아시나요?
각 컨트롤의 OnEnter, OnExit 에 일일이 써주지 않고 한방에 해결하는 방법이...
폼이 한 60개 정도 되다보니 각 컨트롤마다 해줄수는 없구요
컨트롤에 포커스가 가면 노란색으로 Color 가꼈다가 포커스가 없어지면 다시
하얀색 등등으로 바뀌는...
아시는 분~
물론, 다 아시는 부분을 활용을 못하시는듯 하군요.
질문대로 OnEnter 이벤트에서 clYellow으로 바꾸고 OnExit 이벤트에서 clWindow로 바꾸시면 됩니다.
그런데, 컴포넌트가 폼당 20개라고 해서 20개를 다 써주는건 많이 괴롭겠죠?
폼 디자인 화면에서 적용하고 싶은 컴포넌트를 <Shift> 키와 마우스 왼쪽키를 이용해서 모두 선택을 하세요.
그리고, Object Inspector의 Events 탭에서 OnEnter 이벤트와 OnExit 이벤트를 각 각 더블클릭해서 코드를 추가할 수 있도록 하세요.
☞ 이렇게 한 후 각 컴포넌트마다 OnEnter 이벤트와 OnExit 이벤트를 클릭해 보시면 모두 동일한 이벤트명이 보일 것입니다. 예컨데 아래와 같이 Edit1Enter, Edit1Exit로 말입니다.
그리고는 아래와 같이 코딩하세요.
procedure TForm1.Edit1Enter(Sender: TObject);
begin
if Sender is TEdit then
(Sender as TEdit).Color := clYellow
else if Sender is TComboBox then
(Sender is TComboBox).Color := clYellow
else if Sender is TMemo then
(Sender is TMemo).Color := clYellow
:
end;
procedure TForm1.Edit1Exit(Sender: TObject);
begin
if Sender is TEdit then
(Sender as TEdit).Color := clWindow
else if Sender is TComboBox then
(Sender is TComboBox).Color := clWindow
else if Sender is TMemo then
(Sender is TMemo).Color := clWindow
:
end;