프로그래밍 노트

[델파이]StringGrid에서 오른쪽 정렬과 가운데 정렬하기 본문

델파이

[델파이]StringGrid에서 오른쪽 정렬과 가운데 정렬하기

띠리 2008. 6. 12. 20:20

[델파이]StringGrid에서 오른쪽 정렬과 가운데 정렬하기 예제

오른쪽 정렬하고자하는 StringGrid의 DrawCell 이벤트에
밑의 소스를 카피해서 정렬을 하고자 하는 열이나 행을 설정한다.

StringGrid는 기본적으로 왼쪽 정렬
 


procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  hdcTemp       : HDC;
  crdOrgAlign   : Cardinal;
begin

  with Sender as TStringGrid do
  begin

    hdcTemp := Canvas.Handle;
    if ARow = 0 then
      Canvas.Font.Style := Canvas.Font.Style + [fsBold];

    // 오른쪽 정렬
    if ((ACol = 2) or (ACol = 0)) and (ARow <> 0) then
    begin
      crdOrgAlign := SetTextAlign(hdcTemp, TA_RIGHT);
      Canvas.TextRect(Rect,
                      Rect.Right - 2,
                      Rect.Top + 2,
                      Cells[ACol, ARow]);
      SetTextAlign(hdcTemp, crdOrgAlign);
    end
    // 가운데 정렬
    else if (ACol = 3) and (ARow <> 0) then
    begin
      crdOrgAlign := SetTextAlign(hdcTemp, TA_CENTER);
      Canvas.TextRect(Rect,
                      (Rect.Left + Rect.Right) DIV 2,
                      Rect.Top + 2,
                      Cells[ACol, ARow]);
      SetTextAlign(hdcTemp, crdOrgAlign);
    end
    // 맨 윗줄 가운데 정렬
    else if (ARow = 0) then
    begin
      crdOrgAlign := SetTextAlign(hdcTemp, TA_CENTER);
      Canvas.TextRect(Rect,
                      (Rect.Left + Rect.Right) DIV 2,
                      Rect.Top + 2,
                      Cells[ACol, ARow]);
      SetTextAlign(hdcTemp, crdOrgAlign);
    end
  end;
end;



 

Comments