안녕하세요.
스트링그리드에서 각 행의 Data들을 오른쪽 정렬시키고,
2행마다 색을 넣은 것 까지는 잘 되었는데요,
2행마다 색을 넣은 부분은 오른쪽 정렬이 되지 않습니다.
게시판을 다 뒤져봐도 관련해답을 찾을수 없어서 이렇게 글을 올립니다.
고수님들 , 알려주세요.
아래는 소스입니다.
procedure TfrmMW0010.StringGrid2DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var
...
begin
if ACol = 2 then // 오른쪽 정렬
begin
with TStringGrid( Sender ).Canvas do
begin
Str_Len := TextWidth( TStringGrid( Sender ).Cells[ 2, ARow ] );
TextRect( Rect, Rect.Right - Str_Len, Rect.Top + 2, TStringGrid( Sender ).Cells[ 2, ARow ] );
end;
end;
//////////////////////////////////////// 2 칸 마다 색 넣기 //////////////////////////////////////////
with StringGrid2 do
begin
for i := 1 to rowcount do
begin
for j := 0 to 11 do
begin
if ( i mod 2 = 0) then
begin
Rect := CellRect(j, i);
Canvas.Brush.Color := clcream;
Canvas.FillRect(Rect);
canvas.TextRect(Rect, Rect.Left + i, Rect.Top + i, cells[j, i]);
end;
end;
end;
end;
/////////////////////////////////////////////////////////////////////////////////////////////////////
소스를 가져다 쓰시면 소스를 이해를 하셔야 자기 것이 되죠...
TextRect 함수는 Cavas의 해당 Rect에 글짜를 출력하는 기능을 가지고 있어요..
처음
if ACol = 2 then // 오른쪽 정렬
이 부분 TextRect에서 오른쪽 정렬을 한 후 색깔을 집어 넣으면서
다시 한번 TextRect 함수를 사용하므로 먼저 그린 텍스트가 지워지게 됩니다.
그러니 정렬하는 부분의 코딩을 색깔을 집어 넣고 텍스트를 출력해 주시면 될꺼예요..
procedure TfrmMW0010.StringGrid2DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var
...
begin
//////////////////////////////////////// 2 칸 마다 색 넣기 //////////////////////////////////////////
with StringGrid2 do
begin
for i := 1 to rowcount do
begin
for j := 0 to 11 do
begin
if ( i mod 2 = 0) then
begin
Rect := CellRect(j, i);
Canvas.Brush.Color := clcream;
Canvas.FillRect(Rect);
end;
if ACol = 2 then // 오른쪽 정렬
begin
with TStringGrid( Sender ).Canvas do
begin
Str_Len := canvas.TextWidth( TStringGrid( Sender ).Cells[ 2, ARow ] );
canvas.TextRect( Rect, Rect.Right - Str_Len, Rect.Top + 2, TStringGrid( Sender ).Cells[ 2, ARow ] );
end;
end
else begin
canvas.TextRect(Rect, Rect.Left + i, Rect.Top + i, cells[j, i]);
end;
end;
end;
end;