FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Saber origen formulario.
Hola, tengo un formulario donde tengo un dbgrid que muestra una serie de datos, este formulario puede ser llamado desde varios formularios. Me gustaria guardar en una variable de dicho formulario el formulario que lo llamo. No se si me explico. Me gustaria registrar en el formulario con el dbgrid el formulario de procedendia o sea el formulario desde el cual fue abierto.
A ver si me podeis ayudar.Un saludo. |
#2
|
||||
|
||||
Buenas!
Puedes poner en el formulario una variable en la parte public para poderla acceder en el momento de la creación. cuando lo crees asignas el nombre desde donde lo llamas. Por ejemplo, si la variable se llama origen, en la llamada al formulario puedes hacer esto:
Un saludo Edu |
#3
|
|||
|
|||
El problema que tengo es que al llamar a dicha variable goblal en mi caso llamada formulario las propiedades como showmodal si que estan presentes, pero en mi caso me gustaria utilizar un dbgrid que hay dentro de ese formulario, y no aparece, esto seria lo q queria hacer:
formulario.Dbgrid1.Fields[0].Value := GridArtBusq.Fields[0].Value; Gracias |
#4
|
||||
|
||||
Si quieres acceder a los componentes del formulario lo tienes que hacer a partir de la variable del tipo del formulario que tienes creada, no a partir de la variable de dentro del formulario..
Me parece que me estoy explicando fatal, pasame el código que utilizas para llamar al formulario y te indico mejor. Edu |
#5
|
|||
|
|||
Ahi va el codigo,
FrmBusqArt:= TFrmBusqArt.Create(self); FrmBusqArt.EdBuscar.text := TRIM(producto); FrmBusqArt.formulario := FrmPedidos; FrmBusqArt.ShowModal; |
#6
|
||||
|
||||
Vale, entonces lo que tienes que hacer es lo siguiente:
Espero que te sirva Edu |
#7
|
|||
|
|||
Creo qn o me he explicado el siguiente codigo se ejecuta en el evento Ondblclick y lo q intento hacer es pasar los datos de un dbgrid a otro situado en otro formulario:
formulario.Dbgrid1.Fields[0].Value := GridArtBusq.Fields[0].Value;Este formulario puede ser llamado por varios formularios, por lo q si pusiese por ej FrmVentas.Dbgrid1.Fields[0].Value := GridArtBusq.Fields[0].Value; Intentaria insertar los datos en el grid1 del frmventas, pero imaginate que el formulario no fue llamado desde FrmVentas y fue llamado desde FrmStocks por ejemplo.... Quiero evitarme andar con "if" o "case" por ejemplo if formulario = frmventas then FrmVentas.Dbgrid1.Fields[0].Value := GridArtBusq.Fields[0].Value else if formulario = FrmStocks FrmStocks. Dbgrid1.Fields[0].Value := GridArtBusq.Fields[0].Value No se si me he explicado |
#8
|
||||
|
||||
Bien, me parece que ya lo entiendo. Lo que necesitas es asignar los valores en el grid que está en el formulario de ORIGEN (el que hace la llamada) no?
Entonces lo que puedes hacer es, en lugarde hacer el proceso en el formulario de destino, hacerlo en el de origen después del showmodal (lo tendrás que hacer en cada uno de los formularios origen: Edu |
#9
|
|||
|
|||
No, es justamente lo contrario, desde un formulario abro otro(que lo quiero utilzar en varios formularios) y desde este formulario que puede ser llamado desde otros fomularios,quiero haciendo doble click, pasar el valor al formulario origen.
Mi idea es que al introducir un producto q no exista en un formulario, se abra otro con la lista de articulos,doble click en ese formulario y que pase el valor. Creo q soy un desastre explicandome.... gracias de todos modos. P.D: Con el codigo que me dices lo que consigo es justamente lo contrario, es pasar los datos de origen a destino, pero yo quiero pasarlos desde destido a origen. El principal problema reside a que al ser un formulario que puede ser llamado desde otros formularios y no desde uno fijo. Podria hacerlo con un "if" o un "case" en el evento onDblClick pero quiero hacerlo de forma mas elegante. if formulario = frmventas then FrmVentas.Dbgrid1.Fields[0].Value := GridArtBusq.Fields[0].Value else if formulario = FrmStocks FrmStocks. Dbgrid1.Fields[0].Value := GridArtBusq.Fields[0].Value |
#10
|
||||
|
||||
No, si ya te he entendido, pero el concepto es que debes RECOGER el dato, en lugar de DEJARLO.
el proceso debe ser el siguiente: en el formulario hijo (que tiene la grid que realiza la búsqueda): declara una variable String pública llamada resultado. en el doubleclick pones lo siguiente: resultado := GridArtBusq.Fields[0].Value: modalresult := mrok // esto asigna el valor de retorno y cierra la ventana en los formularios que realizan la llamada: FrmBusqArt.showmodal // recogemos el valor mivalor := FrmBusqArt.resultado FrmBusqArt.free Edu |
#11
|
|||
|
|||
ya entendiendo muchas gracias!!!
|
|
|
|