Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   ¿Cómo validar campos? (https://www.clubdelphi.com/foros/showthread.php?t=80323)

eli02 18-09-2012 18:41:37

¿Cómo validar campos?
 
buen dia, me gustaria pedir su ayuda necesito validar los campos de un formulario y que me muestre un mensaje cuando estos campos esten vacios.
Les agradeceria su ayuda

Casimiro Notevi 18-09-2012 18:49:49

Hola, debes especificar un poquito más, ya que así tal y como lo dices te vale casi cualquier forma:

Código Delphi [-]
if edti1.text='' then
  showmessage('no has escrito nada');

Por cierto, el título: 'como validar campos' no es una pregunta ;)

newtron 18-09-2012 18:50:36

Hola.

Imagino que tendrás en el formulario un botón para aceptar los datos antes de continuar el proceso. En el caso de ser edits podrías hacer algo parecido a esto.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
f: Integer;
begin
  inherited;
  for f:=0 to ComponentCount-1 do begin
    if Components[f] is TEdit then begin
      if (Components[f] as TEdit).Text = '' then begin
        Showmessage('No se ha indicado el valor del campo');
        (Components[f] as TEdit).SetFocus;
        exit;
      end;
    end;
  end;
end;

Saludos

Edito: Se me ha adelantado Casimiro

roman 18-09-2012 18:57:28

En mi opinión, hay dos maneras "canónicas" de validar campos:

1. Campo por campo usando el evento OnValidateField de cada uno. Esta forma es útil si deseas impedir cambiar de campo antes de tener un dato válido.
2. Todos los campos juntos usando el evento BeforePost del DataSet asociado.

El uso de estos eventos es recomendado porque así no dependes de la forma en que se introduzcan los datos.

// Saludos

newtron 18-09-2012 19:23:28

Cita:

Empezado por roman (Mensaje 443450)
En mi opinión, hay dos maneras "canónicas" de validar campos:

1. Campo por campo usando el evento OnValidateField de cada uno. Esta forma es útil si deseas impedir cambiar de campo antes de tener un dato válido.

Pero esto te obliga a, en caso de querer cancelar el proceso, rellenar el campo en el que estés, ¿no?

roman 18-09-2012 19:26:50

Hace mucho que no uso esta forma pero creo que tienes razón, es un inconveniente de delphi, porque al oprimir el botón Cancelar, se pierde el foco del control que estuviera activo y eso dispara el evento OnValidateField.

Por otra parte, creo que estamos todos errados, ¿ya se fijaron en qué foro estamos? :rolleyes:

// Saludos

newtron 18-09-2012 19:31:18

Cita:

Empezado por roman (Mensaje 443452)
Por otra parte, creo que estamos todos errados, ¿ya se fijaron en qué foro estamos? :rolleyes:

:eek: ¡Fallo mío! jajajajajajajajaja

Sorry

roman 18-09-2012 19:37:15

Fue fallo de los tres, digo, por si eso te consuela :)

// Saludos

Casimiro Notevi 18-09-2012 19:58:56

Sí consuelo de tontos... :o:p:)

roman 18-09-2012 20:03:07

Hombre, no lo veas así. Tómalo como un destello curioso :)

// Saludos

Casimiro Notevi 18-09-2012 20:45:26

Cita:

Empezado por roman (Mensaje 443450)
2. Todos los campos juntos usando el evento BeforePost del DataSet asociado.

Esa es la que más me gusta, en delphi, claro.

roman 18-09-2012 21:23:51

Y bueno, contestando a eli02, yo diría que hay dos (*) validaciones en una aplicación web. Una es recomendable y la otra obligatoria. La primera es en el lado del cliente (el navegador) y se hace con javascript asignando una función al evento OnSubmit del formulario. Si el campo en cuestión está vacío, se usa l función alert para mostrar el mensaje y se devuelve false en el OnSubmit para evitar el envío de la informción.

La otra manera es del lado del servidor y es obligatoria porque no debe confiarse del uso de javascript ya que puede desactivarse. PHP no puede propiamente mandar un mensaje al navegador pero puede regresar a la página del formulario indicando que falta un valor. Esto podría hacerse, por ejemplo, usando json para "colocar" una vriable javascript que indique el error.

----------
(*) Con HTML5 bastaría poner el atributo required en el <input> para detectar los campos vacíos. Pero no creo que todos los navegadores lo soporten ya.


// Saludos


La franja horaria es GMT +2. Ahora son las 14:46:56.

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