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
[48864] OnDrawCell Event에 대해서 질문좀..
또아리 [sky4242] 1544 읽음    2007-04-10 14:49
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 1193 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에 대해서 질문좀.. 또아리 1655 2007/04/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.