Q&A

  • 콤보박스에서 up key를 주었을때
제가 하고자 하는바는 콤보박스에서 up key를 눌렀을때



현재의 아이템인덱스는 그대로 두고 다음 포커스로 이동하는 것입니다.



combobox1에는 아이템이 전부 7개가 있는데 0번부터 5번까지는 up key를



눌러도 combobox1.ItemIndex+1 를 해주기 때문에 원래의 아이템 인덱스를



가진체 이동하지만 마지막 6번째 인덱스인경우 up key를 누르면



아이템인덱스를 -1해주고 가는군요.



어찌 방법이 없을런지요?



exit에서도 마찬가지랍니다.



이벤트는 keydown과 keyup에 같이 주어도 마찬가지고요.





If key = 38 then

begin

If combobox1.ItemIndex = 6 then

begin

combobox1.ItemIndex := 6;

edit1.SetFocus;

exit;

end else

begin

combobox1.ItemIndex:=combobox1.ItemIndex+1;

edit1.SetFocus;

end;

end;

1  COMMENTS
  • Profile
    최용일 2000.04.07 07:16
    안녕하세요. 최용일입니다.



    이것은 입력받은 키를 무시하시면 해결되겠는데요.



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

    Shift: TShiftState);

    begin

    if Key = vk_Up then

    begin

    Key := 0; // Up Key를 무시한다.

    Edit1.SetFocus;

    end;

    end;



    이창영 wrote:

    > 제가 하고자 하는바는 콤보박스에서 up key를 눌렀을때

    >

    > 현재의 아이템인덱스는 그대로 두고 다음 포커스로 이동하는 것입니다.

    >

    > combobox1에는 아이템이 전부 7개가 있는데 0번부터 5번까지는 up key를

    >

    > 눌러도 combobox1.ItemIndex+1 를 해주기 때문에 원래의 아이템 인덱스를

    >

    > 가진체 이동하지만 마지막 6번째 인덱스인경우 up key를 누르면

    >

    > 아이템인덱스를 -1해주고 가는군요.

    >

    > 어찌 방법이 없을런지요?

    >

    > exit에서도 마찬가지랍니다.

    >

    > 이벤트는 keydown과 keyup에 같이 주어도 마찬가지고요.

    >

    >

    > If key = 38 then

    > begin

    > If combobox1.ItemIndex = 6 then

    > begin

    > combobox1.ItemIndex := 6;

    > edit1.SetFocus;

    > exit;

    > end else

    > begin

    > combobox1.ItemIndex:=combobox1.ItemIndex+1;

    > edit1.SetFocus;

    > end;

    > end;