Coloring rows in a dbgrid. lazarus / 31-LCL ---------------------------------------------------------------------- melwinek · 2020-05-17 19:03 I color rows with e.g. Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i procedure TForm1.RxDBGrid1PrepareCanvas(sender: TObject;  DataCol: Integer; Column: TColumn; AState: TGridDrawState);begin      if SQLQuery1['s']<>null then RxDBGrid1.Canvas.Brush.Color:=$0099FF99;end;           But how to make coloring of rows, based on the content of the cell of the selected row. e.g. Selected row has an "id" cell, and has an empty "masterid" cell. This row is not to be colored. I want to color the rows in which masterid=id (id not from this row only from the one I described above. ---------------------------------------------------------------------- Bart · 2020-05-17 19:18 Use OnPrepareCancas event? At leats that's how it works in a TStringGrid. Bart ---------------------------------------------------------------------- zoltanleo · 2020-05-17 23:31 Hi melwinek. Try this code Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i procedure TForm1.FormCreate(Sender: TObject);begin  MemDataset1.Active:= True;  MemDataset1.AppendRecord([1,12,'qqq']);  MemDataset1.AppendRecord([2,null,'www']);  MemDataset1.AppendRecord([3,3,'eee']);  MemDataset1.AppendRecord([4,null,'rrr']);  MemDataset1.AppendRecord([5,5,'ttt']);  MemDataset1.AppendRecord([5,7,'yyy']);   with DBGrid1 do  begin    Options:= Options + [dgRowHighlight];    Options:= Options + [dgRowSelect];  end;end; procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;  DataCol: Integer; Column: TColumn; State: TGridDrawState);begin  if gdSelected in State then    begin      if (Column.Field.DataSet.FieldByName('id').Value) =                    (Column.Field.DataSet.FieldByName('master_id').Value) then      begin        TDBGrid(Sender).Canvas.Brush.Color:= clYellow;        TDBGrid(Sender).Canvas.Font.Color:= clRed;        TDBGrid(Sender).Canvas.FillRect(Rect);      end;       if Column.Field.DataSet.FieldByName('master_id').IsNull then      begin      TDBGrid(Sender).Canvas.Brush.Color:= clDefault;        TDBGrid(Sender).Canvas.Font.Color:= clDefault;        TDBGrid(Sender).Canvas.FillRect(Rect);        if DataCol = 1 then //this is optional          TDBGrid(Sender).Canvas.TextOut(Rect.Left+2,Rect.Top+2,'Empty value');      end;    end;    TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);end;