천객만래 [千客萬來] (It has an interminable succession of visitors)




Form에서 어느 포커스에 있어도 키 입력을 받아, ESC 키를 누르면 Form 이 닫히도록 할 수 있다.


방법은 다음과 같다.


- Form 의 Key Preview 속성을 True 로 설정한다.

- Form 의 OnKeyPress 이벤트 핸들러에 다음 코드를 작성한다.


if ( Key = #27 ) then

  begin

    Form1.Close;

  end;


위와 같이 OnKeyPress 이벤트 핸들러를 작성하면 Form 의 어느 곳에서나 ESC 키를 누렀을 때 Form1 이 Close 된다.







 

비슷한 방법으로 Edit 컨트롤에서 Enter 키나 Tab키를 눌렀을 때 특정 동작을 수행하도록 할 수도 있다. 

이 때는 Edit 컨트롤의 OnKeyPress 이벤트 핸들러를 위와 같이 작성한다.



if ( Key = #13 ) then

  begin

    Button1.Click;

  end;


만약 위와 같이 Edit 컨트롤의 OnKeyPress 이벤트 핸들러를 작성하면 Edit 컨트롤에서 문자열을 입력한 후 엔터키를 누르면 Button1 의 Click 메소드를 호출할 수 있다.

Posted by SB패밀리
[개발/delphi] 컨트롤 사이를 움직이는 방향키

Edit 컨트롤에서 UP, DOWN키는 사용되지 않는다. 필드 사이를 이동할 때도.
KeyPreview 프로퍼티를 이용하여 OnKeyDown 이벤트에서 코드로 조작할 수 있다.

~~~~~~~~~~~~~~~~~~~~~~~~~
procedure TForm1.FormKeyDown(
     Sender : TObject; 
     var Key: Word;
     Shift : TShiftState
   ) ;
var
   Direction : Integer;
begin
   Direction := -1;
   case Key of
     VK_DOWN, VK_RETURN : Direction := 0; {Next}
     VK_UP : Direction := 1; {Previous}
   end;
   if Direction <> -1 then
   begin
     Perform(WM_NEXTDLGCTL, Direction, 0) ;
     Key := 0;
   end;
end;
~~~~~~~~~~~~~~~~~~~~~~~~~
Posted by SB패밀리