|
심기준 님이 쓰신 글 :
: void __fastcall TForm1::ListView1KeyPress(TObject *Sender, char &Key)
: {
: if(Key==ASCII_CR)
: {
: ListView1Click(Sender);
: Edit1->SetFocus();
: }
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
: {
: TListItem *lidata;
:
: if(Key==ASCII_CR)
: {
: ListView1->Selected->Caption = Edit1->Text;
: //ListView1->Selected->Index = ListView1->Selected->Index + 1;
: ListView1->SetFocus();
: }
: }
:
: ListView1Click(Sender) 이것은 마우스로 클릭한 곳의
:
: 아이템 Caption을 Edit1에 넣는 부분입니다.
:
: 먼저 리스트 뷰의 어느 한 줄을 클릭하면 선택된 곳의
:
: 아이템의 캡션이 Edit1의 Text로 들어가고,
:
: 거기에서 수정을 한 후에 Enter Key를 치게 되면
:
: 다시 ListView1로 입력 포커스가 돌아가게 되는데
:
: 이때 먼저 선택된 바로 다음 라인으로 선택된 영역을 옮기고 싶습니다.
:
: 그래서 간단하게
:
: //ListView1->Selected->Index = ListView1->Selected->Index + 1;
: 이 부분처럼 했는데
:
: Index라는 놈은 어떻게 제어를 할 수 없는가 봅니다. 에러메세지가 뜨더군요.
:
: 음.. 제가 질문을 제대로 했는지 모르겠습니다.
:
: 그럼 답변을 기다리겠습니다. 감사합니다..
임펠리테리입니다.
TListItem::Index 프로퍼티는 ReadOnly 프로퍼티입니다. 원하시는 것처럼 특정 인덱스를 가진 아이템을
선택하려면 TListItems::Item 프로퍼티를 이용해야 합니다.
ListView1->Selected = ListView1->Items->Item[ListView1->Selected->Index+1];
이렇게 하면 해당 아이템이 선택되기는 합니다만, 포커스는 여전히 이전의 아이템에 있습니다.
만약 포커스도 함께 옮기려면 다음과 같이 해야 합니다.
ListView1->Selected = ListView1->Items->Item[ListView1->Selected->Index+1];
ListView1->ItemFocused = ListView1->Items->Item[ListView1->ItemFocused->Index+1];
그럼 참고하시길...
|