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 25-10-2010
Ray16 Ray16 is offline
Registrado
NULL
 
Registrado: oct 2010
Posts: 4
Poder: 0
Ray16 Va por buen camino
Smile Sumar en Delphi Con ListBox

Saludos, soy nuevo aqui y estoy estudiando delphi en la universidad, y ya me empezaron a poner algunos ejercicios, espero poder contar con su ayuda, al igual yo poder ayudarlo en temas que domino, con algunas preguntas que hagna.

lo que quiero es una suma que cuando seleccione un items del list box me haga la suma, resta, multiplicacion , división, y me muestre el resultado en un text.

Este es mi diseño, solo falta aplicarle los codigo, me gustaria solo el ejemplo de la suma , de ahi haria los demas, ya tengo el codigo de salir y de limpiar

h t t p : / / content.screencast.com/users/Raniel/folders/Jing/media/8b9f4356-66ac-40bd-abe4-52b09a14f35e/2010-10-25_0008.png

pegar despues del h t t p : / /
sorry es que no me permitia poner la imagen ni enlace debe ser porq soy nuevo...
Un millon de Gracias
Responder Con Cita
  #2  
Antiguo 25-10-2010
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 Ray16.

Primero la ayuda que pediste:
Código Delphi [-]
procedure TForm1.ListBox1Click(Sender: TObject);
begin
  if (Edit1.Text > '') and (Edit2.Text > '') then // si los edits no estan vacíos
  case ListBox1.ItemIndex of
    0: Panel1.Caption:= FloatToStr(StrToFloat(Edit1.Text) + StrToFloat(Edit2.Text));
    1:; // Restar
    2:; // Multiplicar
    3:; // Dividir    Ojo con la division por cero !!
  end;
end;

Segundo este código no hace ninguna comprobación de conversión. O sea que si pones '15' en el primer edit
y 'abc' en el segundo, cuando realize la operación te dará error.
También podrias agregar un else poniendo un mensaje de advertencia si algún edit esta vacío... queda en tus manos.

Nota: Si alterás el orden del ListBox (suma,resta, multiplicación, división) respetá el nuevo órden en la evaluación del case/of,
si no podría suceder que 2 x 1 sea igual a 3...

Saludos.

Última edición por ecfisa fecha: 25-10-2010 a las 08:18:12.
Responder Con Cita
  #3  
Antiguo 25-10-2010
Ray16 Ray16 is offline
Registrado
NULL
 
Registrado: oct 2010
Posts: 4
Poder: 0
Ray16 Va por buen camino
Un millon de gracias, lo he hecho con numeros reales en vez de entero

lo tengo de esta forma y funcionan todas las operaciones...

if (Edit1.Text > '') and (Edit2.Text > '') then // Esto me limpiara los edit
case ListBox1.ItemIndex of
0: edit3.Text:= FloatToStr(StrToFloat(Edit1.Text)+StrToFloat(Edit2.Text));
1: edit3.Text:= FloatToStr(StrToFloat(Edit1.Text)-StrToFloat(Edit2.Text));
2: edit3.Text:= floattostr(StrToFloat(Edit1.Text)*StrToFloat(Edit2.Text));
3: ;


solo me falta la división cuando la pongo me da error, me lo marca en rojo
si lo ponga de esta forma : incluyendo la division...

if (Edit1.Text > '') and (Edit2.Text > '') then // Esto me limpiara los edit
case ListBox1.ItemIndex of
0: edit3.Text:= FloatToStr(StrToFloat(Edit1.Text)+StrToFloat(Edit2.Text));
1: edit3.Text:= FloatToStr(StrToFloat(Edit1.Text)-StrToFloat(Edit2.Text));
2: edit3.Text:= floattostr(StrToFloat(Edit1.Text)*StrToFloat(Edit2.Text));
3: edit3.Text:= floattostr(StrToFloat(Edit1.Text)/StrToFloat(Edit2.Text));

me marca esta ultima linea en rojo, y para la division por cero quiero validarlo de esta forma.

if (numero2=0) then
begin
ShowMessage('Error Al Dividir entre cero');

end
else
begin
hacer la division.

Gracias por la ayuda Ecfisa, pude hacer las operaciones, ahora solo falta la division...

Gracias!,
Responder Con Cita
  #4  
Antiguo 25-10-2010
Ray16 Ray16 is offline
Registrado
NULL
 
Registrado: oct 2010
Posts: 4
Poder: 0
Ray16 Va por buen camino
Cita:
Empezado por Ray16 Ver Mensaje
Un millon de gracias, lo he hecho con numeros reales en vez de entero

lo tengo de esta forma y funcionan todas las operaciones...

