FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
variables entre forms
Mi problema es el siguiente, tengo un form principal que se crea con el proyecto al ejecutarse, bien, desde este form creo en tiempo de ejecucion todos los otros forms de la forma
cuando cierro el form en el onclose hago la action:=caFree. Bueno, el problema viene aqui, en este form que creo en tiempo de ejecucion tengo una variable publica para accederla desde otro form que lo muestro como showmodal, de esta forma
y este es el codigo del form que llamo con showmodal pero al llegar a la asignacion me da el error 'Access violation ...', ahora mi pregunta; como hago referencia a esta variable del otro form? se que mi problema es por crearlo en tiempo de ejecucion ya que si lo creo cuando se ejecuta la aplicacion hago referencia a ella y listo, pero quiero saber como trabajar con los forms creados de esta manera. Espero haber sido claro, disculpen cualquier error ya estoy un poco perdido y cansado con este rollo. Gracias Fede
__________________
De lo que hay no falta nada!!! Última edición por fedelphi fecha: 05-06-2007 a las 04:34:30. |
#2
|
||||
|
||||
Mmmm...
No me queda muy claro el código, para mi el problema es que estas usando una variable dentro de un objeto... cuando liberas el objeto, todo lo que éste contanga también sera liberado (en memoria), asi que por que no intentas poner la variable justamente donde defines al objeto formulario?
de esta forma solucionaras tu problema! suerte! |
#3
|
||||
|
||||
Creo que no va por ahí el problema: el formulario aún no se destruye puesto que desde él se llamó modalmente al otro.
Sin poder decir nada en definitivo, a mi me parece que la variable FConsultaCirc a la que se hacer referencia en el código, no es la que nuestro amigo piensa que es. Hay dos variables llamadas así: la que fedelphi declara en el método Consultacirc1Click del formulario principal, y la que el IDE de Delphi pone en automático al agregar el formulario:
Como no parece que al formulario modal se le pase una referencia al formulario que lo abrió, todo parece indicar que la variable que entra en juego es la que el IDE coloca, que seguramente nunca se ha creado, y de ahí el "Access Violation". // Saludos |
#4
|
||||
|
||||
Gracias por responder, pero creo que roman me entendio mejor, como hago para pasarle una referencia del formulario que llama al formulario modal? , no se hace al crearla con self en el create?
Fede
__________________
De lo que hay no falta nada!!! |
#5
|
||||
|
||||
Cita:
Según alcanzo a ver de tu código, el formulario modal está para preguntar al usuario un dato que requiere el otro formulario, y ese dato intentas asignarlo directamente desde el modal, pero esa no es tarea de éste formulario. Piénsalo así: en general, un formulario modal se usa para preguntar valores, pero qué se hace con esos valores es responsabilidad de quien llama al formulario. Por ejemplo, un cuadro de diálogo como OpenFileDialog tiene como finalidad preguntar al usuario por un nombre de archivo. El cuadro jamás va a colocar el nombre seleccionado en ninguna parte ajena a él, únicamente "devolverá" el archivo seleccionado en su propiedad FileName. En tu caso yo haría algo similar. Al formulario modal le anexas una propiead al caso:
En el evento OnCloseQuery de este formulario verificas si el usuario oprimió OK. De se asi, asignas el dato en ECantidad.Text a FCantidad:
El otro formulario abriría el modal así:
Observa el uso del try-finally para destruir al formulario modal. No dejes que éste se "autodestruya" poniendo Action := caFree en el evento OnClose. Lo necesitas "vivo" para cuando se cierre y tomes el vaor de su propiedad Cantidad. // Saludos |
#6
|
||||
|
||||
Buenisimo!!!
Que grande roman, funciono perfectamente, muchisimas gracias por la ayuda
Le hice esto en el onclick y asi en el onclosequery y creo que asi queda completo Fede
__________________
De lo que hay no falta nada!!! |
#7
|
||||
|
||||
Eso del BSi.tag está un poco feito
Lo normal es que a tu botón Aceptar le pongas su propiedad ModalResult en mrOk, para que automáticamente, al momento de oprimir el botón, se asigne mrOk al formulario. Y éso es lo que usas en CloseQuery para determinar si se oprimió Aceptar:
y ya no usas el evento OnClick del botón. // Saludos |
#8
|
||||
|
||||
OK, gracias de nuevo.
Fede
__________________
De lo que hay no falta nada!!! |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Pasar variable o valor entre forms | nachito_tuc | OOP | 3 | 05-09-2006 14:06:41 |
Desplazamiento entre forms | el_barto | Varios | 5 | 14-07-2005 21:56:58 |
Relaccion entre los forms | vicrati | Varios | 2 | 11-04-2004 16:20:29 |
Pasaje de variables entre formularios | santiago14 | Varios | 1 | 17-09-2003 19:11:05 |
|