C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[3886] Re:근데여..멀티셀렉트를 true로 설정하면 말이죠....
박지훈.임프 [cbuilder] 3688 읽음    2000-08-05 00:00
박상열 님이 쓰신 글 :
: 답변 정말 감사드리구여.....꾸벅...
: 근데여 멀티셀렉트로 설정하면 마우스 오른쪽 버튼을 눌러도 아이템이 선택이 안되걸랑요
: 이일을 어찌하면 좋을지......
: 왜 그런걸까여...?
:
: 임프님께서 말씀하신데로
: if (Button==mbRight){
:      SendMessage(ListBox1->Handle, LB_SETCURSEL, ListBox1->ItemAtPos(Point(X, Y), true), 0);
:      }
: 이렇게 했더니 첫번째문제는 해결이됬는데여....
: 아무리 생각해도 멀티섹렉트 문제는 깜깜하네요...
: 제발  답변좀 주세여...
: 그럼..꾸벅



임펠리테리입니다.

앞서 제가 보여드린 코드는 멀티셀렉트가 아닐 경우만 동작합니다. LB_SETCURSEL 메시지가 싱글셀렉트 모드에서만 동작하기 때문입니다. 멀티셀렉트일때는 LB_SETSEL 메시지를 써야 합니다. 그런데 이 메시지는 현재 선택된 아이템들은 그대로 선택된 상태로 있고 새로 지정한 아이템을 선택할지 말지만 결정합니다. 그러므로 그냥 왼쪽 클릭과 동일하게 동작하도록 하려면, 다음과 같이 기존의 아이템들을 언셀렉트시키는 코드가 추가되어야 합니다.

if (Button==mbRight)
{
    for(int i=0; i<ListBox1->Items->Count; i++)
        ListBox1->Selected[i] = false;
    SendMessage(ListBox1->Handle, LB_SETSEL, true, ListBox1->ItemAtPos(Point(X, Y), true));
}

그럼 참고하시길...

+ -

관련 글 리스트
3882 리스트박스에서 버튼을 클릭하면 항상 처음아이템이 선택되는 이유가뭘까여? 박상열 3248 2000/08/05
3883     Re:리스트박스에서 버튼을 클릭하면 항상 처음아이템이 선택되는 이유가뭘까여? 박지훈.임프 3390 2000/01/01
3885         근데여..멀티셀렉트를 true로 설정하면 말이죠.... 박상열 3496 2000/08/05
3886             Re:근데여..멀티셀렉트를 true로 설정하면 말이죠.... 박지훈.임프 3688 2000/08/05
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.