아~!~ 답변 감사드립니다.
KeyPress이벤트는 생각도 안하고 있었네요... -,.-;;
KeyDown에서 Key = NULL로 해보고는 안된다고 .....
KeyDown/Up 하고 KeyPress하고 다른 점을 확인해봐야겠습니다.
말씀해주신 방법으로 해결했습니다.
감사드립니다. ^^
장성호 님이 쓰신 글 :
: 키보드 입력때 입력 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 로 만들어봤는데 안되네요.. ^^;;
: :
: : 그럼 부탁 드리겠습니다.....