DevExpress

퀀텀 그리드 색칠 하기

Revers Tuna 2015. 12. 3. 11:41

퀀텀 그리드를 사용하면서 그리드에 색을 입히는 방법은 여러가지가 있다.

대표적으로 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에 포커스가 있을때만 동작 한다.