FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Hola,
Estaría bien que pongas el código del OnClick de ese BitBtn, pero por lo que entiendo haces simplemente un Close. Prueba a darle un modalresult a ese BitBtn tal que mrOK. Espero te sirva. Saludos.
__________________
"Es imposible hacer un programa 100% contra tontos, ya que éstos son muy ingeniosos"
|
#2
|
|||
|
|||
En estos momentos el bitbtn, no tiene OnClick.
En Miscellaneous tiene los valores Default = True ModeResult = mrOK |
#3
|
||||
|
||||
Supongo que ya has lo has intentado pero intenta depurar, pon un punto de ruptura en el bucle y ve ejecutando paso a paso a ver que hace donde va la ejecucion una vez parado el bucle.
|
#4
|
||||
|
||||
Yo no sé ni por donde entrar a este tema. No te lo tomes a mal, solo voy a enumerar los posibles fallos/defectos que le veo a la implementación actual:
1 - Crear una ventana por cada registro existente en la tabla es demasiado; si hay 40 registros.... ¿40 ventanas que el usuario tiene que hacer clic?¿para qué? si no se le deja eligir nada al usuario, acto seguido se borra el registro por código delphi. 2 - No veo que se destruya la ventana Form23 por ningún lado, hay varias formas, pero lo más fácil sería en el OnClose de TForm23 añadir :
3 - El "Adotable2.Next" sobra, ya que al borrar un registro, automáticamente se muestra el siguiente en los controles DBAware, si además hacemos un .Next, estamos saltando un registro sin borrarlo. Y todo esto sin entrar en diferentes hilos de ejecución, concurrencia, etc. Por que si el Thread está borrando registros, no quiero saber lo que hará la aplicación principal con otro Adotable que intente editar esos registros ya borrados. Si quieres informar al usuario que se ha borrado 20 registros, hazlo así: En lugar de un ShowMessage, podrías mostrar un Form con un Memo, dentro del memo añade ese "mensaje", será más cómodo para el usuario. Campo1, CAmpo2, son dos campos que quieres mostrar al usuario para que entienda el mensaje, por ejemplo el número de factura que se ha borrado o el nombre del cliente que se ha borrado (es un ejemplo, claro). De esta forma, el usuario no tiene que hacer clic en ninguna ventana, pero tiene el resumen de lo que ha pasado. Espero te sirva, Saludos.
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#5
|
|||
|
|||
Intentaré explicarme algo mejor
- El primer thread genera esta tabla con determinados registros de otra para no parar el proceso mientras se responde a las pantallas mostradas - El segundo thread debe mostrar la información al usuario, quien debe confirmar en la modal el enterado y entonces se borra el registro. - como caso excepcional debiera haber a lo sumo 4 o 5 registros en espera de respuesta, con lo que si las pantallas quedasen anidadas, miel sobre ojuelas. -Que se intente grabar en la tabla justo en el mismo instante en que se borra? -Pude ser un riesgo, pero, no se me ocurre otra forma de disparar un aviso automatico, cuando se graba 1 registro en la tabla que no sea, con un thread preguntando permanentemente |
#6
|
|||
|
|||
Un ejemplo (no real) para entender mejor lo anterior, pdria ser:
Un contador númerico, va grabando su contenido en una tabla, conforme incrementa su valor. Determinados valores (aleatorios) de esa tabla generan un aviso, que debe ser confirmado por un usuario, pero en tanto el usuario responde el contador no debe parar y seguir incrementando su tabla. |
#7
|
||||
|
||||
No voy a criticar tu forma de interactuar con el usuario, auque como h a dicho lepe, puede ser un poco incomodo estar haciendo clic, clic, clic.....
Fijate que lo que te sucede es cuando un thread termina repentinamente es porque ha ocurrido una acepción en este y normalmente delphi no te informa sobre las ecepciones en los threads [solo cuando estás en modo debugger]. Exception class EOSError with message 'System Error. Code: 1400. El identificador de la ventana no es válido'. esto sucede a como lo ha dicho lepe a que no destruyes la ventana a utilizar. A mi punto de vista tienes dos alternativas: Esta es la que te recomiendo:
Ó:
|
#8
|
||||
|
||||
Cita:
No había caído en ese detalle, gracias por la aclaración. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#9
|
|||
|
|||
Ante todo quiero darte las gracias por el interes mostrado, al intentar colaborar conmigi.
Última edición por marcoszorrilla fecha: 11-12-2007 a las 06:55:29. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Thread OnShow | walito | Varios | 4 | 17-10-2007 00:36:24 |
Thread bendito thread...se me pierde la ventana | Seba.F1 | API de Windows | 5 | 02-02-2006 00:16:30 |
thread transparente | piccolo2101 | API de Windows | 3 | 13-01-2006 10:45:42 |
Thread y Form | progmaq | Varios | 4 | 31-03-2005 14:16:50 |
Terminar Thread | coulthard | Internet | 3 | 28-11-2004 22:05:08 |
|