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
[51368] Re:Re:Re:DrawGrid로 파형 그리기 문의
장성호 [nasilso] 1398 읽음    2007-11-27 10:29
음...

좌상단에만 직접 Draw하고 나머지는 나둔다구요?

1.간단한 방법은?
   FixedRows와 FixedCols은  Scroll해도 항상 맨윗쪽에
   항상 맨왼쪽에 있습니다.
  
   DrawCell 이벤트에서 ..  ARow==ACol==0 일때만 처리하면 되겠죠
    if(ARow==0 && ACol ==0 )
    {
        StringGrid1->Canvas->TextOutA(Rect.left+2,Rect.top+2,"여긴가");
    }
  
2. FixedRows나 FixedCols 를 이용하지 않고는?
    어쩔수 없이 좌표계산해줘야겠죠..
   
  항상 좌측상단에 Cell은   Canvas좌표 0,0을 포함하겠죠?
  OnDrawCell 이벤트에서 Rect값이 0,0을 포함하고 있는지 검사하면 될것 같은데요
아래와 같이..

void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
      int ARow, TRect &Rect, TGridDrawState State)
{
     if(Rect.left<=0 && Rect.right>0 && Rect.top<=0 && Rect.bottom>0)
     {
        StringGrid1->Canvas->TextOutA(Rect.left+2,Rect.top+2,"여긴가");
     }
}

   위와같이 하면 맨  FixedRows , FixedCols 을 쓰지 않고 맨 좌측상단에만 그립니다.
 

   한데 문제가 하나 있더군요  
   ScrollBar를 움직일때나 , MouseWheel을 이용해서 scroll한경우 OnDraw이벤트가 제대로 발생하지 않더군요
   발생하더라도 새로 Draw될 Cell에만 입벤트가 발생하는듯하구...

   이경우에는 sub-classing으로    WM_SCROLL 과   WM_MOUSEWHEEL 메세지를 잡아서
   Repaint()해주면 됩니다.
   (혹 sub-classing 방법을 모르신다면..  여기 검색해보세요)


추신
   FixedRows , FixedCols 를 사용하여 1,1  셀에 Draw하고 싶다면
   Rect가 (0,0)이 아닌  대개 (DefaultWidth , DefaultHeight) 를 포함하고 있는경우를 찾으면 되겠죠
 
  그럼..

   

장준식 님이 쓰신 글 :
: 답변 감사합니다.
:
: 제가 실제로 하고 싶은건 보여주신 예제에서 행과 열이 출력 되는 곳을 제일 왼쪽 위에만 표시하고 싶습니다.
: 화면에 보이는 행과 열의 1,1에만 표시하고 나머지는 무시되도록 하고 싶은데요. 즉, 화면에 보이는 1행1열이 그리드에서 절대적으로 몇열 몇행인지를 알수 있도록 하고 싶습니다.

+ -

관련 글 리스트
51355 DrawGrid로 파형 그리기 문의 장준식 2022 2007/11/26
51363     Re:DrawGrid로 파형 그리기 문의 장성호 1475 2007/11/26
51365         Re:Re:DrawGrid로 파형 그리기 문의 장준식 1161 2007/11/27
51368             Re:Re:Re:DrawGrid로 파형 그리기 문의 장성호 1398 2007/11/27
51367             자문자답하네요 ㅋㅋ 장준식 1092 2007/11/27
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.