안녕하세요...
여기서 도움을 많이 받는 heaven입니다.
제가 스트링그리드 사용중에 궁금한 것이 있어서요.
스트링그리드에서도 DBGrid처럼 열의 색상을 바꿀수 있나요?
DBGrid에서는 열별로 색상을 선택할 수 있잖아요...폰트의 속성도요..
그것을 어떻게 하는지 궁금합니다.
고정열과 행의 색상도 각각 바꿀수 있는지 궁금하네요.
프로퍼티에 있는것으로 바꿨더니..고정열과 고정행의 색상 모두 바뀌네요..
각각 다르게 할수 있는지 궁금합니다.
그리고, 스트링그리드의 내용을 한번에 Clear시킬수 있는지도 궁금합니다.
루프를 돌려서 처음부터 데이타를 삭제해줘야 하는지..아니면 한번에
내용을 클리어 시킬수 있는지도요...
미리, 답변에 감사드립니다.
그럼...행운이 있기를 바라며..
> 안녕하세요...
> 여기서 도움을 많이 받는 heaven입니다.
>
> 제가 스트링그리드 사용중에 궁금한 것이 있어서요.
> 스트링그리드에서도 DBGrid처럼 열의 색상을 바꿀수 있나요?
> DBGrid에서는 열별로 색상을 선택할 수 있잖아요...폰트의 속성도요..
> 그것을 어떻게 하는지 궁금합니다.
>
> 고정열과 행의 색상도 각각 바꿀수 있는지 궁금하네요.
> 프로퍼티에 있는것으로 바꿨더니..고정열과 고정행의 색상 모두 바뀌네요..
> 각각 다르게 할수 있는지 궁금합니다.
>
> 그리고, 스트링그리드의 내용을 한번에 Clear시킬수 있는지도 궁금합니다.
> 루프를 돌려서 처음부터 데이타를 삭제해줘야 하는지..아니면 한번에
> 내용을 클리어 시킬수 있는지도요...
>
> 미리, 답변에 감사드립니다.
> 그럼...행운이 있기를 바라며..
안녕하세요 김영대입니다
TStringGrid 도 TDBGrid 와 마찬가지로 OnDrawCell 에서 직접 그려주시면
됩니다.
procedure TMainForm.SG_bodyDrawCell(Sender: TObject; Col, Row: Integer;
Rect: TRect; State: TGridDrawState);
var
OldColor: TColor;
OldBrush: TBrush;
begin
with SG_body.Canvas do
begin
OldColor := Font.Color;
OldBrush := Brush;
if (gdFocused in State) or (gdSelected in State) then // focused cell
begin
Brush.Color := clHighlight;
Font.Color := clHighlightText;
end
else if (Row = 0) then // 제목
begin
Brush.Color := clBtnFace;
Font.Color := clBlack;
end
else if (Row > 0) and (Col = 0) and (State = []) then
begin
Brush.Color := $00E3FFFF;
Font.Color := clBlack;
end
else if Col in [1, 4, 7, 10, 13] then
begin
Brush.Color := P_body1.Color;
Font.Color := clBlack;
end
else if Col in [2, 5, 8, 11, 14] then
begin
Brush.Color := P_body2.Color;
Font.Color := clBlack;
end
else if Col in [3, 6, 9, 12, 15] then
begin
Brush.Color := P_body3.Color;
Font.Color := clBlack;
end;
FillRect(Rect);
TextOut(Rect.Left+2,Rect.Top+2, SG_body.Cells[Col, Row]);
Font.Color := OldColor;
Brush := OldBrush;
end;
end;
TStringGrid 의 ColCount, RowCount 만 줄인다고 해서 전에 있던 자료가
없어지는것은 아니므로 말씀하신데로 루프를 돌면서 각 Row의 Delete
메소드를 사용하여 직접 지워주셔야 합니다