вот надыбал!
самое то что нужно.
спасибо всем кто мне помогал! отдельное спасибо lmikle
Код:
function Handling ( aStr : String ) : String ;
begin
aStr := TrimLeft(Astr);
if Pos('ООО "',aStr) = 1 then aStr := copy(aStr,6,Length(aStr)-5); // задаем исключения
if Pos('ЗАО "',aStr) = 1 then aStr := copy(aStr,6,Length(aStr)-5);
if Pos('ИП ',aStr) = 1 then aStr := copy(aStr,4,Length(aStr)-3);
Result := TrimLeft(aStr);
end ;
procedure SortStringGrid(var GenStrGrid: TStringGrid; ThatCol: Integer);
const
TheSeparator = '@';
var
CountItem, I, J, K, ThePosition: integer;
MyList: TStringList;
MyString, TempString: string;
begin
CountItem := GenStrGrid.RowCount;
MyList := TStringList.Create;
MyList.Sorted := False;
try
begin
for I := 1 to (CountItem - 1) do
MyList.Add( Handling(GenStrGrid.Rows[i].Strings[ThatCol]) + TheSeparator +
GenStrGrid.Rows[i].Text);
Mylist.Sort;
for K := 1 to Mylist.Count do
begin
MyString := MyList.Strings[(K - 1)];
ThePosition := Pos(TheSeparator, MyString);
TempString := '';
TempString := Copy(MyString, (ThePosition + 1), Length(MyString));
MyList.Strings[(K - 1)] := '';
MyList.Strings[(K - 1)] := TempString;
end;
for J := 1 to (CountItem - 1) do
GenStrGrid.Rows[J].Text := MyList.Strings[(J - 1)];
end;
finally
MyList.Free;
end;
end;
procedure TForm1.ToolButton17Click(Sender: TObject);
begin
SortStringGrid(StringGrid1, 0);
end;
оказывается не так страшен черт, как рисуют.
выложу исходник может кому-нибудь поможет.
в нем загрузка,сохранение,вставка и удаление строк, и конечно же сортировка с исключениями.