FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Controlar cuando se ha pulsado un botón en otra unidad (propiedades)
Hola
Tengo un DataModule con una función que me crea un formulario Modal , luego en ese formulario cuando puso el botón aceptar tiene que realizar una función del datamodule, esto lo estaba haciendo con ModalResult = mrOk, pero esta forma ya no vale pues me desaparece la ventana, y queria algo parecido pero que la ventana no desapareciera. Pongo como estaba antes más o menos.
el caso es que quiero cambier el ModalResult = mrOk por otra cosa, quizás una propiedad o algo que me diga lo mismo, pero de tal manera que la ventana no desaparezca y se quede ahí, de tal manera que pueda pulsar al botón una y otra vez para sacar informes según criterio del usuario. Si la mejor forma de hacerlo es con propiedades, como no las he usado, me gustaria saber de que forma lo tengo que hacer, si hay otra forma mejor, pues con hacer esa también esta bien. Saludos |
#2
|
||||
|
||||
Suponiendo que el procedimiento ProcedureEjemploB; esta en una unidad distinta a la del datamodulo y a la del form modal podrias llamar el ProcedureEjemploB; desde el form modal y listo, quedando el datamododule asi:
Y en el OnClik del boton que Aceptar que esta en el Form modal asi:
Eso si, dicho boton ya no debe tener el ModalResult := mrOk para que no se cierre, pero a cambio de eso tendras que idear un mecanismo para que el usuario cierre el formulario cuando no lo necesite mas (Podria ser un nuevo boton para cerrar) .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ Última edición por jhonny fecha: 16-11-2007 a las 18:26:01. |
#3
|
|||
|
|||
El procedimiento B, esta en el mismo DataModule que el procedimientoA.
Y no se debe de llamar directamente desde el botón, por que igual hay que pasarle unos parametros del formulario o igual no hay que pasarselos. Es decir : En el botón del formulario no se debe de poner : ModuloDatos.ProcedureEjemploB; sino que
Así es más o menos el código, lo que pasa es que con el ModalResult desaparece y no es lo que quiero. Igual alguno podría pensar, pues que ponga lo de MiArray[0] := edit1.Text , en el B , pero No puede ser, por que igual se puede llamar al B, desde el formulario o desde fuera directamente, pasandole el array directo. Saludos |
#4
|
|||
|
|||
¿Nadie sabe la respuesta ?
|
#5
|
||||
|
||||
Sinceramente me haz enredado con la segunda intervención, si tal vez la explicaras un poco mejor podria colaborarte.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#6
|
||||
|
||||
Simplemente quitale la propiedad ModalResult al botón, con esto devería de resolverse tu problema.
PD: ponlo a mrNone. Última edición por Chris fecha: 16-11-2007 a las 23:57:55. |
#7
|
|||
|
|||
pero si el botón no tiene la propiedad modalresult puesta.
Si ese no es el tema, el tema es que hago un ShowModal en el Datamodule, después espero a que pulse el botón y entonces tiene que hacer un código después del ShowModal y es llamar al otro procedure.
El tema es que ahora donde pone (pulsa el botón) , tengo puesto if ModalResult = mrOk then Y en el botón del formulario , hace comprobaciones , y si todo va bien , en código hago un ModalResult = mrOk. Pero si no hago el ModalResult = mrOK dentro del código del botón, no ejecuta el procedure B. Bueno lo que he hecho finalmente es hacer un pequeño ejemplo, en Delphi 6 , algo sencillo, esquematico, para explicarme mejor, voy a subir el código, lo añado. Lo llamo EjemploSimple. A ver si alguien puede mirarlo. Saludos |
#8
|
||||
|
||||
Comenta la línea
ModalResult := mrOk; y veras que ya no se te cierra el form. Mejor utiliza otro metodo, emplea una variable, como por ejemplo Aceptado : Boolean; .... if aceptado then .... Estos son problemas, pequeños que se resuelven de una manera muy fácil. Si la montaña no va a Mahoma, Mahoma va a la montaña, es algo simple. Saludos. |
#9
|
||||
|
||||
Problema resuleto.
Mira, aca te devuelvo tu ejemplo, con el inconveniente resuelto.
Saludos |
#10
|
||||
|
||||
David:
Considera que una llamada al método ShowModal espera hasta que la forma se cierra. Sinceramente no veo cuál sea el problema de que la forma se cierre y el proceso continúe. La forma puede quedar invisible (sin destruirse) para que las sentencias siguientes accedan sin problemas a los datos que se capturaron en ella. Y cuando ya no la necesites le haces un Form1.Free;. Claro, lo ideal es que existiera una segunda versión de ShowModal que se pudiera llamar así:
Siendo V un parámetro por variable para traerse valores de resultado. Esto me ha dado una idea de biblioteca... Otra solución sería colocar en alguna variable o campo del módulo de datos, los valores capturados en la ventana de diálogo. Haciendo eso en el evento OnClick del botón de cierre. No dejes de comentarnos. Al González. Última edición por Al González fecha: 17-11-2007 a las 21:13:22. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
como se si he pulsado un boton | ercrizeporta | Varios | 11 | 03-04-2007 13:56:56 |
Cambiar propiedades cuando quito el mouse | dany2006 | C++ Builder | 4 | 14-11-2006 16:21:39 |
Controlar cancelación en ventana de propiedades la impresora | Movi | Impresión | 1 | 30-11-2004 18:58:39 |
he pulsado el botón enviar?? | valentine | API de Windows | 7 | 02-06-2004 17:21:54 |
Quiero Saber como hacer que un boton se vea que esta siendo pulsado | Julio César | Varios | 2 | 27-11-2003 18:34:11 |
|