Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[15205] 스트링그리드 중앙정렬 관련
손인호 [ihshon] 2051 읽음    2014-06-13 09:41
안녕하세요?

델파이 5 사용하다가 XE5버전으로 바꾸었습니다.

5버전에서 스트링그리드 셀내의 중앙정렬을 위해서 onDrawCell을 이용하여 문제없이 사용했습니다.
XE5에서 같은 코드를 사용했는데 문제가 좀 있습니다. 분명 중앙정렬은 됐는데 기존 좌정렬된 글자가 사라지지않고 남아서 글자가 겹쳐 보입니다.
리프레쉬를 해도 없어지지 않네요. 혹시 원인을 아시면 한수 부탁 드립니다.

코드는 다음과 같습니다.

procedure TfrmMagam.sgMemoDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  Oldalign : word ;
  X : integer ;
  row, col : integer;
  tmpNum : Double;
begin
  with (Sender As TStringgrid).Canvas do begin
    row := ARow;
    col := ACol;

    if ((row=0) or ((row<>0) and ((col=0) or (col = 1) or (col = 3)))) then begin
        Oldalign :=SetTextAlign(sgMemo.Canvas.Handle,ta_Center) ;
        X    := (Rect.Right+Rect.Left) div 2;
        sgMemo.Canvas.TextRect(Rect,X,Rect.Top + 4, Trim(sgMemo.Cells[Col,row]));
        SetTextAlign(sgMemo.Canvas.Handle, OldAlign);
    end
    else if (col=2) and (row > 0) then  begin
         Oldalign :=SetTextAlign(sgMemo.Canvas.Handle,ta_Left) ;
         sgMemo.Canvas.TextRect(Rect, Rect.Left + 7, Rect.Top + 4,
                                   Trim(sgMemo.Cells[Col,row]));
         SetTextAlign(sgMemo.Canvas.Handle, OldAlign);
    end
    else begin
        { if Trim(sgMemo.Cells[Col, Row]) <> '' then begin
            tmpNum := StrToFloat(sgMemo.Cells[Col, Row]);
            tmpNum := (Trunc(tmpNum*100))/100;
            sgMemo.Cells[Col, Row] := FloatToStr(tmpNum);
         end;
         Oldalign :=SetTextAlign(sgMemo.Canvas.Handle,ta_Right) ;
         sgMemo.Canvas.TextRect(Rect, Rect.Right - 4, Rect.Top + 4,
                                   Trim(sgMemo.Cells[Col,row]));
         SetTextAlign(sgMemo.Canvas.Handle, OldAlign);
         }
    end;

  end; //with
end;

+ -

관련 글 리스트
15205 스트링그리드 중앙정렬 관련 손인호 2051 2014/06/13
15206     Re:스트링그리드 중앙정렬 관련 손인호 2898 2014/06/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.