안녕들 하신지요..영원한 델초보 어린왕자임다..
리스트박스의 근접검색..아..
버그가 있슴다..
먼저 소스 먼저 쓰져..
var
Search: array[0..255] of char;
tmp:String;
begin
//중간소스 생략..
if tmp='' then i:=-1 else begin
strpcopy(Search,tmp);
i:=Completion.ListForm.Lbx_Com.Perform(LB_SELECTSTRING,0, longint(@Search));
// 리스트박스에 가까운 아이템 선택됨.
end;
end;
Lbx_Com은 당근 TListBox죠..
위 리스트박스의 아이템이 1부터서 20까지 있는 상태에서..
tmp='1'이 되면...리스트박스의 '10'인 아이템을 가리키더라구요..허참..
근데..tmp='2'이면 '20'이 아닌 '2'를 잘 가리키는데 말이죠..
이거 왜 그런 겁니까? 고수님덜...
처음부터 검색하실려면 -1을 넣으셔야되요. wParam으로 들어가는 것은 검색시작하기 전의
아이템인덱스입니다. 그러니까 0이 들어가면 1번 인덱스부터 검색합니다.
^^ 항상 즐코하세요.
어린왕자 wrote:
> 안녕들 하신지요..영원한 델초보 어린왕자임다..
> 리스트박스의 근접검색..아..
> 버그가 있슴다..
>
> 먼저 소스 먼저 쓰져..
>
> var
> Search: array[0..255] of char;
> tmp:String;
>
> begin
> //중간소스 생략..
>
>
> if tmp='' then i:=-1 else begin
> strpcopy(Search,tmp);
> i:=Completion.ListForm.Lbx_Com.Perform(LB_SELECTSTRING,0, longint(@Search));
> // 리스트박스에 가까운 아이템 선택됨.
> end;
> end;
>
> Lbx_Com은 당근 TListBox죠..
>
>
> 위 리스트박스의 아이템이 1부터서 20까지 있는 상태에서..
>
> tmp='1'이 되면...리스트박스의 '10'인 아이템을 가리키더라구요..허참..
>
> 근데..tmp='2'이면 '20'이 아닌 '2'를 잘 가리키는데 말이죠..
>
> 이거 왜 그런 겁니까? 고수님덜...
>