본문 바로가기

TECH/인터넷과IT

델파이 실행시 컴포넌트간 이동(Tab,Enter키) 사용

반응형

델파이 실행시 컴포넌트간 이동(Tab,Enter키) 사용



델파이 프로그램을 사용하다보면 입력을 요구하는 필드가 많을경우 마우스보다는  tab키나 enter키로 필드를 이동해가며 편하게 입력합니다.

델파이에서 표현하는 방법으로는 3가지가 있습니다.

.컴포넌트 속성인 TabOrder를 이용하는 방법
.각각의 컴포넌트에서 Enter키를 눌렀을때 다음 컴포넌트에 포커스를 주는 방법
.현재 폼에서 엔터키를 눌렀을때 현재 컴포넌트의 다음 컴포넌트에 포커스를 주는 방법
 

컴포넌트 속성인 TabOrder를 이용하는 방법
델파이 컴포넌트의 속성에는 TabOrder가 있습니다. 이값을 컴포넌트간에 tab키를 누를시 이동되는 순서값입니다. 초기 프로그램 실행시 폼안에서 TabOrder가 0인 컴포넌트에 포커스가 가게된후 tab키로 컴포넌트를 이동하게 되면 TabOrder값에 맞게 순서적으로 이동하게 됩니다.

하지만 중간에 tab키 이동을 원치 않는 컴포넌트가 있다면 TabStop을 false로 주어 tab이동에 영향을 받지 않게 하면 됩니다.

 


각각의 컴포넌트에서 Enter키를 눌렀을때 다음 컴포넌트에 포커스를 주는 방법
 

컴포넌트의 keydown이벤트 핸들러는 해당 컴포넌트에서 키보드를 누를때 발생합니다.

keypress이벤트와 다른점은 키값을 숫자로 리턴합니다.(keypress는 문자로 리턴합니다.)

컴포넌트의 keydown이벤트에 아래의 소스를 기입합니다.

if key=vk_return then

begin

//엔터키를 누르면 실행
selectnext(sender as twincontrol,true,true);
//현재 컴포넌트의 TabOrder 다음값으로 이동합니다.

end;

or

if key=13 then

begin

 //엔터키를 누르면 실행

 selectnext(sender as twincontrol,true,true);

 //현재 컴포넌트의 TabOrder 다음값으로 이동합니다.

end;

 

컴포넌트의 keypress이벤트에 아래의 소스를 기입합니다.

if key = #13 then //엔터라면

begin

      key := #0;

      ShowMessage('엔터를 누르셨습니다.');

      selectnext(activecontrol as twincontrol,true,true);

      //폼의 포커스를 가진 컴포넌트의 다음 컴포넌트로 이동한다.

end;

 

현재 폼에서 엔터키를 눌렀을때 현재 컴포넌트의 다음 컴포넌트에 포커스를 주는방법

현재 폼의 keypress이벤트에 아래의 소스를 넣습니다.

if key = #13 then //엔터라면

begin

key := #0;

selectnext(activecontrol as twincontrol,true,true);

//폼의 포커스를 가진 컴포넌트의 다음 컴포넌트로 이동한다.

end;

 

현재 폼의 keydown이벤트에 아래의 소스를 넣습니다.

if key = 13 then //엔터라면
begin
selectnext(activecontrol as twincontrol,true,true);
//폼의 포커스를 가진 컴포넌트의 다음 컴포넌트로 이동한다.
end;

 

※ keypress나 keydown이벤트 둘중에 하나를 사용해야 하며 보통 keydown을 잘사용합니다.


출처 : http://www.zetblog.net/?0027040062
반응형