Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   como detectar edit vacio y no hacer nada? (https://www.clubdelphi.com/foros/showthread.php?t=69022)

Lutmak 21-07-2010 10:02:11

como detectar edit vacio y no hacer nada?
 
Hola primero que nada gracias por entrar a tratar de ayudarme de nuevo.
Bueno pues veran deje lo poco que sabia de delphi por un tiempo asi que ahora lo poco que sabia se me olvido [que no era mucho pero bueno....]

bien vamos al punto veran necesito detectar un edit vacio en una operacion
es decir si tengo un edit1, edit2 y un button1 hacer que si detecta que el edit1 no tiene nada es decir que este en blanco no aga nada [cancele la operacion] y muestre un mensaje en pantalla como lo ago?
anterior mente me dijeron como hacer que si no tenia ciertos caracteres mandara un beep :P pero esto no tengo idea como hacerlo espero me puedan ayudar.
Hasta ahora llevo esto:

Código:

procedure TForm1.Calcular1Click(Sender: TObject);
begin
if Trim(edit1.text) = '' then
//aqui no se orden iria :S
end;


de antemano gracias

mcs 21-07-2010 10:20:21

Es muy simple, hazlo al revés.

En vez de
Código:

procedure TForm1.CalcularClick(Sender: TObject);
begin
  if Edit1.text='' then
  // no hacer nada
end;

lo que puedes hacer es:
Código:

procedure TForm1.CalcularClick(Sender: TObject);
begin
  if not Edit1.text='' then
  // hacer lo que quieras
end;

Ah, yo añadiría un trim al Edit1, para que quitase los espacios en blanco de delante y detrás:
Código:

procedure TForm1.CalcularClick(Sender: TObject);
 begin
  if not Trim(Edit1.text)='' then
  // hacer lo que quieras
 end;

Así, si lo único que hay en Edit1 es una cadena de espacios en blanco, tampoco hará nada.

Saludos,

Marc

cloayza 21-07-2010 17:18:54

Otra forma...

Código Delphi [-]
procedure TForm1.CalcularClick(Sender: TObject);
 begin
   if Edit1.GetTextLen>0 then
   // hacer lo que quieras
 end;

Saludos

Lutmak 21-07-2010 19:47:56

Bueno primero que nada les doy las gracias por la ayuda pero lo que no me queda claro es como cancelar que aga la operacion osea que el edit1+edit2 no pase el resultado al label1 si detecta que esta vacio un campo eso es lo que me falta espero me puedan ayudar a lo que me refiero es que orden iria en
// hacer lo que quieras, aqui es donde se da la orden de no hacer nada pero ¿como lo ago?

de antemano gracias

ecfisa 21-07-2010 20:00:55

Hola Lutmak.

Si no te entiendo mal, lo que queres es que, si el Edit1 está vació no se complete la operación de asignar la concatenación a Label1, no ?

Si es así, sería:
Código:

procedure TForm1.Calcular1Click(Sender: TObject);
begin
  if Edit1.Text > '' then
    Label1.Caption := Edit1.Text + Edit2.Text;
end;

Si deseas que no se realize la asignación si cualquiera de los Edit's está vacío, sería:
Código:

procedure TForm1.Calcular1Click(Sender: TObject);
begin
  if (Edit1.Text > '') and (Edit2.Text > '') then
    Label1.Caption := Edit1.Text + Edit2.Text;
end;

Espero haberte entendido.

Saludos.

Lutmak 23-07-2010 03:19:35

muchas gracias a todos encontre la solocion a mi problema con ayuda de ustedes!
gracias

aqui dejo el code por si alguien mas en algun futuro la nesesitara..
Código:

procedure TForm1.Button1Click(Sender: TObject);
begin
 if edit1.text ='' then
 begin
  beep;
  statictext1.Caption :=#0;
  showmessage ('ingrese un valor valido');
 end else
 if edit2.text ='' then
 begin
  beep;
  statictext1.Caption :=#0;
  showmessage ('ingrese un valor valido');
 end else

 statictext1.Caption :=floattostr ( strtofloat (edit1.text)+ strtofloat (edit2.text));

end;
end.


Caral 23-07-2010 03:25:09

Hola
Código Delphi [-]
uses MMSystem;

procedure TForm1.Button1Click(Sender: TObject);
begin
 if edit1.text ='' then
 begin
   sndPlaySound('C:\Windows\Media\windaVinciClose.wav',
  SND_NODEFAULT Or SND_ASYNC Or SND_LOOP);
   statictext1.Caption :=#0;
   showmessage ('ingrese un valor valido');
 end else
 if edit2.text ='' then
 begin
   sndPlaySound('C:\Windows\Media\windaVinciClose.wav',
  SND_NODEFAULT Or SND_ASYNC Or SND_LOOP);
   statictext1.Caption :=#0;
   showmessage ('ingrese un valor valido');
 end else

 statictext1.Caption :=floattostr ( strtofloat (edit1.text)+ strtofloat (edit2.text));

end;
end.
Saludos

Jac fcc 23-07-2010 16:49:20

yo agregaría al codigo de Caral el trim usado por mcs.
Código Delphi [-]
if Trim(edit1.text)='' then
...
 if Trim(edit2.text)='' then
...

pues si el usuario se le ocurre oprimir la barra espaciadora,
no se cumple la igualdad.
Incluso el usar GetTextLen no se cumpliría,
pues se tendría longitud uno, dos, ...(por cada espacio)
aunque sean espacios blancos. :p


La franja horaria es GMT +2. Ahora son las 22:29:48.

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