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 04-12-2008
Avatar de bigpeter80
bigpeter80 bigpeter80 is offline
Miembro
 
Registrado: nov 2008
Posts: 11
Poder: 0
bigpeter80 Va por buen camino
Cómo obligo el ingreso de datos a todos los dbedits de un formulario?

Hola amigos.... Necesito ayuda... Otra vez.... jeje

Mi problema es el siguiente: Tengo un formulario con 15 DBEdits, Quisiera saber cómo puedo hacer para obligar que se ingresen datos a todos...

He encontrado que con el evento OnKeyPress puedo lograr que se obligue la introducción de ciertos tipos de caracteres o números, por ejemplo:

Código Delphi [-]
procedure TbValAlimenticios.DBEdit2KeyPress(Sender: TObject; var Key: Char);
begin
  if not (key in ['0'..'9',',',#8]) then
    begin
      key:=#0;
      showmessage('Introduzca números')
    end
end;

Con esto logro que el usuario deba introducir números del 0 al 9 y la coma; pero debo hacerlo por cada DBEdit de mi formulario.

Lo que necesito saber, es Si existe algún método en el que al guardar me muestre un mensaje en el que me diga que no se han ingresado todos los datos y no permita guardar estos datos hasta que no se hayan completado todos los campos.....

Desde ya muchas gracias por las sugerencias....

Última edición por dec fecha: 04-12-2008 a las 18:19:09.
Responder Con Cita
  #2  
Antiguo 04-12-2008
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,

Un tema delicado, supongo, la entrada de datos en la aplicación. Por ejemplo, acaso no sea cuestión de validar sólo que existen datos, sino de que estos son válidos. Por no liar demasiado el asunto, sabe que el método que has copiado pueden compartirlo todos los "DBEdit", de modo que no tendrás que duplicarlo para cada uno de ellos.

Respecto de cuándo comprobar que todos los "DBEdit" están listos, no estoy muy puesto, y, tratándose de este tipo de controles, no me extrañaría que hubiera otras formas más elegantes de hacerlo. No obstante, suponiendo un botón que el usuario habrá de "pulsar" para guardar los datos, ese puede ser un buen momento para comprobar lo que quieres: el evento "OnClick" de dicho botón.

En ese punto puedes recorrer los "DBEdit" del formulario en cuestión (mediante la propiedad "Components" del formulario y otras como "ComponentCount" puedes hacer un "bucle" más o menos sencillamente) o puedes comprobarlos uno por uno. Sea como sea, igual otro compañero puede dar alguna otra idea menos rudimentaria, basada en las características "especiales" de los propios componentes "DBEdit", que, estoy seguro que alguna tendrán. O tal vez los correspondientes "DataSet" y componentes relacionados.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 04-12-2008
martinb martinb is offline
Miembro
 
Registrado: nov 2007
Posts: 19
Poder: 0
martinb Va por buen camino
Wink

Hola, mira si no entendi mal tu problema hace lo siguiente:

En la propiedad before post de la tabla donde queres guardar los datos hace una sentencia if

Código Delphi [-]
    
   If (ttablecampo1.isnull) or (ttablecampo2.isnull)or.......then
   begin
            showmesage('Complete todos los campos');
            abort
   end;

si queres detallar cuales campos quedaron sin completar tendrias que hacer un if por cada uno......

Espero te sirva.....

Saludos.....
Responder Con Cita
  #4  
Antiguo 04-12-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Puedes hacer una prueba sencilla.
Coloca 3 edit y un boton en un form y pones este codigo al evento onclick del boton:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  i, j:Integer;
  comp:TComponent;
begin
  for i := 1 to 3 do begin
    j := (i);
    comp := FindComponent('Edit' + IntToStr(j));
    If  TEdit(comp).Text = '' then
    begin
    showmessage('Falta llenar el edit'+IntToStr(j));
    end
    else
    // lo que sea
end;
end;
Corre el programa y deja un edit o varios en blanco.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 04-12-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Yo le agregaría la función Trim... no vaya siendo que el usuario ponga espacios...
Código Delphi [-]
 If Trim( TEdit(comp).Text) = '' then
__________________

Responder Con Cita
  #6  
Antiguo 04-12-2008
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,

Bueno, yo también quiero. Sobre todo para dejar claro que cuando antes hablaba de "Components" y "ComponentsCount", en realidad quería decir "Controls" y "ControlsCount". Por lo demás, el siguiente código intenta un objetivo muy parecido al que Caral ha escrito arriba:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
  errors: string;
const
  MSG_SEPARATOR = #13#13;
  EMPTY_EDIT_MSG = '%s edit is empty';
begin
  errors := '';
  for i := 0 to EditsPanel.ControlCount - 1 do
  begin
    if (EditsPanel.Controls[i] is TEdit) then
    begin
      if (Trim(TEdit(EditsPanel.Controls[i]).Text) = EmptyStr) then
      begin
        if (errors = EmptyStr) then begin
          errors := Format(EMPTY_EDIT_MSG,
           [TEdit(EditsPanel.Controls[i]).Name]);
        end else begin
          errors := errors + MSG_SEPARATOR + Format(
           EMPTY_EDIT_MSG, [TEdit(EditsPanel.Controls[i]).Name]);
        end;
      end;
    end;
  end;
  if (errors <> EmptyStr) then begin
    ShowMessage(errors);
  end else begin
    ShowMessage('All edits contain values');
  end;
end;
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #7  
Antiguo 04-12-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Muy cierto, bien pensado.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #8  
Antiguo 04-12-2008
Avatar de bigpeter80
bigpeter80 bigpeter80 is offline
Miembro
 
Registrado: nov 2008
Posts: 11
Poder: 0
bigpeter80 Va por buen camino
Bueno, como siempre agradezco mucho la rápida respuesta de todos y voy a ir probando las sugerencias dadas por todos, a ver si puedo lograr mi objetivo....
Responder Con Cita
  #9  
Antiguo 07-12-2008
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Puedes poner la propiedad Requiered del Field asociado al DBEdit a True, o bien por el inspector de objectos o bien :
Código Delphi [-]
DBEdit.Field:Required := True;
__________________
¿Microsoft? No, gracias..
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
Agregar Campo a ADOQuery para ingreso de datos mike_1979 SQL 4 21-08-2008 20:17:17
restringir ingreso de datos ... chileno Varios 0 09-02-2006 16:38:33
Ingreso de datos en campo de tabla? marceloalegre SQL 1 30-07-2005 05:52:53
Guardar datos leidos de dbedits en una tabla paradox vhirginia Tablas planas 4 15-04-2004 17:28:58
limpiar todos los valores del formulario cisterpe OOP 26 17-09-2003 13:53:53


La franja horaria es GMT +2. Ahora son las 10:49:33.


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