PDA

Ver la Versión Completa : Solo ejecutar un procedimiento cuando solo la ventana esta activa


feliz-58
09-08-2013, 21:30:46
Buenas tardes club, espero que estén bien,

en esta ocasión me dirijo a ustedes con la siguiente intención:

tengo tres Dbedit de los cuales son uno de Cantidad, precio unitario, Valor total.

Puse el determinado codigo, en el evento Onchange del dbedit "Precio unitario" para que los valores se vallan calculando automaticamente.

Pero el asunto es que como todos saben al ejecutarse el programa los edits se autollenan y da error.
tambien pasa cuando insertas la tabla, al "Cambiar de contenido" y quedarse vacio, se ejecuta el codigo y al estar vacios los edits da error.

tienen alguna idea? (quiero evitar el uso de botones para calcular, y que se haga automaticamente luego de digitar el precio unitario)

saludos!

Caminante
09-08-2013, 22:07:41
Bueno sin ver el codigo podria sugerirte usar el evento onexit en vez de onchange.

Espero te sea util

Saludos.

feliz-58
10-08-2013, 05:12:34
De la forma que dices lo probé, y funciona, pero mi intención principal es que se haga en tiempo real.

El codigo es el siguiente


var
a,b,c : real;

begin
a:=strtofloat(dbedit9.Text);
b:=Strtofloat(dbedit11.Text);
c:=a*b;
dbedit12.Text:=floattostr(C);
end;

Caminante
10-08-2013, 07:11:31
Pensandolo mejor porque no creas un campo calculado. Asi el calculo se actualizara automaticamente al modificar algun dbedit.

Chris
10-08-2013, 19:39:04
Lo importante es saber el tipo de error que tu aplicación está presentando. Como no lo has dicho, vamos a suponer que es EDatabaseError. Ese tipo de error usaré para el siguiente código de ejemplo. Cambialo con respecto al tipo de error que tengas:


var
a,b,c : real;

begin
try
a:=strtofloat(dbedit9.Text);
b:=Strtofloat(dbedit11.Text);
c:=a*b;
dbedit12.Text:=floattostr(C);

// cambia EDatabaseError por el error que tengas.
except on EDatabaseError do { nada } ;
end;
end;


Como veras, la solución pasa por simplemente ignorar el error. Aunque seguramente existen muchas más soluciones, creo que ésta es una de las más seguras. Usar la propiedad Active del formario puede introducir bugs muy difíciles de rastrear.

Saludos!