Q&A

  • 방향키 인식이 안되요???
unit Unit1;



interface



uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls;



type

TForm1 = class(TForm)

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Edit5: TEdit;

procedure Edit3KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

procedure Edit4KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

procedure Edit5KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

procedure Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

procedure Edit2KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

private

{ Private declarations }

public

{ Public declarations }

end;



var

Form1: TForm1;



implementation



{$R *.DFM}



// 에디트 컴포넌트의 OnKeyDown 이벤트 프로시저

procedure TForm1.Edit3KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

Case Key of

// 방향키 아래

40 : Edit5.SetFocus;

// 방향키 오른쪽

39 : Edit4.SetFocus;

// 방향키 위

38 : Edit1.SetFocus;

// 방향키 왼쪽

37 : Edit2.SetFocus;

end;

end;



// 에디트 컴포넌트의 OnKeyDown 이벤트 프로시저

procedure TForm1.Edit4KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

// 방향키 왼쪽

if Key = 37 then Edit3.SetFocus;

end;



// 에디트 컴포넌트의 OnKeyDown 이벤트 프로시저

procedure TForm1.Edit5KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

// 방향키 위

if Key = 38 then Edit3.SetFocus;

end;



// 에디트 컴포넌트의 OnKeyDown 이벤트 프로시저

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

