FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Saludos.
Oscar, ErrorDialog es un nombre que le dio Sinaloense por decir un nombre a un metodo que llame un Showmessage o MessageDlg. En cuanto a capturar la excepcion la gente de FibPlus tienen un tremendo componente para esto, es de pago vale la pena tener estos componentes. Hasta luego.
__________________
Gracias, Rolphy Reyes |
#2
|
||||
|
||||
No hace falta comprar nada.
Pon un ApplicationsEvents en tu ventana principal. En el evento OnException, puedes programar lo que quieras. Dentro del evento haz un showmessage de E.Message Ahora en tus rutinas tienes 3 opciones mutuamente excluyentes: 1.- No poner bloques try..excepts, de forma que al ocurrir una excepción, ésta llegue al componente ApplicationsEvents.OnException en el que has programado lo que quieras hacer. 2.- Usar bloques try ... excepts, pero permitir que dicha excepción se lance de nuevo. Típico caso, en la rutina haces un rollback de la transacción y después en el Application.OnException muestras el mensaje al usuario:
3.- Usamos bloques try ... except, pero nos comemos la excepción. No llegará al Application.OnException. No se mostrará ningún mensaje al usuario.
Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 17-02-2008 a las 14:51:43. |
#3
|
||||
|
||||
Cita:
Yo he elegido este método, el problema que tengo es que antes de mostrar el mensaje de la excepción al usuario la ejecución de mi programa se corta siendo necesario darle F9 devuelta para que recién ahí se muestre el mensaje y queden los objetos en el estado que yo quiero... ¿hay algúna forma de que esto no ocurra? este es el código que produce la excepción:
'MDOdataset1.QInsert.ExecQuery ' es la linea que produce la excepción, como dije antes se corta la ejecución y me da un mensaje de el componente y me disgusta que eso ocurra quiero que solo se notifique el mensaje de error al usuario.... Gracias |
#4
|
||||
|
||||
Lanza tu ejecutable desde el Explorador de windows, no verás ese aviso .
PD: Si quieres puedes deshabilitar ese mensaje de Delphi, en Tools -> Debugger Options -> "Stop on Exception" (o algo así se llama ). Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#5
|
|||
|
|||
Hola...
Lo que te sucede solo es cuando estás ejecutando la aplicación desde el debugger... Trata ejecutando tu aplicación desde afuera y verás que trabaja como debe ser... Saludos... |
#6
|
||||
|
||||
Gracias Lepe y maeyanes ya configuré el debugger para que no moleste en las pruebas.
Tengo otra inquietud y necesito opiniones al respecto, el escenario es masomenos el siguiente: Un form1 en el cual dispongo de una rejilla, barra de navegación, campos de búsqueda y los elementos no visuales necesarios (Dataset para consulta y actualizaciones, Datasources, Etcétera). Programé para lograr que cuando el usuario apreta el botón de la barra navegadora para realizar una inserción (+) se abra ótro form2 en donde aparecen todos los campos de edicion y botones para que el usuario cargue datos para luego darle al botón 'aceptar' con lo cual se intenta guardar lo ingresado. Los campos en el form2 apúntan al dataset en el form1. En el botón 'Aceptar' es que tengo una estructúra del tipo try...except, en donde intento realizar el post del dataset en el form1. El problema aparece cuando ocurre una excepción al intentar guardar los datos: se muestra el mensaje de la excepción e inmediatamente se cierra el form 2 dejando el form 1 'on top'. El comportamiento que yo quiero es que al ocurrir una excepción se muestre el mensaje del error pero que no se cierre el formulario y el usuario pueda seguir trabajando con los datos que había intentado guardar... Se entiende? qué sería lo más recomendable en esta situación? de antemano muchas gracias! Saludos... |
#7
|
|||
|
|||
Amigos disculpenme la ignorancia pero es que no veo por ningun lado applicationevents , suponiendo que es un componente.
|
#8
|
||||
|
||||
Hola
Cita:
Saludos PD: Ignorante es el que no pregunta, no el que busca la respuesta.
__________________
Siempre Novato |
#9
|
||||
|
||||
resp
capturala dentro de un cuerpo try except
y dependiendo del tipo de exceion enviar el mensaje con la caja de dialogo que mejor te parezaca
Espero te sirva.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa. |
#10
|
||||
|
||||
Cita:
Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#11
|
||||
|
||||
Saludos.
Lepe en mi ayuda no existe ningun topico sobre ese metodo, pero si en la tuya existe entonces favor de poner la explicación. Gracias.
__________________
Gracias, Rolphy Reyes |
#12
|
||||
|
||||
Vaya, tienes razón, se ve que me he confundido con DatabaseError de la unidad DB, el uso es parecido.
Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#13
|
|||
|
|||
Gracias muchachos por la ayuda.
Estuve intentando con el aplicationEvents y capturar el mensaje en el evento onExepcion pero no entra a ese evento. Derrepente estoy mostrando mal el mensaje desde firebird. Muestro un ejm. de codigo de mi procedimiento a ver si me pueden ayudar un pokito mas:
y en delphi ejecutado el procedimiento asi:
Espero haber sido lo suficiente claro y me puedan ayudar. Muchas gracias. Oscar |
#14
|
||||
|
||||
Conceptualmente, está mal:
Si el campo cantidad está definido como un integer en la base de datos, debes hacer la conversión:
Al usar Variants, hay que tener cuidado en esos tipos de detalles, que después internamente el Variant puede hacer lo que no esperas. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#15
|
|||
|
|||
ese solo era un ejm. ahi no esta mi problema, mi problema es al querer capturar la excepcion de delphi.
Gracias de todas maneras por la buena intencion. Saludos Oscar |
|
|
|