|
오우너 드러우를 사용하시는거지요?
어찌됬건간에 색갈에 대한 정보를 어디다 저장해 놓아야 됩니다.
제가 하는 방법은 간단한 구조인 경우에는 그냥
맨마지막에 서브 아이템을 하나 더 생성해서 거기에 정보를 담아둡니다.
화면에는 안나오게 하면 되겟죠?
복잡한 경우에는 item 에보면 data 라는거 있는데
그거랑 외부에 변수 만들어서 연결하면 될거 같고요..
그리고 오너드러우 부분에서 체크해서
if (subitems->Strings[5]=="2") ListView1->Canvas->Brush->Color= clYellow;
else ListView1->Canvas->Brush->Color= clred;
이런식으로 뿌려주면 되죠..
그러니까
: if ( ListView1->Items->Item[i]->Caption == "원하는 문자열" )
:
이부분에서 서브아이템의 데이터를 모두 바꾸어주고
리플레쉬한다던가 하면 화면에 반영이 되겟죠...?
암튼 drawitem 부분이 좀 바뀌어야 할거 같네여..
초록물고기 님이 쓰신 글 :
: 안녕하세요...
:
: 리스트 뷰를 사용하다가,,, 간단 할 것 같은데... 막상 해 보니 잘 안되는 것 같아... 글을 올림니다.
:
: 현재 리스트 뷰에 데이타가 많이 들어 있습니다.
: 그리고 그 데이타 들 가운데... 특정 버튼이 눌리면 리스트 뷰에 들어있는 Caption을 비교하여,,,
: 찾은 조건에 맞는 데이타 이면, 그 row전체를 색깔을 바꾸어 주려고 합니다.
:
: void __fastcall TAddressGroupFrame::Button4Click(TObject *Sender)
: {
: for ( i = 0 ; i < ListView1->Items->Count ; i ++ )
: {
: if ( ListView1->Items->Item[i]->Caption == "원하는 문자열" )
: {
: //검색의 조건에 맞은 모든 row 를 특정한 색깔로 표시한다.
: ListView1->Canvas->Brush->Color= clYellow; ==>?
: //여기서 색깔을 바꿀수 있는 방법을 잘모르겠습니다.
: // 불가능한 것인지요?
: //아니면 여기서... CustomDrawItem 을 호출할 수 있는지요?
: //호출을 하려니까,,, 인자를 어떻게 채워서 호출을 해야 하는지, 좀 어렵습니다.
: }
: }
: }
:
: 참고로 CustomDrawItem 에서 , index 값이나, Caption 값 가지고,
: 즉 삽입되는 당시에는 비교 하여, 색깔 지정이 잘 됩니다.
: switch ( Item->Index)
: {
: case 0 :
: ListView1->Canvas->Brush->Color= clYellow;
: break;
: }
: 고맙습니다.
: 그럼 수고하세요.
:
|