![]() |
Rutina para Validar Campos
Buenas Noches
como dice el titulo, pretendo hacer un procedimiento donde como parametro coloque el "campo" o una variable la cual no debe estar vacia... la duda que tengo es que como puede ser "multivariable" no se como definirla Ejemplo
Algo asi tendiendo en cuenta que el CampoaValidar podria ser cualquier cosa.. Mas o Menos lo Llamo Asi
Pero me sale el siguiente Mensaje... Cita:
lo que pretendo se puede hacer? o es que estoy hablando piedras saludos |
mmm para que me funcione he tenido que crear una Variable de Tipo Variant
esta bien asi? existe una mejor forma de hacerlo? |
Hola oscarac.
A mi pareciera funcionarme bién de este modo también: Pero no sé si es lo que buscas... Saludos. |
Hizo pif! con un CheckBox, cuando me acordé de la función VarIsEmpty...
Creo que así te va a funcionar:
Permite por ejemplo:
También tenés la función VarIsNull que compara si el valor es Null. Saludos. |
funciona a la perfeccion... parece que ya voy aprendiendo porque al menos la idea la tenia....
pero me salta otra idea y a la vez pregunta como evitar colocar ese codigo en cada evento OnExit del campo o edit ? si eso se pudiera hacer (evitar colocar el codigo,, crear un componente que me valide todos los edits o dbedits que tenga el form), como poder hacer para que solo me valide algunos edits y otros edits puedan quedar en blanco la idea que se me ocurre es crear un arrar y pasarlo como parametro algo asi
entonces que solo se validen los que tienen '1' y no '0', pero como saber que "numero" de objeto tiene el foco en ese momento para poder compararlo con el arrar se entiende? |
Te entiendo. Podés utilizar la propiedad Tag para ese efecto, pero tendrías que pasar como parámetros el componente y el campo.
Por ejemplo, si queres que no se valide el primer componente harías: Edit1.Tag=0, CheckBox1.Tag=1 y Edit2.Tag=1
Saludos. |
y como haria para no colocar el codigo en cada onExit?
|
Realmente no veo la forma, quizá exista una manera pero al menos yo, no la sé.
Lo único que se me ocurre, para reducir la taréa, es que recorras los componentes (Components[n] o Controls[n]) y asignes el evento en una sola pasada. Saludos. |
has visto el componente ScreencolorCenter? que esta en el FTP?
lo que hace eso es pintar de un color cuando entra el foco al edit y cuando sale del edit... entonces tenia la idea de hacer algo parecido pero que cuando salga del edit me valide el campo vacio o no (teniendo en cuenta el tema del tag o del array o de algun artificio que me digas q edits si y que edits no se validan) |
Cita:
|
Hola oscarac.
Limitándome a los componentes estandard de Delphi, estuve probando a ver si le encontraba la vuelta de evitar el evento OnExit con la propiedad ActiveControl, GetPropInfo y GetPropValue. Y si bíen evalúa ,lo hace al ingreso del control y no a la salida, y ya estoy medio dormido para seguir probando... De todas formas tendrías que reescribir código y no es lo que buscas según leo en uno de tus últimos mensajes. Creo que crearte o derivar un componente que evalue el valor del campo en el evento OnExit va a ser la opción más sencilla. Pero no te extrañe que mañana encuentres respuesta, hay muchísimos que de este tema saben mas que yo. Un saludo. |
Yo recorrería todos los campos si está en modo edición y por ejemplo, poner el icono de una alerta junto al db/edit que es requerido.
Creo recordar el dataset tiene el evento OnValidate, que es para eso. No lo hagas en el OnExit, porque el control actual no se validará en caso de que uses SpeedButtons. |
debo insistir con el tema....
asi como eta el componente ScreenColorCenter (en el FTP) tambien hay otro componente que solo lo cococas en el form y te cambia el tab x enter algo asi se podria hacer para validar que el campo no este vacio? |
Hola.
Yo pienso que las validaciones para campos vacíos deberías de hacerlas al pulsar el botón de grabar no en el exit del campo puesto que de esa manera podrías recorrer todos los campos sin problemas rellenandolos según te vaya interesando y finalmente pulsar en grabar. A mi particularmente se me hace muy engorroso que al coger el foco un campo no pueda salir sin rellenarlo, puedo querer rellenarlo posteriormente y antes rellenar otro distinto. Saludos |
Hola Oscarac, no se si te valdrá, pero en el Ftp del Club tienes dos componentes para campos Edits y DbEdits, son el EditDefault y DbeditDefault, si miras la opción TexDefault, si el campo lo dejas en blanco se rellena con este texto, te serviría para campos que no pueden ser Null y como sistema de ahorro en el Trabajo, te pongo una comparación que lo entiendas, en el Campo País de tu aplicación (he visto que eres De Perú) sería generalmente TextDefault:=Perú, entonces simplemente si no es otro país el dato no se rellena se pasa al siguiente y automáticamente se rellena con Perú.
Ten en cuenta la opción Types que contiene los siguientes tipos: XDate---------------------Para Fechas XMail----------------------Para email XIP-----------------------Para IP XMoney-------------------Número Realeso Double con Formato Moneda XNumber------------------Números Entero XNumberFormat-----------Números Enteros con formato XPhone-------------------Teléfono XPor----------------------Porcentaje XReal---------------------Número Reales o Double XText--------------------Para Texto XTime--------------------Para Fecha Se que tiene otras muchas Funciones, pero podrás mirarlas mejor en el pdf que hay adjunto en el zip que contiene los archivos pas. |
La franja horaria es GMT +2. Ahora son las 08:34:34. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi