Hola amigos foristas, tengo un StringGrid el cual 5 columnas y una de ellas es solo para datos numericos, La situasion es la siguiente:
Cuando el usuario esta editando la columna numerica y esta poniendo numeros reales; internamente en el evento OnSetEditText de StringGrid se va sumando la columna y mostrando en un edit; el problema es cuando en ves de poner el caracter coma "," pone un punto , entonces ahi se produce un error al convertir a Float esa celda, quise solucionarlo haciendo una conversion llamando a un metodo que yo mismo me hize;pero cuando lo llamo
la celda se seleciona con azul por defecto, y por tanto si el usuario sigue introduciedo decimales ,estos se reeplazan a los que antes habia escrito;
Lo que quiero es
la celda no se seleccione al al llamar a mi metodo,que internamente siga el cursor en donde corresponde.
Aqui pongo mi metodo que transforma un string que tiene punto(.) por otro string que tenga coma(,):
Código Delphi
[-]function TPrincipal.ToComaReal(s: String): String;var p:Smallint;
begin
p:=Pos('.',s);
if(p>0)then
begin
Delete(s,p,1);
Insert(',',s,p);
end;
result:=s;
end;
Y aqui el evento OnSetEditText:
procedure TPrincipal.tablaSetEditText(Sender: TObject; ACol, ARow: Integer;
const Value: String);
Begin
if (ACol=3)and (value<>'') then
begin
if(pos('.',value)>0)then
begin
tabla.Cells[ACol,ARow]:=ToComaReal(tabla.Cells[ACol,ARow]);
end;
end;
end;