Check out the source and you can easily write your own version (a quick example code):
uses
System.RTLConsts;
type
TMyStringList = class(TStringList)
public
function AddObject(const S: string; AObject: TObject): Integer; override;
end;
function TMyStringList.AddObject(const S: string; AObject: TObject): Integer;
begin
if sorted then
result:=inherited AddObject(S, AObject)
else
begin
result:=IndexOf(s);
if (result=-1) then
begin
result:=count;
InsertObject(result, S, AObject)
end
else
begin
case Duplicates of
dupIgnore: Exit;
dupError: Error(@SDuplicateString, 0);
dupAccept: begin
result:=count;
InsertObject(result, S, AObject);
end;
end;
end;
end;
end;