Q&A

  • 스트링 그리드에서~~~
안녕하세요
델파이를 시작하는 사람입니다. 선배님들의 조언을 구하고자 합니다.
   스트링그리드에서 특정셀에  한 칸만 색을 넣으려고 하는데 안되서 퇴근을
     못하고 있어요..  도와주세요
1  COMMENTS
  • Profile
    sunny 2002.09.29 11:42
    안녕하세요
    제가 질문을 제대로 이해했는지 모르겠군요
    먼저 특정셀을 클릭했을때 셀의 색깔과 글자색이 변하는걸 말씀하신다면..
    다음과 같이 하시면 되고요
    procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    begin

    with TStringGrid(Sender).Canvas do
    begin
       if (gdSelected in State) then
       begin
         Brush.Style := bsSolid;
         Brush.Color := $00B0FFFF;
         Rectangle(Rect);
         Font.Color := clRed;
         TextOut(Rect.Left+5, Rect.Top+5, TStringGrid(Sender).Cells[ACol, ARow]);
       end;
    end;    
    end;

    만약에 어느 특정셀에 대해서 예를들어 cell(1,1)에 대해서만,
    셀 색깔을 빨강, 그리고 글자는 파랑으로 하시고 싶으시면 다음과 같이 하시면 됩니다.
    procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    var
    RowNumber : Integer;
    begin
    with StringGrid1 do
       begin
          Rect := StringGrid1.CellRect(1,1);
          Canvas.Brush.Color := clRed;
          Canvas.FillRect(Rect);
          Canvas.Font.Color := clBlue;
          canvas.TextRect(Rect, Rect.Left, Rect.Top, cells[1,1]);
       end;
    end;

    그럼 수고하세요.