procedure TForm1.FormCreate(Sender: TObject);
begin
// Ceate stringlist which hold the stringgrid data entry.
FstrListUnique := TStringList.Create;
FstrListUnique.Sorted := true;
FstrListUnique.Duplicates := dupError;
FstrListDuplicates := TStringList.Create;
end;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; aCol, aRow: Integer;
aRect: TRect; aState: TGridDrawState);
var
_stringgrid : TStringGrid;
i, j, k : Integer;
begin
if sender is TStringGrid then begin
_stringgrid := TStringGrid(sender);
if FstrListDuplicates.Count > 0 then begin
for i := 0 to FstrListDuplicates.Count-1 do begin // Go through de stringlist with duplicates
for j := 0 to _stringgrid.RowCount-1 do begin // Go through the StringGrid rows
for k := 0 to _stringGrid.ColCount-1 do begin // Go through the StringGrid cols. (Not needed, there is only one data col)
if _stringGrid.Cells[k, j] = FstrListDuplicates[i] then begin
_stringGrid.Canvas.Brush.Color := clRed;
_stringGrid.Canvas.FillRect(_stringGrid.CellRect(k, j));
//_stringGrid.Canvas.TextOut(_stringGrid.CellRect(k, j).Left + 2, _stringGrid.CellRect(k, j).Top + 2, _stringGrid.Cells[k, j]);
_stringGrid.Canvas.TextOut(_stringGrid.CellRect(k, j).Left + 2, _stringGrid.CellRect(k, j).Top + 2, _stringGrid.Cells[k, j]);
end;
end;
end;
end;
end;
end;
end;
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
FstrListDuplicates.Free;
FstrListUnique.Free;
end;
procedure TForm1.StringGrid1EditingDone(Sender: TObject);
var
_stringGrid : TStringGrid;
i : Integer;
begin
if sender is TStringGrid then begin
_stringGrid := TStringGrid(sender);
FstrListUnique.Clear;
FstrListDuplicates.Clear;
for i := 0 to _stringGrid.RowCount-1 do begin
if _stringGrid.Cells[2,i] <> '' then begin;
try
FstrListUnique.Add(_stringGrid.Cells[2,i]);
except
on E : EStringListError do begin
FstrListDuplicates.Add(_stringGrid.Cells[2,i]);
end;
end;
end;
end;
end;
end;