Ver Mensaje Individual
  #1  
Antiguo 08-04-2015
Isprago94 Isprago94 is offline
Registrado
NULL
 
Registrado: abr 2015
Posts: 2
Reputación: 0
Isprago94 Va por buen camino
Post Detectar texto seleccionado en StringGrid

Bueno, soy muy novato en esto, de hecho solo llevo dos semanas programando en Delphi.

Mi duda es simple:

Tengo una aplicación con un StringGrid construido a través de un ADOQuery. La cosa es que en el se muestran nombres y telefonos.
Funciona todo perfectamente, pero estoy intentando meter un filtro y no puedo.

El Código que tengo es este:

Código Delphi [-]
procedure TForm33.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
//Si la columna que vamos a editar es la 2, aplicamos filtro numerico.
if editingX=2 then
 if (not (Key in [#8, '0'..'9'])) OR (( length(StringGrid1.Cells[editingX,editingY]) = 10 )AND( not (Key in [#8]) ))  then begin
    // Ignoramos la tecla pulsada.
    Key := #0;
  end;
end;

Osea, en la columna de teléfonos solo puedo borrar o escribir números. Se ignora la tecla si no es un numero, o si la longitud del campo es la máxima y la tecla que se pulsa no es la de borrar.
Hasta ahora puedo:
-Escribir 10 numeros.
-Borrar los numeros en cualquier momento (Da igual la cantidad de números, 1 o 10).

Pero no puedo realizar lo siguiente:
-Reemplazar los numeros.

Es decir. Cuando selecciono la celda, automáticamente se selecciona todo el contenido (los diez números). Puedo borrarlos con la tecla borrar, pero si pulso otro número, al ya tener los 10 del total, no hace nada (ignora la pulsación). Mi intención es detectar la cantidad de caracteres seleccionados por el puntero del ratón al entrar en la celda.

Si la cantidad es 10, me permitirá que, al pulsar un número, se sobreescriban el resto, que es lo que no puedo hacer por ahora.

Un saludete.
Responder Con Cita