Q&A

  • 키 조합(BackSpace구현)..
백스페이스로는 삭제가 안되는 것이 있어 delete키로 백스페이스 기능을

구현하려고 합니다.



KeyDown 이벤트에 왼쪽 이동키와 delete키 조합을 사용하려고 하는데.

잘 안되네요..



혹시 아시는분 계신가요 ?



if Key = vk_back then begin

key := vk_Left;

key := vk_Delete;

end;



이렇게하면 vk_Left는 무시되는거 같습니다.

2  COMMENTS
  • Profile
    Mr.Q 2000.07.28 10:07
    빈거울 wrote:

    > 백스페이스로는 삭제가 안되는 것이 있어 delete키로 백스페이스 기능을

    > 구현하려고 합니다.

    >

    > KeyDown 이벤트에 왼쪽 이동키와 delete키 조합을 사용하려고 하는데.

    > 잘 안되네요..

    >

    > 혹시 아시는분 계신가요 ?

    >

    > if Key = vk_back then begin

    > key := vk_Left;

    > key := vk_Delete;

    > end;

    >

    > 이렇게하면 vk_Left는 무시되는거 같습니다.



    되려나 모르지만, 아래와같이 해보세요. 되면 연락하세요. ^^ 안되면 말구. ^^;

    SendMessage(Edit1.Handle, WM_CHAR, 8, 0);

  • Profile
    parkisu 2000.07.28 09:32
    빈거울 wrote:

    > 백스페이스로는 삭제가 안되는 것이 있어 delete키로 백스페이스 기능을

    > 구현하려고 합니다.

    >

    > KeyDown 이벤트에 왼쪽 이동키와 delete키 조합을 사용하려고 하는데.

    > 잘 안되네요..

    >

    > 혹시 아시는분 계신가요 ?

    >

    > if Key = vk_back then begin

    > key := vk_Left;

    > key := vk_Delete;

    > end;

    >

    > 이렇게하면 vk_Left는 무시되는거 같습니다.



    해당컴포넌트가 SelStart속성을 가진 넘이라면 이렇게 해보시죠.

    if key=vk_delete then

    begin

    Edit1.SelStart:= Edit1.SelStart-1;

    end;



    아님, 이 팁을 활용해 보세요.



    procedure SimulateKeystroke(VirtualKey: byte; ScanCode: DWORD);

    begin

    // keybd_event 함수를 사용한 키 조합(down, up) 발생

    keybd_event(VirtualKey, // 키의 down

    ScanCode,

    0,

    0);

    keybd_event(VirtualKey, // 키의 up

    ScanCode,

    KEYEVENTF_KEYUP,

    0);

    end;





    if key=vk_delete then

    begin

    key:=0;

    SimulateKeyStroke(vk_back, 0);

    end;



    도움이 되시길....