Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-06-2014
Jovalca Jovalca is offline
Miembro
NULL
 
Registrado: sep 2013
Ubicación: Madrid - España
Posts: 30
Poder: 0
Jovalca Va por buen camino
Deshabilitar Drag and Drop de TEdit

Buenas Tardes Chicos.

Primero y como siempre, gracias por tomaros la molestia de dedicar 5 minutos a este tema.

Tengo un TEdit, el cual tengo controlado en OnKeyPress que solo se introduzcan números y una coma, ya que posteriormente este valor es sumado a otros tantos y sólo puede contener un valor numérico. Para evitar la acción de pegar, por si el contenido del portapapeles no es numerico, he deshabilitado con OnKeyDown las teclas Crtl+V, es decir, la acción de pegar. Ahora se me presenta otro problema, el drag&drop, porque si alguien arrastra un contenido no numerico a este edit, me lanza el error de que no es Float, ya que la suma se hace en el evento OnEditingDone.

He probado a poner Edit1.Clear en los eventos OnStartDrag, OnEndDrag, OnDragDrop... pero sigue aceptando el contenido arrastrado.

Hay alguna manera de controlar esto o deshabilitarlo de este edit o directamente del formulario entero?

Mil gracias por vuestra siempre útil ayuda.
Un abrazo.
Responder Con Cita
  #2  
Antiguo 20-06-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Jovalca.

Tal vez esté interpretando mal la situación, pero ¿ No te sirve usar el evento OnDragOver del TEdit ?
Código Delphi [-]
procedure TForm1.Edit1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  Accept:= False;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 22-06-2014
Jovalca Jovalca is offline
Miembro
NULL
 
Registrado: sep 2013
Ubicación: Madrid - España
Posts: 30
Poder: 0
Jovalca Va por buen camino
Hola de nuevo ecfisa.

No, eso también lo probé y no funciona, sigue aceptando arrastrar el contenidos. He pensado que es posible que el error venga de mi sistema operativo aunque no puedo estar seguro.

Se me ha ocurrido que quizá podría controlarlo, ya que no puedo con esos eventos, con el evento OnChange, hacer de algún modo que al cambiar el contenido del Edit, si detecta que no son números, comas y puntos, se borre el edit. Esto se podría hacer?

Gracias y Saludos.
Responder Con Cita
  #4  
Antiguo 22-06-2014
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

¿Por qué no usas un "SpinEdit"? Este componente es similar a un "TEdit" pero su contenido ha de ser numérico. Tal vez incluso algún otro componente que no recuerdo ahora mismo hace lo mismo. Incluso el "TEdit" podría tener alguna propiedad de tipo "máscara" para que sólo admita números, digo, sin necesidad de codificar nada.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 22-06-2014
Jovalca Jovalca is offline
Miembro
NULL
 
Registrado: sep 2013
Ubicación: Madrid - España
Posts: 30
Poder: 0
Jovalca Va por buen camino
Gracias por vuestras respuestas.

Conozco el componente, pero ya tengo la aplicación casi terminada y el reemplazar ahora todos los edit con estas características sería una locura. Para próximas tomo nota.
Para hacer lo que comentaba, si al cambiar detecta texto en vez de numero, que vacíe el tedio tengo algo como esto.

Código:
 if ( StrScan('0123456789,.') = nil ) then
Edit1.Clear;
Pero no compila, es evidente que no esta bien, que estoy poniendo mal?

Gracias de nuevo y un saludo.
Responder Con Cita
  #6  
Antiguo 22-06-2014
adrall adrall is offline
Miembro
 
Registrado: ene 2007
Posts: 94
Poder: 18
adrall Va por buen camino
Yo creo que te falta un parametro en el StrScan o bien la comillas estan mal puestas:

Código Delphi [-]
function StrScan ( const Characters : PAnsiChar; SearchChar : Char ) : PAnsiChar;

Deberias poner
Código Delphi [-]
if ( StrScan('0123456789,.','el numero o caracter que sea') = nil ) then
Edit1.Clear;

Saludos

Última edición por adrall fecha: 22-06-2014 a las 19:09:51.
Responder Con Cita
  #7  
Antiguo 22-06-2014
adrall adrall is offline
Miembro
 
Registrado: ene 2007
Posts: 94
Poder: 18
adrall Va por buen camino
Has probado las funciones TryStrToFloat... TryStrToInt... TryStrToDate... ? Las puedes usar en el OnExit del TEdit para comprobar la validez del valor introducido:

Código Delphi [-]
   if not TryStrToFloat(Text, fFloatVar) then
      TEdit.SetFocus;
      end;

Este ejemplo impediría salir del TEdit si el valor no es correcto, aunque lo puedes utilizar de muchas formas.

Saludos

Última edición por adrall fecha: 22-06-2014 a las 19:22:43.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
drag and drop TLabel a TEdit Colifo_ Varios 2 12-10-2010 05:28:53
Drag and Drop... dvlt .NET 0 07-02-2008 09:42:59
Drag & Drop DanForever Varios 2 01-06-2006 14:24:25
Drag & Drop Tedit? Carlos Arevalo Varios 3 08-11-2003 17:02:57
Drag&Drop xflo Lazarus, FreePascal, Kylix, etc. 0 13-10-2003 19:31:22


La franja horaria es GMT +2. Ahora son las 12:58:58.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi