Q&A

  • ListBox 의 Selected 프로퍼티 관련
안녕하세요...



제가 지금 고민하고 있는건 ListBox 컴포넌트의 Selected 프로퍼티 땜 입니다.

멀티 선택이 가능할때 전체 선택을 위한 동작을 할때 아래와 같이 처리를 합니다.



for i:=0 to ListBox1.Items.Count-1 do

ListBox1.Selected[i]:= True;



위와 같이 하면 전체 선택엔 별 무리가 없지만 아이템이 백단위가 넘어서 천단위

일 경우 0번부터 끝까지 선택되면서 ListBox 의 내용이 밑으로 스크롤 된답니다.

그래서 그런지 선택 속도도 만만치 안답니다. 다른 방법 없을까요?



그럼 2만.

2  COMMENTS
  • Profile
    구창민 2000.03.21 02:02
    상현 wrote:

    > 안녕하세요...

    >

    > 제가 지금 고민하고 있는건 ListBox 컴포넌트의 Selected 프로퍼티 땜 입니다.

    > 멀티 선택이 가능할때 전체 선택을 위한 동작을 할때 아래와 같이 처리를 합니다.

    >

    > for i:=0 to ListBox1.Items.Count-1 do

    > ListBox1.Selected[i]:= True;

    >

    > 위와 같이 하면 전체 선택엔 별 무리가 없지만 아이템이 백단위가 넘어서 천단위

    > 일 경우 0번부터 끝까지 선택되면서 ListBox 의 내용이 밑으로 스크롤 된답니다.

    > 그래서 그런지 선택 속도도 만만치 안답니다. 다른 방법 없을까요?

    >

    > 그럼 2만.





    안녕하세요? 구창민입니다.

    방금 제가 만들어 테스트 해봤는데 잘 되는 군요.

    강제로 Ctrl+Shift+End 키를 누른 것 처럼 만들어 버리는 겁니다.

    번쩍할새에 전부 선택이 될겁니다. 어쩐지 꽁수같죠? ^^

    잘 안되시면 다시 질문올려주세요.



    procedure TForm1.Button1Click(Sender: TObject);

    begin

    ListBox1.SetFocus;

    ListBox1.Selected[0]:= True;

    Keybd_Event( VK_CONTROL, VK_CONTROL, 0, 0 );

    Keybd_Event( VK_SHIFT, VK_SHIFT, 0, 0 );

    Keybd_Event( VK_END, VK_END, 0, 0 );



    Keybd_Event( VK_END, VK_END, KEYEVENTF_KEYUP, 0 );

    Keybd_Event( VK_SHIFT, VK_SHIFT, KEYEVENTF_KEYUP, 0 );

    Keybd_Event( VK_CONTROL, VK_CONTROL, KEYEVENTF_KEYUP, 0 );

    end;



    그럼~ 즐거운 프로그래밍 되시길~

  • Profile
    상현 2000.03.21 03:33
    감사합니다.

    정말 멋진 해결책 이었습니다.

    그런데 이 방법 말고 보다 정상적이고 일반적인 방법은 없을까요...



    구창민 wrote:

    > 상현 wrote:

    > > 안녕하세요...

    > >

    > > 제가 지금 고민하고 있는건 ListBox 컴포넌트의 Selected 프로퍼티 땜 입니다.

    > > 멀티 선택이 가능할때 전체 선택을 위한 동작을 할때 아래와 같이 처리를 합니다.

    > >

    > > for i:=0 to ListBox1.Items.Count-1 do

    > > ListBox1.Selected[i]:= True;

    > >

    > > 위와 같이 하면 전체 선택엔 별 무리가 없지만 아이템이 백단위가 넘어서 천단위

    > > 일 경우 0번부터 끝까지 선택되면서 ListBox 의 내용이 밑으로 스크롤 된답니다.

    > > 그래서 그런지 선택 속도도 만만치 안답니다. 다른 방법 없을까요?

    > >

    > > 그럼 2만.

    >

    >

    > 안녕하세요? 구창민입니다.

    > 방금 제가 만들어 테스트 해봤는데 잘 되는 군요.

    > 강제로 Ctrl+Shift+End 키를 누른 것 처럼 만들어 버리는 겁니다.

    > 번쩍할새에 전부 선택이 될겁니다. 어쩐지 꽁수같죠? ^^

    > 잘 안되시면 다시 질문올려주세요.

    >

    > procedure TForm1.Button1Click(Sender: TObject);

    > begin

    > ListBox1.SetFocus;

    > ListBox1.Selected[0]:= True;

    > Keybd_Event( VK_CONTROL, VK_CONTROL, 0, 0 );

    > Keybd_Event( VK_SHIFT, VK_SHIFT, 0, 0 );

    > Keybd_Event( VK_END, VK_END, 0, 0 );

    >

    > Keybd_Event( VK_END, VK_END, KEYEVENTF_KEYUP, 0 );

    > Keybd_Event( VK_SHIFT, VK_SHIFT, KEYEVENTF_KEYUP, 0 );

    > Keybd_Event( VK_CONTROL, VK_CONTROL, KEYEVENTF_KEYUP, 0 );

    > end;

    >

    > 그럼~ 즐거운 프로그래밍 되시길~