Detener un proceso pulsando un botón.

Selecciono de una tabla unos registros(100). Para cada uno de los registros hago lo siguiente:
- Calculo sus ventas y comisiones.
- Imprimos los datos calculados.
El problema me surge, al intentar pulsar sobre un botón para cancelar los procesos de calculo e impresión, hasta que no termino con el ultimo no me hace el click del botón. Lo que quiero hacer es parar el calculo y la impresión antes de que lleguen al ultimo registro.

1 Respuesta

Respuesta
1
Si mira, el thread lo creas en tu form, es como si fuera otra clase ahí dentro de tu form. Luego todo el proceso que haces de cálculos, impresiones .etc, lo pones en un procedure ahí mismo en tu form y que pertenezca a tu form y que sea publico. Y este método lo ejecutas desde el thread y listo.
Si para los cálculos utilizo tablas y queries y para la impresión un TPrinterSetupDialog, los tengo que definir en el Thread o pueden ir dentro del Tform.
Bueno mira es lógico que si inicias un proceso, ya no puedes hacer nada hasta que termine.
Ahora bien, esto lo solucionamos con los llamados threads, ¿cómo funciona esto? Así: todo tu proceso donde realizas el calculo de ventas, comisiones e impresión de datos, lo envías a un thread, es decir a otro espacio en memoria, al hacer esto tu proceso seguirá ejecutándose en otro espacio en memoria y tu tendrás de nuevo el control sobre tu form, podrás hacer click o inclusive realizar otro proceso diferente, como cancelar el proceso de los cálculos.
Ahora el manejo de los thread pues tiene su sintaxis. Mira en la ayuda de delphi escribe thread y te mostrara un ejemplo muy sencillo de como enviar un proceso a un thread, checalo y ya cuando mires el código si tienes duda de algo me dices.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas