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;