제가 하고자 하는바는 콤보박스에서 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;
이것은 입력받은 키를 무시하시면 해결되겠는데요.
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;