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
[51571] Re:Re:Re:답변 감사합니다. 근데..
장성호 [nasilso] 1082 읽음    2007-12-11 18:01
지송합니다.
한가지 빠뜨린것이 있네요

CustomDraw할때는 DefaultDraw를 false로 해주셔야 합니다.

    if(SubItem == 2)
    {
                          DefaultDraw=false;    //요걸 빠뜨리셨네요..
                 }


그럼..


DoyongID 님이 쓰신 글 :
: 답변 감사합니다..
:
: 근데, 지금 문제가 프로그래스바 보다는, 회색이 칼럼 전체에다 찍히고 있거든요..
:
: 박스안에만 회색이 찍혀야 하는데, 박스 밖에도 모두 회색으로 칠해져있습니다.
:
: 그래서, ListView1->Canvas->FillRect(rt); 요걸 없앴는데도, 똑같습니다.
:
: 문제가 ListView1->Canvas->Brush->Color = clGray; 이거때문엔거 같더군요.. FillRect()를 하지 않아도 그냥 칼럼 전체가 회색으로 찍힙니다..
:
:
: 장성호 님이 쓰신 글 :
: : 잘하신것 같은데...
: : 아래 부분에서 Rect rt는 subitem의 전체 영역이니
: : 전체 가 모두 회색으로 나오는것은 당연하구요
: :
: : rt 에서 right를   비율에 맞게 수정해주면 될것 같습니다.
: : 개인적으로는 아래와 같이 했죠
: :
: : iPos가 현재 position입니다.
: :  (iPos는 0~ 100 입니다.)
: :
: :            TRect rs=rt;
: :             rs.left=rs.left+1;
: :             rs.right =rs.left+ ((rt.Width()-2)*iPos)/100;             //요기가 핵심일것 같네요...
: :             rs.top=rs.top+1;
: :             rs.bottom=rs.bottom-1;
: :
: : 이렇게 한후에 rs만큼 그렸습니다.
: :
: : ListView1->Canvas->FillRect(rs);
: :
: :
: : 그럼..
: :
: :
: : DoyongID 님이 쓰신 글 :
: : : void __fastcall TForm2::ListView1AdvancedCustomDrawSubItem(TCustomListView *Sender, TListItem *Item, int SubItem,
: : :       TCustomDrawState State, TCustomDrawStage Stage, bool &DefaultDraw)
: : : {
: : :     int SubItemIndex    =3;
: : :
: : :     TRect         rt = Item->DisplayRect(drBounds);
: : :     TListColumn *sItem ;
: : :
: : :     if(SubItem == 2)
: : :     {
: : :         for(int i = 0; i <= SubItemIndex; i++)
: : :         {
: : :             sItem= ListView1->Column[i];
: : :             if(i < SubItem) rt.left += sItem->Width;
: : :             if(i == SubItem) rt.right = rt.left+sItem->Width;
: : :         }
: : :
: : :         rt.left;
: : :         rt.right;
: : :         rt.top++;
: : :         rt.bottom;
: : :
: : :
: : :         ListView1->Canvas->Brush->Color    = clGray;
: : :         ListView1->Canvas->FillRect(rt);
: : :
: : :         ListView1->Canvas->Pen->Color    = clBlack;
: : :         ListView1->Canvas->Rectangle(rt.left, rt.top, rt.right, rt.bottom);
: : :     }
: : :     else
: : :     {
: : :         ListView1->Canvas->Pen->Color    = clBlack;
: : :         ListView1->Canvas->Brush->Color    = clWhite;
: : :     }
: : : }
: : :
: : : 이런 식으로 했습니다. 그런데, 해당 칼럼이 회색으로 다 채워지네요..
: : :
: : : ListView1->Canvas->Brush->Color = clGray; 이게 들어가서 그런것 같은데, 프로그래스바 안에만 색을 채우고 싶거든요.. 어떻게 하면 될까요?

+ -

관련 글 리스트
51565 TListView에 프로그레스바를 그리려고 하는데.. DoyongID 1152 2007/12/11
51566     Re:TListView에 프로그레스바를 그리려고 하는데.. 장성호 1193 2007/12/11
51567         Re:Re:답변 감사합니다. 근데.. DoyongID 942 2007/12/11
51571             Re:Re:Re:답변 감사합니다. 근데.. 장성호 1082 2007/12/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.