Hola de nuevo, primero para mi sería mucho mejor que controlaras en el momento que escribe, en vez de mostrale un mensaje que ha escrito mal, para ello puedes hacerlo de esta forma.
Código Delphi
[-]
Coordenadas : TGridCoord;.................
.................
procedure TForm1.StringGrid1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Coordenadas := StringGrid1.MouseCoord(X,Y);
end;
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if Coordenadas.X=3 then
begin
if not( key in ['0'..'9',',',#8]) then
key := #0;
end;
end;
Ahora para que el cursor se vaya al final de todo lo que se ha escrito en esa celda se puede usar SelStart y SelLength, según esta pagina
http://www.swissdelphicenter.ch/torr...ode.php?id=349 , se puede usar la propiedad ImplaceEditor del StringGrid. Mas o menos quedaría asi el codigo:
Código Delphi
[-]
type
TStringG = class(TStringGrid);
..................
.................
StringGrid1.SetFocus;
StringGrid1.Col := Coordenadas.X;
StringGrid1.Row := Coordenadas.Y;
TStringG(StringGrid1).InPlaceEditor.SelStart := TStringG(StringGrid1).InPlaceEditor.SelLength;
Para reemplazar el punto por la coma, sería mejor que utilizaras la función StringReplace, como te dice el amigo Coso.
Saluditos