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
[15206] Re:스트링그리드 중앙정렬 관련
손인호 [ihshon] 2897 읽음    2014-06-16 11:04
자답입니다.
구글검색으로 찾았습니다. 글자뿐 아니라 배경도 다시 그려줘야 되는군요.
C/C++케이스인데 델파이 케이스로 전환하여 처리하니 됩니다.

검색참조

손인호 님이 쓰신 글 :
: 안녕하세요?
:
: 델파이 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:스트링그리드 중앙정렬 관련 손인호 2897 2014/06/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.