//
4  COMMENTS
  • Profile
    으미.초보 2001.01.11 01:12
    와! 이렇게 많은 분들이 금새 답변을 해주실줄이야...

    사실 놀랐습니다.

    정말 감사드립니다.

    저도 언능 공부해서 이렇게....

    그럼 꾸벅~~~

  • Profile
    고대서창 2001.01.10 20:47
    저도 초보라서 잘 설명은 못드리겠구요..



    KeyDown 이벤트에서는



    Enter는 Vk_Return 왼쪽키는 Vk_Left 위쪽키는 Vk_Up ..등 이런식으로 사용해야 합니다.



    검색해보시면 비슷한 답변이 몇가지 더 있습니다.







    으미.초보 wrote:

    > unit Unit1;

    >

    > interface

    >

    > uses

    > Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    > StdCtrls;

    >

    > type

    > TForm1 = class(TForm)

    > Edit1: TEdit;

    > Edit2: TEdit;

    > Edit3: TEdit;

    > Edit4: TEdit;

    > Edit5: TEdit;

    > procedure Edit3KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

    > procedure Edit4KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

    > procedure Edit5KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

    > procedure Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

    > procedure Edit2KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

    > private

    > { Private declarations }

    > public

    > { Public declarations }

    > end;

    >

    > var

    > Form1: TForm1;

    >

    > implementation

    >

    > {$R *.DFM}

    >

    > // 에디트 컴포넌트의 OnKeyDown 이벤트 프로시저

    > procedure TForm1.Edit3KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

    > begin

    > Case Key of

    > // 방향키 아래

    > 40 : Edit5.SetFocus;

    > // 방향키 오른쪽

    > 39 : Edit4.SetFocus;

    > // 방향키 위

    > 38 : Edit1.SetFocus;

    > // 방향키 왼쪽

    > 37 : Edit2.SetFocus;

    > end;

    > end;

    >

    > // 에디트 컴포넌트의 OnKeyDown 이벤트 프로시저

    > procedure TForm1.Edit4KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

    > begin

    > // 방향키 왼쪽

    > if Key = 37 then Edit3.SetFocus;

    > end;

    >

    > // 에디트 컴포넌트의 OnKeyDown 이벤트 프로시저

    > procedure TForm1.Edit5KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

    > begin

    > // 방향키 위

    > if Key = 38 then Edit3.SetFocus;

    > end;

    >

    > // 에디트 컴포넌트의 OnKeyDown 이벤트 프로시저

    > procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

    > begin

    > //
  • Profile
    이광형 2001.01.10 21:10
    델파이에서 사용하는 스켄코드값 입니다.

    예전에 어느분이 알려 주셔서...^^



    Symbloic name Value(in hex) Mouse or keyboard equivalent

    ------------- ------------- ----------------------------

    VK_LBUTTON 01 Left mouse button

    VK_RBUTTON 02 Right mouse button

    VK_CANCEL 03 Used for control break processing

    VK_MBUTTON 04 Middle mouse button(three-button mouse)

    -- 05-07 Undefined

    VK_BACK 08 BACKSPACE key



    VK_TAB 09 TAB key

    -- 0A0B Undefined

    VK_CLEAR 0C CLEAR key

    VK_RETURN 0D ENTER key

    -- 0E0F Undefined

    VK_SHIFT 10 SHIFT key

    VK_CONTROL 11 CTRL key

    VK_MENU 12 ALT key

    VK_PAUSE 13 PAUSE key

    VK_CAPITAL 14 CAPS LOCK key

    -- 15-19 Reserved for Kanji systems

    -- 1A Undefined

    VK_ESCAPE 1B ESC key

    -- 1C-1F Reserved for Kanji systems

    VK_SPACE 20 SPACEBAR

    VK_PRIOR 21 PAGE UP key

    VK_NEXT 22 PAGE DOWN key

    VK_END 23 END key

    VK_HOME 24 HOME key

    VK_LEFT 25 LEFT ARROW key

    VK_UP 26 UP ARROW key

    VK_RIGHT 27 RIGHT ARROW key

    VK_DOWN 28 DOWN ARROW key

    VK_SELECT 29 SELECT key

    -- 2A OEM specific

    VK_EXECUTE 2B EXECUTE key

    VK_SNAPSHOT 2C PRINT SCREEN key for Windows 3.0 and later

    VK_INSERT 2D INS key

    VK_DELETE 2E DEL key

    VK_HELP 2F HELP key

    VK_0 30 0 key

    VK_1 31 1 key

    VK_2 32 2 key

    VK_3 33 3 key

    VK_4 34 4 key

    VK_5 35 5 key

    VK_6 36 6 key

    VK_7 37 7 key

    VK_8 38 8 key

    VK_9 39 9 key

    -- 3A40 Undefined

    VK_A 41 A key

    VK_B 42 B key

    VK_C 43 C key

    VK_D 44 D key

    VK_E 45 E key

    VK_F 46 F key

    VK_G 47 G key

    VK_H 48 H key

    VK_I 49 I key

    VK_J 4A J key

    VK_K 4B K key

    VK_L 4C L key

    VK_M 4D M key

    VK_N 4E N key

    VK_O 4F O key

    VK_P 50 P key

    VK_Q 51 Q key

    VK_R 52 R key

    VK_S 53 S key

    VK_T 54 T key

    VK_U 55 U key

    VK_V 56 V key

    VK_W 57 W key

    VK_X 58 X key

    VK_Y 59 Y key

    VK_Z 5A Z key

    -- 5B5F Undefined

    VK_NUMPAD0 60 Numeric keypad 0 key

    VK_NUMPAD1 60 Numeric keypad 1 key

    VK_NUMPAD2 60 Numeric keypad 2 key

    VK_NUMPAD3 60 Numeric keypad 3 key

    VK_NUMPAD4 60 Numeric keypad 4 key

    VK_NUMPAD5 60 Numeric keypad 5 key

    VK_NUMPAD6 60 Numeric keypad 6 key

    VK_NUMPAD7 60 Numeric keypad 7 key

    VK_NUMPAD8 60 Numeric keypad 8 key

    VK_NUMPAD9 60 Numeric keypad 9 key

    VK_MULTIPLY 6A Numeric Multiply key

    VK_ADD 6B Numeric Add key

    VK_SEPARATOR 6C Numeric Separator key

    VK_SUBTRACT 6D Numeric Subtract key

    VK_DECIMAL 6E Decimal key

    VK_DIVIDE 6F Divide key

    VK_F1 70 F1 key

    VK_F2 71 F2 key

    VK_F3 72 F3 key

    VK_F4 73 F4 key

    VK_F5 74 F5 key

    VK_F6 75 F6 key

    VK_F7 76 F7 key

    VK_F8 77 F8 key

    VK_F9 78 F9 key

    VK_F10 79 F10 key

    VK_F11 7A F11 key

    VK_F12 7B F12 key

    VK_F13 7C F13 key

    VK_F14 7D F14 key

    VK_F15 7E F15 key

    VK_F16 7F F16 key

    VK_F17 80H F17 key

    VK_F18 81H F18 key

    VK_F19 82H F19 key

    VK_F20 83H F20 key

    VK_F21 84H F21 key

    VK_F22 85H F22 key

    VK_F23 86H F23 key

    VK_F24 87H F24 key

    -- 88-8F Unassigned

    VK_NUMLOCK 90 NUM LOCK key

    VK_SCROLL 91 SCROLL LOCK key

    -- 929B Unassigned

    -- BAC0 OEM specific

    -- C1DA Unassigned

    -- DBE4 OEM specific

    -- E5 Unassigned

    -- E6 OEM specific

    -- E7E8 Unassigned

    -- E9F5 OEM specific

    -- F6FE Unassigned



  • Profile
    지영일 2001.01.10 21:23
    keydown 이벤트에서 VK 값만 인식됩니다.

    keypress이벤트에서는 #숫자..제가 알기로는

    아래 코딩은 간단하게 해본건데요.

    응용해서 쓰시면 도움이 될거 같어서..

    즐프 하세요..



    procedure TForm1.Edit2KeyDown(Sender: TObject; var Key: Word;

    Shift: TShiftState);

    begin

    if (key = VK_RETURN) or (key = VK_DOWN) or (Key=VK_Right) then

    begin

    ActiveControl := Edit3;

    end

    else if (Key = VK_UP) or (Key=VK_Left) then

    begin

    Edit1.SelectAll;

    ActiveControl := Edit1;

    end;

    end;