Ver Mensaje Individual
  #7  
Antiguo 25-08-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Reputación: 24
Caro Va por buen camino
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;//variable global
.................
.................
procedure TForm1.StringGrid1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 //Obtenemos la columna y fila de la posición X y Y
 Coordenadas := StringGrid1.MouseCoord(X,Y);
end;

procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
 //Si nuestra columna es la 3 entonces, solo le permitimos escribir numeros y la coma.
 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
    //De esta forma podremos acceder a ImplaceEdit ya que esta protejido  
   TStringG = class(TStringGrid); 
  ..................
  .................

  StringGrid1.SetFocus;
  //Aprovechamos la columna y fila que tenemos en coordenadas
  StringGrid1.Col := Coordenadas.X; 
  StringGrid1.Row := Coordenadas.Y;
  //ponemos el cursor al final
  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
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita