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
[48873] Re:OnDrawCell Event에 대해서 질문좀..
현덕0 [hyunduck0] 1192 읽음    2007-04-10 15:43
1개만 가지고 테스트 하실때는 문제가 없었나요?

또아리 님이 쓰신 글 :
: Form안에 4개의 TValueListEditor를 놓고...각 TValueListEditor로 부터 OnDrawEvent를 호출하여...ValueListEditro를 다시 그리는데요...이상하게 그려집니다. 그려지지도 않을뿐더러...에러 메세지를 뿜어내는군요..(Index out of 8) 인덱스값이 오류라는데..데이터는 정상적으로 들어오고 있구요...인덱스값이 틀린게 아닌데..동시에 4개를 그려서 그런지 잘 안그려지더군요...그래서 OnDrawCell Event를 막아봤더니 정상동작되더라구요....이유가 무엇인지요? OnDrawCell Event를 동시에 여러개를 빠르게 그릴때 문제가 발생할 수 있는건가요?
:
: //------------------- 아래 DrawCell을 동시에 4개부르는데요...
:
: // ValueListEditor  Draw Cell Event    -- for INVERTER2
: void __fastcall TForm1::INV2_DataListDrawCell(TObject *Sender, int ACol,
:       int ARow, TRect &Rect, TGridDrawState State)
: {
:     // TBitmap 포인터 생성 그래픽 객체 저장
: //    Graphics::TBitmap       *BM_Buff = new Graphics::TBitmap();
: //    TValueListEditor *pGrid = dynamic_cast<TValueListEditor *>(Sender); // 현재 Sender로 들어오는 Object
: //    // Position을 위한 X, Y 그리고 Rect Area Text높이를 결정하기 위해서 여기에 변수 설정
: //    int     CenterX = 0;
: //    int     CenterY = 0;
: //    TRect   Area;
: //    int     TextHeight;
: //
: //    // 기본 텍스트 Align은 Center로 잡는다.
: //    // ValueListEditor의 기본 상속은 StringGrid로 부터 받아오기 때문에 특정라인 또는
: //    // 전체 셀에 대한 정보를 OnDrawCell에서 다시 그린다.
: //    unsigned oldalign = SetTextAlign(pGrid->Canvas->Handle, TA_CENTER);
: //
: //    // 만약에 State가 선택된상태 (셀이 선택된 상태라면 )
: //    if(ARow !=0) {
: //
: //        if( State.Contains(gdSelected) )
: //        {
: //            // Draw Canvas ( 바탕을 화이트로 바꾸고 FontColor = clRed로 바꾼다.)
: //            pGrid->Canvas->Brush->Color = clWhite;
: //            pGrid->Canvas->Pen->Color = clWhite;
: //            pGrid->Canvas->Font->Color = clRed;
: //            pGrid->Canvas->Font->Style = TFontStyles();
: //        }else {
: //            // Draw Canvas ( 바탕을 화이트로 바꾸고 FontColor = clBlack로 바꾼다.)
: //            // 선택되지 않았을 때 ACol > 0 크면, 즉 타이틀 바가 아니면
: //            pGrid->Canvas->Brush->Color = clWhite;
: //            pGrid->Canvas->Pen->Color = clWhite;
: //            pGrid->Canvas->Font->Color = clBlack;
: //            pGrid->Canvas->Font->Style = TFontStyles();
: //
: //        }
: //    }
: //
: //    // 여기서 Text크기를 결정하고 해당 위치에 매칭 시킨다.
: //    TextHeight = pGrid->Canvas->TextHeight(INV1_DataList->Cells[ACol][ARow]);
: //    pGrid->Canvas->TextRect( Rect
: //                                , (Rect.left + Rect.right)/2
: //                                , Rect.top + (Rect.Height()/2 - TextHeight/2)
: //                                , pGrid->Cells[ACol][ARow]);
: //
: //    SetTextAlign(pGrid->Canvas->Handle, oldalign);
: //
: //
: //    // 이 이하의 Acol에 대하여 switch문으로 처리할 것.
: //    // 만약에 컬럼이 1보다 작거나 같고  로우가 0이라면 ( 즉 타이틀 바를 뜻함.)
: //    if ((ACol<=1) && (ARow == 0))
: //    {
: //        // 타이틀바의 맨처음 컬럼에 대한 이미지 리스트에 대해서 ImageList로 부터 Image를 가져온다.
: //        if ((ACol == 0) && (ARow == 0))
: //        {
: //            ImageList1->GetBitmap(0, BM_Buff);
: //        }else {
: //            ImageList1->GetBitmap(1, BM_Buff);
: //        }
: //
: //        CenterX = Rect.Left;
: //        CenterY = Rect.Top;
: //        // 여기서 이미지 리스트로 부터 가져온 버퍼이미지를 여기에 매칭 시킨다.
: //        pGrid->Canvas->Draw(CenterX, CenterY, BM_Buff);
: //    }

+ -

관련 글 리스트
48864 OnDrawCell Event에 대해서 질문좀.. 또아리 1544 2007/04/10
48873     Re:OnDrawCell Event에 대해서 질문좀.. 현덕0 1192 2007/04/10
48874         Re:Re:OnDrawCell Event에 대해서 질문좀.. 또아리 1132 2007/04/10
48875             Re:Re:Re:OnDrawCell Event에 대해서 질문좀.. 또아리 2172 2007/04/10
48880                 Re:Re:Re:Re:OnDrawCell Event에 대해서 질문좀.. 또아리 1654 2007/04/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.