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
[53655] Re:ListView에서 키입력 질문입니다.
장성호 [nasilso] 1667 읽음    2008-06-13 11:33
키보드 입력때  입력 Key에 맞는 Item을 자동으로 찾는것을 막는 근본적인(정상적인)방법은 잘모르겠구요

[자동선택 Disable꼼수]
일단 KeyPress에서 Key값을 0로 해주면 Item을 자동을 찾아 선택하지 않습니다.

그런데 님께서 원하시는것은 Key입력이 오면 Caption을 수정하려고 하는것이므로
Key입력이 들어올때 Item을 수정모드로 변환해주면 됩니다.

[키입력에 아이템 캡션 수정모드로 변환]
void __fastcall TForm1::ListView1KeyPress(TObject *Sender, char &Key)
{
        ListView1->Selected->EditCaption();
}



그런데 위와같이 하면 수정중에 Key입력에도 계속 KeyPress이벤트가 뜨므로 수정중일때는
호출되면 안될것입니다.
수정중인지 아닌지 판별 방법은?
ListView의 OnEditing 과 OnEdited 이벤트를 이용하시면 됩니다.

bool bOnEditing=false;
void __fastcall TForm1::ListView1Edited(TObject *Sender, TListItem *Item,
      AnsiString &S)
{
    bOnEditing=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ListView1Editing(TObject *Sender, TListItem *Item,
      bool &AllowEdit)
{
    bOnEditing=true;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ListView1KeyPress(TObject *Sender, char &Key)
{
        if ( ! bOnEditing && ListView1->Selected )  //아이템이 수정중이지 않으면..
                  ListView1->Selected->EditCaption();   
}


그럼...


skjoon 님이 쓰신 글 :
: 리포트 타입으로 해서 리스트뷰를 사용하려고 합니다.
:
: 리스트뷰에 데이터가 있고
: 키보드 입력을 받아서 선택된 아이템의 내용을 수정하려고 하는데요.
:
: 문제는 숫자 키를 입력하게 되면.. 리스트뷰의 Item Caption의 내용이 숫자라서.. 입력된 숫자와 동일한 캡션값을 가진 아이템으로 Select가 바뀐다는 것입니다.
:
: 의도는 키보드로 숫자를 입력하면 선택된 아이템의 해당 컬럼 위치에 에디트박스가 활성화되고 그 에디트박스의 텍스트에 입력된 숫자가 들어가고, 마우스 등으로 다른 아이템을 선택하면 에디트박스를 없애려고 합니다.
:
: 그런데.. 숫자 키 입력을 하면 순식간에 에디트박스 활성화 -> 다른 아이템 선택 -> 에디트박스 사라짐 -> 입력된 키 값에 해당하는 캡션을 가진 아이템이 셀렉트 되어있음..
:
: 이렇게 되네요.. 설명이 제대로인지... ^^;;;;
:
: 암튼 질문의 요지는 리스트뷰에서 키 입력에 따라 지 스스로 아이템을 선택해버리는 기능을 막고 싶다는 것입니다.
:
: 쉽게 KeyDown 이벤트에서 Key를 NULL 로 만들어봤는데 안되네요.. ^^;;
:
: 그럼 부탁 드리겠습니다.....

+ -

관련 글 리스트
53651 ListView에서 키입력 질문입니다. skjoon 1481 2008/06/12
53655     Re:ListView에서 키입력 질문입니다. 장성호 1667 2008/06/13
53658         Re:Re:ListView에서 키입력 질문입니다. skjoon 1397 2008/06/13
53654     Re:ListView에서 키입력 질문입니다. skjoon 1685 2008/06/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.