TextRect(Rect, 3, 3, '10') 에 보시다시피 3, 3 영역에 그리도록 하셨습니다.
당연히 그 위치에만 죽어라 글자를 겹쳐서 그리겠죠...
팁란에도 옛날에 올려놨었지만 덤으로 붙이니 도움이 되시길...
<!--CodeS-->
procedure TForm1.sgViewDrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var CellStr: string; LeftPos, i, j: Integer;
MyGridWidth: Array of Integer; // Grid의 각 컬럼의 넓이를 지정할 동적 배열
begin
with (Sender as TStringGrid).Canvas do begin // Grid에 색칠하기
if gdSelected in State then Brush.Color := $00C2E79E
else if gdFixed in State then Brush.Color := $00E4F3E6
else if ARow Mod 2 = 0 then Brush.Color := $00FFF0EC;
Font.Color := clBlack;
Font.Size := 8;
Font.Style := [fsBold];
CellStr := (Sender as TStringGrid).Cells[ACol, ARow];
LeftPos := ((Rect.Right - Rect.Left - TextWidth(CellStr)) div 2) + Rect.Left;
FillRect(Rect);
TextRect(Rect, LeftPos, Rect.Top + 2, CellStr);
end;
SetLength(MyGridWidth, ACol + 1);
with Sender as TStringGrid do
for i := 0 to ACol do
for j := 0 to ARow do begin
MyGridWidth[i] := Canvas.TextWidth(Cells[i, j]);
if MyGridWidth[i] >= ColWidths[i] then
ColWidths[i] := MyGridWidth[i] + 10;
end;
end;
<!--Codes--> with StringGrid.Canvas do begin Brush.Color := clInactiveCaptionText; Font.Color := clBlack; FillRect(Rect) ; <!--CodeE--> 다른 질문에 올라 와 있는 대로 셀 바탕 색깔을 위와 같이 바꿨습니다. 그런데 바탕 색깔을...
소울해커
•
2008.01.17 06:23
OnDrawCell에서 작성하셨는데...
코드에 이상은 없구요.
TextRect(Rect, 3, 3, '10') 에 보시다시피 ...
코드에 이상은 없구요.
TextRect(Rect, 3, 3, '10') 에 보시다시피 3, 3 영역에 그리도록 하셨습니다.
당연히 그 위치에만 죽어라 글자를 겹쳐서 그리겠죠...
팁란에도 옛날에 올려놨었지만 덤으로 붙이니 도움이 되시길...
<!--CodeS-->
procedure TForm1.sgViewDrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var CellStr: string; LeftPos, i, j: Integer;
MyGridWidth: Array of Integer; // Grid의 각 컬럼의 넓이를 지정할 동적 배열
begin
with (Sender as TStringGrid).Canvas do begin // Grid에 색칠하기
if gdSelected in State then Brush.Color := $00C2E79E
else if gdFixed in State then Brush.Color := $00E4F3E6
else if ARow Mod 2 = 0 then Brush.Color := $00FFF0EC;
Font.Color := clBlack;
Font.Size := 8;
Font.Style := [fsBold];
CellStr := (Sender as TStringGrid).Cells[ACol, ARow];
LeftPos := ((Rect.Right - Rect.Left - TextWidth(CellStr)) div 2) + Rect.Left;
FillRect(Rect);
TextRect(Rect, LeftPos, Rect.Top + 2, CellStr);
end;
SetLength(MyGridWidth, ACol + 1);
with Sender as TStringGrid do
for i := 0 to ACol do
for j := 0 to ARow do begin
MyGridWidth[i] := Canvas.TextWidth(Cells[i, j]);
if MyGridWidth[i] >= ColWidths[i] then
ColWidths[i] := MyGridWidth[i] + 10;
end;
end;
<!--CodeE-->
그나저나 내 질문은 누가 답해주나...ㅠ_ㅠ;