Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-12-2005
toorbye toorbye is offline
Miembro
 
Registrado: sep 2005
Posts: 24
Poder: 0
toorbye Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 12-12-2005
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 19
epuigdef Va por buen camino
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:

Código Delphi [-]
  formulario := TFrmPrueba.create(nil)
  try
    formulario.origen := 'Formulario3';
    formulario.showmodal;
  finally
    formulario.free;

Un saludo

Edu
Responder Con Cita
  #3  
Antiguo 12-12-2005
toorbye toorbye is offline
Miembro
 
Registrado: sep 2005
Posts: 24
Poder: 0
toorbye Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 12-12-2005
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 19
epuigdef Va por buen camino
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
Responder Con Cita
  #5  
Antiguo 12-12-2005
toorbye toorbye is offline
Miembro
 
Registrado: sep 2005
Posts: 24
Poder: 0
toorbye Va por buen camino
Ahi va el codigo,

FrmBusqArt:= TFrmBusqArt.Create(self);
FrmBusqArt.EdBuscar.text := TRIM(producto);
FrmBusqArt.formulario := FrmPedidos;
FrmBusqArt.ShowModal;
Responder Con Cita
  #6  
Antiguo 12-12-2005
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 19
epuigdef Va por buen camino
Vale, entonces lo que tienes que hacer es lo siguiente:

Código Delphi [-]
FrmBusqArt:= TFrmBusqArt.Create(self);
FrmBusqArt.EdBuscar.text := TRIM(producto);
FrmBusqArt.formulario := FrmPedidos;
 
FrmBusqArt.Dbgrid1.Fields[0].Value := GridArtBusq.Fields[0].Value;

FrmBusqArt.ShowModal;
Espero que te sirva

Edu
Responder Con Cita
  #7  
Antiguo 12-12-2005
toorbye toorbye is offline
Miembro
 
Registrado: sep 2005
Posts: 24
Poder: 0
toorbye Va por buen camino
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
Responder Con Cita
  #8  
Antiguo 12-12-2005
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 19
epuigdef Va por buen camino
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:

Código Delphi [-]
FrmBusqArt:= TFrmBusqArt.Create(self);
FrmBusqArt.EdBuscar.text := TRIM(producto);
FrmBusqArt.formulario := FrmPedidos;
FrmBusqArt.ShowModal;
// suponemos que GridArtBusq está en este formulario (el de origen)
GridArtBusq.Fields[0].Value =FrmBusqArt.Dbgrid1.Fields[0].Value;
Edu
Responder Con Cita
  #9  
Antiguo 12-12-2005
toorbye toorbye is offline
Miembro
 
Registrado: sep 2005
Posts: 24
Poder: 0
toorbye Va por buen camino
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
Responder Con Cita
  #10  
Antiguo 12-12-2005
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 19
epuigdef Va por buen camino
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
Responder Con Cita
  #11  
Antiguo 12-12-2005
toorbye toorbye is offline
Miembro
 
Registrado: sep 2005
Posts: 24
Poder: 0
toorbye Va por buen camino
ya entendiendo muchas gracias!!!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 01:53:17.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi