Проблему точки/запятой (в смысле decimalseparator) можно ещё решить во время заполнения стрингрида:
Код:
...
if j=strngrd1.ColCount-1 then
begin
temp[pos('.',temp)]:=',';
strngrd1.Cells[j,i]:=temp;
end;
...
Вроде не должна работать procedure gr, уж больно в ней косяков много наблюдается, остаются переменные (напр. py, y0) без явного заполнения, получается что ей рисовать нечего, только по оси Х, да и while, судя по всему, не выполняется - глубже голова отказывается в дебри залазить, болит

Вот эту процедуру наверное лопатить и надо.