procedure TForm9.SgSort(StrGrid: TStringGrid; SortColumn: integer); //объявляется процедура, относящаяся к классу TForm9, под названием SgSort и принимающая на вход 2 параметра - StrGrid типа TStringGrid (сортируемая таблица) и SortColumn типа integer (сортируемый столбец)
function Uslovie(s2, s1: string): boolean; //в области видимости этой процедуры объявляется функция под названием Uslovie и принимающая на вход 2 параметра - s2 и s1 типа string
var vl1, vl2:Extended; //в области видимости этой функции объявляются 2 переменных - vl1 и vl2 типа Extended
begin //начало функции
if tryStrtoFloat(s1,vl1) and tryStrtoFloat(s2,vl2) then //если строки s1 и s2 можно перевести в действительные числа, поместив при этом результат в переменные vl1 и vl2, то...
Result:= vl1 > vl2 else Result:= s1 > s2; //... возвращаем результат сравнения чисел, иначе возвращаем результат сравнения строк
end; //конец функции
var i, j, k: integer; //в области видимости процедуры объявляются 3 переменных i, j и k типа integer...
sTemp: string; //...и еще 1 переменная sTemp типа string
begin //начало процедуры
with StrGrid do //дальнейшие имена переменных, если этих переменных не существует, компилятор будет пытаться идентифицировать как свойства таблицы StrGrid
for i := FixedRows to RowCount-2 do //цикл с изменением переменной i от номера первой "нефикисированной" строки до номера предпоследней строки
for j := i + 1 to RowCount-1 do //цикл, вложенный в предыдущий, с изменением переменной j от значения переменной i до номера последней строки
if Uslovie(Cells[SortColumn, i], Cells[SortColumn, j]) then //происходит вызов функции Uslovie, которая, как было разобрано, возвращает результат сравнения двух переданных в нее строк (или чисел, преобразованных из этих строк, при возможности такого преобразования); в функцию передается содержимое ячеек таблицы из сортируемого столбца с номером строк i и j соответственно; если первая строка (или преобразованное из нее число) меньше второй строки (или преобразованного из нее числа), то выполняется код до поставленного мною знака %
for k := FixedCols to ColCount-1 do //цикл с изменением переменной k от номера первого "нефикисированного" столбца до номера последнего столбца
begin //начало цикла
sTemp:= Cells[k, i]; //в переменную sTemp записывается содержимое ячейки из столбца k, строки i
Cells[k, i]:= Cells[k, j]; //в ячейку в столбце k, строке i записывается содержимое ячейки из столбца k, строки j
Cells[k, j]:= sTemp; //в ячейку в столбце k, строке i записывается значение переменной sTemp
end; //конец цикла
// %
end; //конец процедуры