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
[13750] Re:스트링 그리드의 문자 중앙 배치방법을 알고 싶어요
홍성진 [] 1408 읽음    2001-12-18 17:45
Sunwine 님이 쓰신 글 :
: 스트링 그리드의 중앙정렬이나 좌측정렬은 할줄 압니다.
:
: 스트링 그리드의 DefaultRowHeight를 한 100으로 잡은후에 글을 쓰게되면
: 글이 위쪽에 써집니다. 전 이 문자를 정확하게 가운데에 쓰게 하고 싶거든요
: 어떤 방법이 있을까요
:
: 그림으로 표현하자면 아래와 같군요 제가 할줄 아는 방법이
: -----------------------------
:      안녕      |
:                |
:                |
:                |
:                |
: -----------------------------
:
: 이렇게 된것을 아래와 같이 하고 싶어요
: -----------------------------
:                |
:                |
:       안녕     |
:                |
:                |
: -----------------------------

안녕하세요..홍성진 입니다.

OnDrawCell에서 해주면 됩니다. OnDrawCell은 셀이 그려질때 발생합니다.

void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
      int ARow, TRect &Rect, TGridDrawState State)
{
    //ACol, ARow는 그려질 셀입니다. Rect는 셀의 영역이구요.

    int X, Y;
   
    //그리고, Rect값을 기준으로 그립니다.


    X = (Rect.Width() / 2) -  (StringGrid1->Canvas->TextWidth(StringGrid1->Cells[ACol][ARow])/2);
    Y = (Rect.Height() / 2) -  (StringGrid1->Canvas->TextHeight(StringGrid1->Cells[ACol][ARow])/2);

    //Cell를 클리어 시킵니다. 데이타가 이미 있으면 잔상이 남기 때문입니다.
    //여기서 셀의 색상도 바꿀수 있겠죠

    StringGrid1->Canvas->FillRect(Rect);
    StringGrid1->Canvas->TextOut(Rect.Left + X, Rect.Top + Y, StringGrid1->Cells[ACol][ARow]);
}

대충 이렇게 되겠네요..
더 자세히 제어하려면...ARow 나 ACol에 따라 조건을 줘서 해주면 되구요.

위에서 문자열의 길이를 구하기 위해서 사용한 TextWidth나 TextHeight 보다는 API를 써서
문자열의 픽셀을 구하는것이 더 정확한 값을 구할 수 있습니다.

그럼..

+ -

관련 글 리스트
13746 스트링 그리드의 문자 중앙 배치방법을 알고 싶어요 Sunwine 703 2001/12/18
13750     Re:스트링 그리드의 문자 중앙 배치방법을 알고 싶어요 홍성진 1408 2001/12/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.