퀀텀 그리드 색칠 하기
퀀텀 그리드를 사용하면서 그리드에 색을 입히는 방법은 여러가지가 있다.
대표적으로 OnCustomDrawCell 이벤트를 이용하는 방법과 StyleRepository를 이용하는 방법이 있지만 OnCustomDrawCell 이벤트를 사용하는 방법이 무난하다.
OnCustomDrawCell이벤트는 GridView와 GridVeiw.Column 즉, 각 컬럼에 따로 따로 있지만 GridView에 있는 것이 좀더 포괄적을 사용이 된다.
GridView.OnCustomDrawCell에서는 인자로 AViewInfo: TcxGridTableDataCellViewInfo가 넘겨지게 되는데 이 색을 입힐때는 AViewInfo를 조건으로 이용하면 좋다.
AViewInfo는 현재 Draw되는 Cell의 정보를 가지게 된다.
ex)
if AViewInfo.Index = "색을 칠하려는 컬럼 Index" then
if AViewInfo.GridRecord.Values["조건 컬럼 Index"] = "조건" then
begin
ACanvas.Brush.Color := "원하는 색상"
ACanvas.Font.Color := "원하는 Font 색상"
end;
end;
if AViewInfo.GridRecord.Focused then
begin
ACanvas.Brush.Color := clHighLight;
ACanvas.Font.Color := clHighLightText;
end;
위 명령어 에서
- if AViewInfo.Index = "색을 칠하려는 컬럼 Index" then 는 특정 컬럼에만 색을 칠할때 이용하면 된다. 이 조건이 없을 경우 Record 전체가 되상이 된다.
- if AViewInfo.GridRecord.Values["조건 컬럼 Index"] = "조건" then 는 색을 칠하는 조건이 되는데 "조건 컬럼 Index"는 자신이 될수도 있고 그렇지 않을수도 있다. 즉, 동일 Record의 다른 Cell의 값을 참조 할 수 있다.
- if AViewInfo.GridRecord.Focused then 는 해당 그리드를 선택 하였을 때 즉, Recod에 포커스가 있을때만 동작 한다.