Q&A

  • 콤보박스 키보드 입력 제한???
안녕하세요. 델파이로 기능 구현중 질물 사항이 있어서요.

콤보박스에 키보드 입력을 못하게 하려면 어떻게 해야 하는지 궁금합니다.

콤보박스 아이템 리스트를 마우스로 DropDown해서 선택해서만 사용하고 콤보박스에 직접 키보드 입력을 못하게 하려고 하는데 잘 안되네요...

그러니까 에디트 박스에 ReadOnly 기능 같은건데... 부탁드리겠습니다.

4  COMMENTS
  • Profile
    찐따개발자 2000.10.25 01:44
    sky wrote:

    > 안녕하세요. 델파이로 기능 구현중 질물 사항이 있어서요.

    > 콤보박스에 키보드 입력을 못하게 하려면 어떻게 해야 하는지 궁금합니다.

    > 콤보박스 아이템 리스트를 마우스로 DropDown해서 선택해서만 사용하고 콤보박스에 직접 키보드 입력을 못하게 하려고 하는데 잘 안되네요...

    > 그러니까 에디트 박스에 ReadOnly 기능 같은건데... 부탁드리겠습니다.



    콤보박스의 스타일을 csDropDown로 하지 말구여

    csDropDownList로 하면 edit가 안됩띠다..

    수고하세여..



  • Profile
    sky 2000.10.25 18:08
    찐따개발자 wrote:

    > sky wrote:

    > > 안녕하세요. 델파이로 기능 구현중 질물 사항이 있어서요.

    > > 콤보박스에 키보드 입력을 못하게 하려면 어떻게 해야 하는지 궁금합니다.

    > > 콤보박스 아이템 리스트를 마우스로 DropDown해서 선택해서만 사용하고 콤보박스에 직접 키보드 입력을 못하게 하려고 하는데 잘 안되네요...

    > > 그러니까 에디트 박스에 ReadOnly 기능 같은건데... 부탁드리겠습니다.

    >

    > 콤보박스의 스타일을 csDropDown로 하지 말구여

    > csDropDownList로 하면 edit가 안됩띠다..

    > 수고하세여..

    >



    감사합니다.. 그런데요..

    스타일을 csDropDownList를 하면 combobox.text에 값을 넣어도 나오지가 않네요.

    무슨 얘기냐 하면요..

    form1에 combobox가 있고요. combobox내 아이템에 test1, test2, test3 이 있다고 가정하고요.

    form2에서 사용자가 test1을 선택하면 form1을 띄우면서 디폴트로 form1에 있는 combobox.text에 test1이란게 보이게 하려고 그러거던요.

    그래서 form1의 create 혹은 active 이벤트에 combobox.text := 'test1';

    이라고 했는데 콤보박스 스타일을 csDropDown으로 하면 되는데 edit가 되어 버리고요

    스타일을 csDropDownList로 하면 edit는 안되는데 디폴트값 표현이 안되네요.

    다른 방법이 있는지요.. 부탁드리겠습니다.

    그럼 이만...

  • Profile
    sky 2000.10.25 19:14
    제가 질문하고 제가 답하네요. ^^



    콤보박스의 OnKeyPress 이벤트에다가 Key := #0; 로 셋팅하고

    폼 create 이벤트에 콤보박스.ImeMode := imDisable; 로 셋팅하니까 되네요.

    키보드 입력도 안먹고... 영문, 한글 모두.. 한글같은 경우 처음에 입력하는 하나의 키는 먹었었거든요. 그것도 해결 되었네요. ^^



    다른 분들도 혹시나 저같은 고민을 하실까봐 이렇게.. 다 아시는건데 그랬나요? 어쨌든... 다음에 모르는 것이 있음 또 부탁드립니다. ^^

  • Profile
    개박살 2000.10.25 21:01
    sky wrote:

    > 제가 질문하고 제가 답하네요. ^^

    >

    > 콤보박스의 OnKeyPress 이벤트에다가 Key := #0; 로 셋팅하고

    > 폼 create 이벤트에 콤보박스.ImeMode := imDisable; 로 셋팅하니까 되네요.

    > 키보드 입력도 안먹고... 영문, 한글 모두.. 한글같은 경우 처음에 입력하는 하나의 키는 먹었었거든요. 그것도 해결 되었네요. ^^

    >

    > 다른 분들도 혹시나 저같은 고민을 하실까봐 이렇게.. 다 아시는건데 그랬나요? 어쨌든... 다음에 모르는 것이 있음 또 부탁드립니다. ^^



    이렇게 하시면 한글 하나키도 막아줍니다.



    콤보박스의 OnKeyPress 이벤트에다가 Key := #0; 로 셋팅하고

    OnKeyDown 이벤트에

    setHangeuIMode(false); // 영문모드로 바꾼다.



    이케 해주시면 되여.

    아참 글구 uses문에다가 Imm 포함해주세요.

    이케

    uses

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

    StdCtrls, Imm;





    procedure TForm1.SetHangeulMode(SetHangeul: Boolean);

    var

    tMode : HIMC;

    begin

    tMode := ImmGetContext(handle);

    if SetHangeul then // 한글모드로

    ImmSetConversionStatus(tMode, IME_CMODE_HANGEUL,

    IME_CMODE_HANGEUL)

    else // 영문모드로

    ImmSetConversionStatus(tMode, IME_CMODE_ALPHANUMERIC,

    IME_CMODE_ALPHANUMERIC);

    end;





    근디 내 질문은 왜 답변이 없는거징 T.T