Calcular una multiplicación a través de tres dbedit

Hermano tengo que decir que tus respuestas sobre la inserción de los datos en la base de datos fue excelente. Quisiera poder hacerte otra pregunta.
Necesito trabajar con decimales en una multiplicación se que los dbedit son .text tipos (string) y que se debe convertir cadena a numero y viceversa para poder trabajarlos y que se muestre el resultado.
Mi cuestión es la siguiente tengo que siguiente código:
// He colocado tres edits y en el ultimo es que se mostrara el resultado de la suma //cuando demos clic
var
N1, n2, suma: integer
Begin
suma:= strtoint(edit1.text) + strtoint (edit2.text);
edit3.text:= inttostr (suma);
end;
end.
El resultado se mostrara cuando doy un clic.
Disculpa que lo ilustre lo que pasa es que lo necesito para poder explicarte que es lo que necesito.
Se que dando clic se muestra el resultado, lo que pasa es que necesito que teniendo 4 dbedit el primero es precio (dbedit1), el segundo es descuento (dbedit2) el tercero es impuesto (dbedit3) y el ultimo es precio total (dbedit4) se realize la multiplicación de los tres primeros y se muestren en el cuarto (trabajando con decimales), para después insertar todos los datos en la base de datos que tengo.
Quisiera que me dijeras que función me permite hacer el calculo automáticamente sin tener que usar un botón solamente que vaya ingresando los datos.
De que tenga el momento te pegare el código que estoy utilizando para hacer los cálculos

1 Respuesta

Respuesta
1
Puedes hacer eso que quieres en los eventos de los edit.
En el evento OnChange te lo hará cada vez que cambie el valor en el edit, ya sea que agregues o borres un numero... el inconveniente es que lo hará muchas veces, cada vez que presiones una tecla agregando o quitando un numero...
O si prefieres lo puedes hacer en el evento OnExit de cada edit también, ahí lo hará hasta que salgas del edit, es decir, realizara la operación menos veces...
Para esto tendrás que validar cuando hagas la operación, para evitar errores...
Disculpa no haberte pegado el código que estoy utilizando más rapido lo que pasa es que no me encontraba en la casa y había dejado la pc. Mira este es el código que estoy utilizando, con el te voy a explicar mejor que es lo que quiero y así podrás explicarme que estoy haciendo mal, gracias por todo lo que me dijiste anterior.
var
precio, descuento, preciototal: currency;
const
impuesto:double= 1.6;
begin
precio:= strtofloat(edit1.text);
descuento:=strtofloat (edit3.text);
preciototal:= (precio*itbis*descuento);
edit4.text:= floattostr (precioTotal);
Realmente hay ciertos tipos en delhi que me confunden, yo no lo estoy trabajando primero en el dbedit sino que lo hice primero en con edits para ver si me salia bien, pero no he tenido los resultados esperados. Primero que todo tengo las variables precio (edit1), impuesto (edit2), descuento(edit3), y el preciototal(edit4), el impuesto lo he establecido como una constante porque quiero agregar un checkbox que lo habilite o lo deshabilite en la multiplicación debido a que no todos los productos llevan impuestos, pero como no me ha salido lo que quiero primero (que es poder mostrar y que se realicen las multiplicaciones) lo he estado pensando para después.
Mi problema actual es que quiero que cuando introduzca un valor en precio como por ejemplo 20 se marque 20.00 donde los ceros marcan los centavos pero con el código obligatoriamente tengo que marcar 20 porque sino me da error, ademas que cuando lo inserte necesito que se visualice al mismo tiempo en preciototal y no lo hace. Ademas lo mismo pasa cuando introduzco el descento solo me permite trabajar con números enteros y no con decimales. Se que estoy perdido y a lo mejor estoy pretendiendo demasiado, me podrías ayudar y aconsejar como podría hacerlo mejor (espero no haberte exigido mucho) (realmente me sentiría bien si me pudieras ayudar con lo que puedas). Gracias
No me dices donde es donde te marca el error...
var
precio, descuento, preciototal: currency;
const
impuesto:double= 1.6;
begin
precio:= strtofloat(edit1.text);
descuento:=strtofloat (edit3.text);
preciototal:= (precio*itbis*descuento);
edit4.text:= floattostr (precioTotal);
Para empezar, ¿qué es "itbis"? en precio total...
Claro que te debe dejar hacer las operaciones con decimales... y estas haciendo bien las conversiones... el código lo puedes poner en el evento OnChange de cada edit donde metes valores, para que así te lo vaya actualizando en lo demás...
También puedes hacerlo así:
edit4.text := floattostr(strtofloat(edit1.text) * strtofloat(edit3.text));
Disculpa hubo detalles que no explique, primero lo del itbis fue mi error realmente va (impuesto) que es la forma general que estoy haciendo, ya que lo de itbis es como un tipo de impuesto, y sobre el error, es que cuando marcos los numero si borro uno para escribir otro ahí me marca el error y me dice algo así como que el valor no es un tipo float válido o sea que cuando pongo impuesto en el edit y por alguna razón quiero poner otro numero y lo borro ahí es que me marca el error.
¿Y en que evento haces eso?
Es que tienes que validar que las variables tengan un valor realmente, de la forma:
if edit1.text '' then
  precio:= strtofloat(edit1.text)
else precio := 0;
Ok voy entendiendo, con lo que me has explicado he podido ir arreglando y creo que ya casi esta, en cuanto termine de probar te lo mostrare para que me des tu opinión, pero necesito terminar esta pregunta porque quiero hacerte otra, lo que voy a hacer es terminarla a ver si me ayudas con lo otro que estoy haciendo, creo que me has ayudado demasiado en esta y te agradezco, como te dije me has ayudado a aclarar las cosas, después si sigo y encuentro dificultades te volveré a preguntar sobre estar, realmente gracias. La calificare como bien por la ayuda brindada, y me disculpo si no me he podido explicar mejor dentro de las preguntas pero realmente gracias.
La próxima pregunta y disculpa la molestia es sobre un splash he intentado hacer uno, he más he leído varias cosas pero no he podido entender muy bien como hacerlo, espero que me puedas ayudar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas