특정셀의 배경색을 바꿀려고 하는데, 아래방법으로 하면 배경색은 변경되는데
글자가 안보이내요. 어떻게 고쳐야 하나요.
with schedule_grid do
begin
if (ARow = 5)and(ACol=2) then
begin
Canvas.Brush.Color := clYellow; // 배경색을 바꿀때 사용
canvas.TextRect(Rect, Rect.Left, Rect.Top, cells[ACol, ARow]);
end;
end;
Pen.Color := clBtnShadow;
MoveTo(Rect.Right-1, Rect.Top);
LineTo(Rect.Right-1, Rect.Bottom);
MoveTo(Rect.Left, Rect.Bottom-1);
LineTo(Rect.Right, Rect.Bottom-1);
end else if gdSelected in State then begin // 선택된 셀인 경우
Brush.Color := SelectedBGColor; // 일단 바탕을 칠한다.
FillRect(Rect);
Pen.Color := SelectedLineColor;
if ACol = 0 then begin // 첫번째 컬럼일때 좌측에 선을 그린다.
MoveTo(Rect.Left, Rect.Top);
LineTo(Rect.Left, Rect.Bottom);
end;
if ACol = (TStringGrid(Sender).ColCount-1) then begin // 마지막 컬럼일때 우측에 선을 그린다.
MoveTo(Rect.Right-1, Rect.top);
LineTo(Rect.Right-1, Rect.Bottom);
end;
MoveTo(Rect.Left,Rect.Top); // 아래위로 선을 그린다.
LineTo(Rect.Right, Rect.Top);
MoveTo(Rect.Left, Rect.Bottom-1);
LineTo(Rect.Right, Rect.Bottom-1);
end else begin
Brush.Color := TStringGrid(Sender).Color;
FillRect(Rect);
end;
특정셀의 배경색을 바꿀려고 하는데, 아래방법으로 하면 배경색은 변경되는데 글자가 안보이내요. 어떻게 고쳐야 하나요. with schedule_grid do begin if (ARow = 5)and(ACol=2) then begin Canvas.Brush.Color := clYellow; // 배경색을...
구창민
•
2007.09.28 00:27
안녕하세요..
예전에 어딘가에서 받아두었는 내용인데 참고하세요..
DrawCell 이벤트에 코딩해보시면...
예전에 어딘가에서 받아두었는 내용인데 참고하세요..
DrawCell 이벤트에 코딩해보시면 되겠네요..
그럼 즐거운 프로그래밍 하시길~
var
SelectedBGColor : TColor; /// 선택된 셀 바탕색
SelectedLineColor: TColor; /// 선택된 셀 라인색
OldBrushColor : TColor; /// 사용할 컬러값들의 이전값을 저장해 놓는다.
OldPenColor : TColor;
OldFontColor : TColor;
begin
SelectedBGColor := $00FEEFEB;
SelectedLineColor := $00CABDAD;
with TStringGrid(Sender).Canvas do begin
OldBrushColor := Brush.Color; // 사용할 컬러값들의 이전값을 저장
OldPenColor := Pen.Color;
OldFontColor := Font.Color;
if state = [gdFixed] then begin // Fixed 일 경우 그리는
Brush.Color := TStringGrid(Sender).FixedColor;
FillRect(Rect);
Pen.Color := clBtnHighLight;
MoveTo(Rect.Left, Rect.Top);
LineTo(Rect.Right, Rect.Top);
MoveTo(Rect.Left, Rect.Top);
LineTo(Rect.Left, Rect.Bottom);
Pen.Color := clBtnShadow;
MoveTo(Rect.Right-1, Rect.Top);
LineTo(Rect.Right-1, Rect.Bottom);
MoveTo(Rect.Left, Rect.Bottom-1);
LineTo(Rect.Right, Rect.Bottom-1);
end else if gdSelected in State then begin // 선택된 셀인 경우
Brush.Color := SelectedBGColor; // 일단 바탕을 칠한다.
FillRect(Rect);
Pen.Color := SelectedLineColor;
if ACol = 0 then begin // 첫번째 컬럼일때 좌측에 선을 그린다.
MoveTo(Rect.Left, Rect.Top);
LineTo(Rect.Left, Rect.Bottom);
end;
if ACol = (TStringGrid(Sender).ColCount-1) then begin // 마지막 컬럼일때 우측에 선을 그린다.
MoveTo(Rect.Right-1, Rect.top);
LineTo(Rect.Right-1, Rect.Bottom);
end;
MoveTo(Rect.Left,Rect.Top); // 아래위로 선을 그린다.
LineTo(Rect.Right, Rect.Top);
MoveTo(Rect.Left, Rect.Bottom-1);
LineTo(Rect.Right, Rect.Bottom-1);
end else begin
Brush.Color := TStringGrid(Sender).Color;
FillRect(Rect);
end;
Font.Color := TStringGrid(Sender).Font.Color;
Font.Name := FontName;
TextOut(Rect.Left + 12, Rect.Top + 2, TStringGrid(Sender).Cells[ACol,ARow]);
Font.Color := OldFontColor; // 저장해 놓은 컬러값을 복원
Brush.Color := OldBrushColor;
Pen.Color := OldPenColor;
end;
end;