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 09-05-2017
Avatar de Soa Pelaez
Soa Pelaez Soa Pelaez is offline
Miembro
 
Registrado: nov 2015
Posts: 133
Poder: 9
Soa Pelaez Va por buen camino
Cita:
Empezado por movorack Ver Mensaje
¿Leíste lo del enlace?

El error es generado en la función Copy. Ya que la función requiere un texto con el que trabajar

Al hacer el cast

Código Delphi [-]
(Sender as TrDBEdit)

A la función le estás pasando es un objeto no el texto del objeto lo que obtendrías con

Código Delphi [-]
(Sender as TrDBEdit).text

Recomendación:

Ya que al parecer estás usando un control de base de datos, podrías validar el valor almacenado en el campo en lugar al del control.

Código Delphi [-]
QueryFieldavalidar.AsString
Si esa parte la entendí pero mi problema no es como tal el pasarle el objeto sea de un campo de base de datos o de un edit. El problema es que al invocar el procedimiento desde el evento keypress de un Edit al ingresar un punto no lo muestra y no realiza correctamente la validación del procedimiento que es modificar ese punto cambiarlo por una coma y visualizarlo en el edit con sus respectivos decimales.

Es que lo que tengo en el procedure funciona correctamente si es invocado directamente desde el keypress del edit, me explico sin invocar un procedimiento externo sino aplicar todo el código ahi, pero como lo necesito para varios edits por eso decidí volverlo un procedure pero al hacer esto como te comento no me realiza correctamente la validación.

Última edición por Soa Pelaez fecha: 09-05-2017 a las 19:57:18.
Responder Con Cita
  #2  
Antiguo 09-05-2017
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Soa Pelaez Ver Mensaje
El problema es que al invocar el procedimiento desde el evento keypress de un Edit
Pon el código con el que invocas al procedimiento.

LineComment Saludos
Responder Con Cita
  #3  
Antiguo 09-05-2017
Avatar de Soa Pelaez
Soa Pelaez Soa Pelaez is offline
Miembro
 
Registrado: nov 2015
Posts: 133
Poder: 9
Soa Pelaez Va por buen camino
Cita:
Empezado por roman Ver Mensaje
Pon el código con el que invocas al procedimiento.

LineComment Saludos
De esta manera lo invoco en el keypress.

Código Delphi [-]
procedure TFormulario.DBPorcentajeKeyPress(Sender: TObject; var Key: Char);
begin
  ValidarPorcentajeKeyPressEdit(Key,DBPorcentaje,Sender);
end;
Responder Con Cita
  #4  
Antiguo 09-05-2017
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Y ¿por qué manejas dos componentes TrDBEdit e el mismo procedimiento? ¿Cuál es la relación entre Edit y Sender?

Es que, de verdad, no se entiende lo que quieres hacer. Hablas de validar la entrada en un Edit pero en el procedimiento con el que quieres hacer la validación se involucra otro Edit.

Trata de ser más explícito y detallado.

LineComment Saludos
Responder Con Cita
  #5  
Antiguo 09-05-2017
Avatar de Soa Pelaez
Soa Pelaez Soa Pelaez is offline
Miembro
 
Registrado: nov 2015
Posts: 133
Poder: 9
Soa Pelaez Va por buen camino
Cita:
Empezado por roman Ver Mensaje
Y ¿por qué manejas dos componentes TrDBEdit e el mismo procedimiento? ¿Cuál es la relación entre Edit y Sender?

Es que, de verdad, no se entiende lo que quieres hacer. Hablas de validar la entrada en un Edit pero en el procedimiento con el que quieres hacer la validación se involucra otro Edit.

Trata de ser más explícito y detallado.

LineComment Saludos
No es que maneje otro edit, es que trato de enviar el TRDBEdit donde se entra el texto como parametro al procedure y asi quede general para todos los componentes TRDBEdit.
Responder Con Cita
  #6  
Antiguo 09-05-2017
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Entonces, tu procedimiento debe tener sólo dos parámetros:

Código Delphi [-]
procedure ValidarPorcentajeKeyPressEdit(Caracter: Char; Edit:TrDBEdit);
begin
...
end;

y lo invocas pasando el Sender AS TrDBEdit:

Código Delphi [-]
procedure TFormulario.DBPorcentajeKeyPress(Sender: TObject; var Key: Char);
begin
  ValidarPorcentajeKeyPressEdit(Key, Sender as TrDBEdit);
end;

y modifica tu procedimiento acordemente.

LineComment Saludos
Responder Con Cita
  #7  
Antiguo 09-05-2017
Avatar de Soa Pelaez
Soa Pelaez Soa Pelaez is offline
Miembro
 
Registrado: nov 2015
Posts: 133
Poder: 9
Soa Pelaez Va por buen camino
Cita:
Empezado por roman Ver Mensaje
Entonces, tu procedimiento debe tener sólo dos parámetros:

Código Delphi [-]
procedure ValidarPorcentajeKeyPressEdit(Caracter: Char; Edit:TrDBEdit);
begin
...
end;

y lo invocas pasando el Sender AS TrDBEdit:

Código Delphi [-]
procedure TFormulario.DBPorcentajeKeyPress(Sender: TObject; var Key: Char);
begin
  ValidarPorcentajeKeyPressEdit(Key, Sender as TrDBEdit);
end;

y modifica tu procedimiento acordemente.

LineComment Saludos
Lo aplique de esa manera, modifique el procedimiento y aun asi sigue sin realizar el cambio de punto a coma.
Responder Con Cita
  #8  
Antiguo 09-05-2017
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.
Cita:
Empezado por Soa Pelaez Ver Mensaje
...
Es que lo que tengo en el procedure funciona correctamente si es invocado directamente desde el keypress del edit, me explico sin invocar un procedimiento externo sino aplicar todo el código ahi, pero como lo necesito para varios edits por eso decidí volverlo un procedure pero al hacer esto como te comento no me realiza correctamente la validación.
¿ Y por que no asignas ese código (que funciona correctamente) al evento OnKeyPress de todos los componentes TrDBEdit en que lo necesites ?

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 09-05-2017
Avatar de Soa Pelaez
Soa Pelaez Soa Pelaez is offline
Miembro
 
Registrado: nov 2015
Posts: 133
Poder: 9
Soa Pelaez Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola.

¿ Y por que no asignas ese código (que funciona correctamente) al evento OnKeyPress de todos los componentes TrDBEdit en que lo necesites ?

Saludos
Porque de la manera en procedure lo puedo llamar de muchas partes (distintos formularios), sin realizar uses de unidades.
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
Uso del keypress en un edit snake25237 OOP 1 23-02-2011 15:30:43
evento keypress ronson Varios 40 04-01-2011 04:18:23
validar decimales con "coma" lucasarts_18 PHP 3 26-12-2008 01:41:50
teclas F# en keypress sargento elias OOP 3 08-10-2008 08:23:43
Llamar a evento Keypress edgusano .NET 1 30-11-2005 22:02:29


La franja horaria es GMT +2. Ahora son las 09:16:52.


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