Q&A

  • 흠 암나 이문제좀 해결좀엽..^^




지난번에 질문을 했는디 넘어려운 답변이라서엽...^^



지난번 질문내용은 대충이렇습니다...



콤보박스의 리스트를(리스트내용은 사람이름임당.)



콤보박스에 김이라고 입력하면



[김 ][▼] <--- 콤보박스

김ㄱㄱ

김ㄴㄴ

김ㄷㄷ

김ㄹㄹ

박ㄱㄱ

박ㄴㄴ

박ㄷㄷ

박ㄹㄹ

이ㄱㄱ

이ㄴㄴ

이ㄷㄷ

이ㄹㄹ

이런식으로 나오게 구현 할 수는 없을까엽....아시면 갈켜줘엽^^



고수님들의 답변을 눈이 빠지게 기다림당...^^



1  COMMENTS
  • Profile
    최용일 2000.06.08 22:13
    안녕하세요. 최용일입니다.



    콤보박스는 리스트박스처럼 근접검색이 지원되지만 DropDownList를 보여주면서 검색하기



    가 쉽지가 않죠. 드랍다운리스트는 약간은 모들뷰처럼 작동을 하기 때문에...



    제일 좋은 방법은 에디트하나와 리스트박스를 쓰는것입니다.



    뭐~ 먼저 콤보박스를 정렬시키고 아래와 같이 해보세요.



    // 콤보박스의 OnKeyDown 이벤트

    procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);

    var

    S: array[0..255] of Char;

    begin

    if Key = Char(VK_RETURN) then // 엔터키를 누르면

    begin

    with Sender as TComboBox do

    begin

    StrPCopy(S, Text);

    ItemIndex := Perform(CB_SELECTSTRING, 0, LongInt(@S)); // 근접검색하고

    Perform(CB_SHOWDROPDOWN, WPARAM(True), 0); // 드랍다운리스트를 보여준다.

    end;

    Key := #0;

    end;

    if Key = char(VK_TAB) then // 드랍다운리스트가 펼처져있다면 탭키가 정상적으로

    // 작동을 하지 않으므로 수동으로 탭키처리

    SelectNext(Self, False, True);

    end;



    // 콤보박스의 OnExit 이벤트

    procedure TForm1.ComboBox1Exit(Sender: TObject);

    begin

    with Sender as TComboBox do // 드랍다운리스트를 닫는다.

    Perform(CB_SHOWDROPDOWN, WPARAM(False), 0);

    end;



    ^^ 항상 즐코하세요.



    사발우성 wrote:

    >

    >

    > 지난번에 질문을 했는디 넘어려운 답변이라서엽...^^

    >

    > 지난번 질문내용은 대충이렇습니다...

    >

    > 콤보박스의 리스트를(리스트내용은 사람이름임당.)

    >

    > 콤보박스에 김이라고 입력하면

    >

    > [김 ][▼] <--- 콤보박스

    > 김ㄱㄱ

    > 김ㄴㄴ

    > 김ㄷㄷ

    > 김ㄹㄹ

    > 박ㄱㄱ

    > 박ㄴㄴ

    > 박ㄷㄷ

    > 박ㄹㄹ

    > 이ㄱㄱ

    > 이ㄴㄴ

    > 이ㄷㄷ

    > 이ㄹㄹ

    > 이런식으로 나오게 구현 할 수는 없을까엽....아시면 갈켜줘엽^^

    >

    > 고수님들의 답변을 눈이 빠지게 기다림당...^^

    >