델파이

TDBGrid 행 번갈아 색깔 넣기 row alternate color

미스터몽키 2018. 2. 15. 14:26


procedure TForm1.DBGridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
var vRow: integer;
begin

  // 행번호 구하기
  vRow := TDBGrid(Sender).MouseCoord(Rect.Left, Rect.Top).Y;

 // 행마다 alternate 번갈아 컬러 넣기
  if vRow Mod 2 = 0 then
    TDBGrid(Sender).Canvas.Brush.Color := clInactiveBorder //clInfoBk;
  else
    TDBGrid(Sender).Canvas.Brush.Color  := clWindow;

//선택된 셀은 번갈아 번갈아 컬러 반영안되게
  if (gdFocused in State) or (gdSelected in State) then     
  begin
    TDBGrid(Sender).Canvas.Brush.Color := clHighlight;
    TDBGrid(Sender).Canvas.Font.Color  := clHighlightText;
  end;
  
  TDBGrid(Sender).Canvas.FillRect(Rect);
  TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);

...

cs