Q&A

  • StringGrid에 색 지정에 관한 질문입니다.
<!--Codes-->
    with StringGrid.Canvas do
    begin
      Brush.Color := clInactiveCaptionText;
      Font.Color := clBlack;
      FillRect(Rect) ;
<!--CodeE-->

다른 질문에 올라 와 있는 대로 셀 바탕 색깔을 위와 같이 바꿨습니다. 그런데 바탕 색깔을 바꾸니
글씨가 보이지 않네요.
TextRect(Rect, 3, 3, '10') 쓰니깐 첫번
2  COMMENTS
  • Profile
    소울해커 2008.01.17 06:23
    OnDrawCell에서 작성하셨는데...

    코드에 이상은 없구요.

    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-->

    그나저나 내 질문은 누가 답해주나...ㅠ_ㅠ;

  • Profile
    황경수 2008.01.17 20:27
    있었구나~ ㅎ 그래도 너무 감사합니다.