if (Edit1.Text > '') and (Edit2.Text > '') then // Esto me limpiara los edit
case ListBox1.ItemIndex of
0: edit3.Text:= FloatToStr(StrToFloat(Edit1.Text)+StrToFloat(Edit2.Text));
1: edit3.Text:= FloatToStr(StrToFloat(Edit1.Text)-StrToFloat(Edit2.Text));
2: edit3.Text:= floattostr(StrToFloat(Edit1.Text)*StrToFloat(Edit2.Text));
3: ;


solo me falta la división cuando la pongo me da error, me lo marca en rojo
si lo ponga de esta forma : incluyendo la division...

if (Edit1.Text > '') and (Edit2.Text > '') then // Esto me limpiara los edit
case ListBox1.ItemIndex of
0: edit3.Text:= FloatToStr(StrToFloat(Edit1.Text)+StrToFloat(Edit2.Text));
1: edit3.Text:= FloatToStr(StrToFloat(Edit1.Text)-StrToFloat(Edit2.Text));
2: edit3.Text:= floattostr(StrToFloat(Edit1.Text)*StrToFloat(Edit2.Text));
3: edit3.Text:= floattostr(StrToFloat(Edit1.Text)/StrToFloat(Edit2.Text));

me marca esta ultima linea en rojo, y para la division por cero quiero validarlo de esta forma.

if (numero2=0) then
begin
ShowMessage('Error Al Dividir entre cero');

end
else
begin
hacer la division.

Gracias por la ayuda Ecfisa, pude hacer las operaciones, ahora solo falta la division...

Gracias!,


Otra cosa lo hice con un ComboBox y me funciona, como aplicaria la validacion al dividir entre cero

procedure TForm1.ComboBox1Change(Sender: TObject);
begin


if (Edit1.Text > '') and (Edit2.Text > '') then // Esto me limpiara los edit
case ComboBox1.ItemIndex of
0: edit3.Text:= FloatToStr(StrToFloat(Edit1.Text)+StrToFloat(Edit2.Text));
1: edit3.Text:= FloatToStr(StrToFloat(Edit1.Text)-StrToFloat(Edit2.Text));
2: edit3.Text:= floattostr(StrToFloat(Edit1.Text)*StrToFloat(Edit2.Text));
3: edit3.Text:= floattostr(StrToFloat(Edit1.Text)/StrToFloat(Edit2.Text));


como adjuntaria ete codigo
if (numero2=0) then
begin
ShowMessage('Error Al Dividir entre cero');

end
else
begin
hacer division


Mil gracias
Responder Con Cita
  #5  
Antiguo 25-10-2010
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
Cita:
Empezado por Ray16 Ver Mensaje
Otra cosa lo hice con un ComboBox y me funciona, como aplicaria la validacion al dividir entre cero

como adjuntaria ete codigo
if (numero2=0) then
begin
ShowMessage('Error Al Dividir entre cero');

end
else
begin
hacer division


Mil gracias
Hola Ray.

Exacto, vos mismo te diste la respuesta, una forma de hacerlo podría ser:
Código Delphi [-]
3: if StrToFloat(Edit2.Text) > 0 then
      edit3.Text:= floattostr(StrToFloat(Edit1.Text)/StrToFloat(Edit2.Text))
    else
    begin
       ShowMessage('Error. División por cero');
       Edit2.SetFocus;
    end;

Es igual hacerlo con la comprobación inversa tál como lo pusiste en el pseudocódigo: if StrToFloat(Edit2.Text) = 0 then,
solamente cambia el órden de las acciones.


Saludos.

Última edición por ecfisa fecha: 25-10-2010 a las 17:18:32.
Responder Con Cita
  #6  
Antiguo 26-10-2010
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 nuevamente Ray16.

Errata:

En el post anterior, donde dice:
Código Delphi [-]
  if StrToFloat(Edit2.Text) > 0 then
Debe decir:
Código Delphi [-]
   if StrToFloat(Edit2.Text) <> 0 then

Saludos.
Responder Con Cita
  #7  
Antiguo 26-10-2010
Ray16 Ray16 is offline
Registrado
NULL
 
Registrado: oct 2010
Posts: 4
Poder: 0
Ray16 Va por buen camino
Un millon de Gracias, Los pude hacer y validar la división entre cero.
el profe solo pidio eso lo de validar en cero, lo de las letras no, pero ya lo
haré para conocimiento.

Gracias!

Éxitos, seguimos en contactos...
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
Sumar Dias a un fecha en Delphi 5 alejozd OOP 4 22-12-2010 09:04:07
Varias columnas en ListBox (DELPHI) JUANRS Internet 9 11-11-2008 22:43:25
agregar y/o eliminar items de un listbox a partir de otro listbox Goyo PHP 2 27-09-2007 16:46:30
Sumar elementos de un ListBox creus Varios 4 16-01-2007 19:34:05
Sumar dias a una fecha inicial en delphi bellota Varios 4 06-06-2006 16:42:40


La franja horaria es GMT +2. Ahora son las 13:17:29.


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