Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-05-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
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

Código Delphi [-]
 
Function ValidarCampo (Var CampoaValidar :Variant) : Boolean
Begin
  Result := CampoaValidar <> ''
End

Algo asi tendiendo en cuenta que el CampoaValidar podria ser cualquier cosa..

Mas o Menos lo Llamo Asi
Código Delphi [-]
 
procedure TfrmingresoComprobantesVariosd.edtDocumentoExit(Sender: TObject);
Begin
  if not ValidarBlanco (edtDocumento.Text) then
    edtDocumento.SetFocus
End

Pero me sale el siguiente Mensaje...

Cita:
[Pascal Error] frmIngresoComprobantesVariosd_f.pas(199): E2033 Types of actual and formal var parameters must be identical

lo que pretendo se puede hacer? o es que estoy hablando piedras

saludos
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #2  
Antiguo 06-05-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
mmm para que me funcione he tenido que crear una Variable de Tipo Variant

Código Delphi [-]
 
procedure TfrmingresoComprobantesVariosd.edtDocumentoExit(Sender: TObject);
Var _Doc1 : Variant;
begin
 _Doc1 := edtDocumento.Text;
  if not ValidarBlanco (_Doc1) then
    edtDocumento.SetFocus;
end;

esta bien asi? existe una mejor forma de hacerlo?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #3  
Antiguo 06-05-2011
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 oscarac.

A mi pareciera funcionarme bién de este modo también:
Código Delphi [-]
...
implementation

function TForm1.ValidarCampo(Campo: Variant): Boolean;
begin
  Result:= Campo <> '';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not ValidarCampo(Label1.Caption) then
   ShowMessage('campo vacio');
  if not ValidarCampo(Memo1.Text) then
   ShowMessage('campo vacío');
  if not ValidarCampo(Edit1.Text) then
   ShowMessage('campo vacío');
end;
Pero no sé si es lo que buscas...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 06-05-2011
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
Hizo pif! con un CheckBox, cuando me acordé de la función VarIsEmpty...

Creo que así te va a funcionar:
Código Delphi [-]
function TForm1.ValidarCampo(Campo: Variant): Boolean;
begin
  Result:= VarIsEmpty(Campo);
end;

Permite por ejemplo:
Código Delphi [-]
var
  v: Integer;
begin
  if not ValidarCampo(Edit1.Text) then
   ShowMessage('campo vacío');
  if not ValidarCampo(CheckBox1.Checked) then
   ShowMessage('no chequeado');
  if not ValidarCampo(v) then
    ShowMessage('sin valor');

También tenés la función VarIsNull que compara si el valor es Null.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 06-05-2011 a las 05:47:46.
Responder Con Cita
  #5  
Antiguo 06-05-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
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

Código Delphi [-]
 
Validaciones : array[1..6] of String = ('0','0','1','0','0','1')

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?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #6  
Antiguo 06-05-2011
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
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

Código Delphi [-]
function TForm1.ValidarCampo(AComponent: TComponent; Campo: Variant): Boolean;
begin
  Result:= True;
  if AComponent.Tag = 1 then  // 1 = valida
    Result:= VarIsEmpty(Campo);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not ValidarCampo(Edit1, Edit1.Text) then
   ShowMessage('campo vacío');
  if not ValidarCampo(CheckBox1,CheckBox1.Checked) then
   ShowMessage('no chequeado');
  if not ValidarCampo(Edit2, Edit1.Text) then
   ShowMessage('campo vacío');
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 06-05-2011 a las 06:33:33.
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
Rutina para imprimir con impresoras fiscales. tulio Impresión 11 19-10-2011 22:28:39
Rutina de verificacion de campos JosepMiquel Varios 3 08-12-2007 19:43:19
Rutina para DELPHI.NET O C# para .NET maco2007 Varios 4 06-11-2007 14:27:37
Rutina para niveles de acceso jandres Varios 2 07-10-2006 00:36:14
Como realizo una rutina o código para tabla josevaldez Conexión con bases de datos 1 08-07-2005 07:10:31


La franja horaria es GMT +2. Ahora son las 06:24:17.


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