FoxPro/Visual FoxPro - ayuda con grip - vfp9.0

   
Vista:

ayuda con grip - vfp9.0

Publicado por JEYCOSOFT jeycosoft@hotmail.es (9 intervenciones) el 15/12/2013 01:35:19
Buenas a todos, la pregunta es la siguiente:
estoy haciendo un programa de gestión de facturación pues bien cuando estoy haciendo una factura he combino dos form para que en una de ellas pueda localizar el cliente con un grip. Hasta aquí todo bien en lo que necesito ayuda es como puedo seleccionar del grip en form2 un registro y me lo lleve al form1 de la factura y me implante automáticamente los datos del cliente. otra pregunta es como puedo en el form2 de consulta quitar columnas del grip.

gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Maricio

ayuda con grip - vfp9.0

Publicado por Maricio (1367 intervenciones) el 15/12/2013 03:02:26
Grip??????
Es viernes??????
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ayuda con grip - vfp9.0

Publicado por Fidel José (558 intervenciones) el 15/12/2013 16:11:54
JEYCOSOFT:
En Visual Fox no existe un tal Grip. Lo que existe es el control Grid.

1) Cuando llamas al form2 para buscar un cliente, le tienes que pasar como parámetro el objeto Form
DO FORM ..\FORMS\FORM2 WITH Thisform

En el INit del formulario Form2
LPARAMETERS xoForm
Addproperty(thisform, "oform1" , xoForm)

* Ahora te puedes referir a cualquier objeto (o método o propiedad) del form 1 con Thisform.Oform1.Objeto

2) No debes trasladar datos del control grid, sino del cursor asociado. cuando seleccionas un cliente en el grid del Form2, estás apuntando a un registro del cursor.

En el botón o método de selección tenés que tener algo así:
lcCursor=Thisform.Grid1.RecordSource && cursor o tabla asociada al control grid
select (lcCursor)
lcNombre=alltrim(Nombre) && suponiendo que el cursor tiene un campo nombre
lcId=idCliente && suponiendo que el cursor tiene un campo IdCliente
lcClave=Cuit && suponiendo que el cursor tiene un campo Cuit
with thisform.Oform1
.TxtNombre.Value=lcNombre
.TxtIdCliente.VAlue=lcId
.TxtCuit.Value=lcClave
endiwth
thisform.release

Si el Form2 es un formulario Modal o se Inicializa como modal por parámetro, puede devolver una bandera de estado.

al llamar al form2 (Botón de búsqueda de cliente)
LOCAL lAcepta
DO ..\FORMS\FORM2 WITH thisform,1 TO lAcepta
IF NOT lAcepta
RETURN
ENDIF

Init del form2
LPARAMETERS xoForm,xnWindowtype
Addproperty(Thisform,"Retorna",.F.)
Addproperty(Thisform,"oform1",xoform)
WITH thisform
.windowtype=Evl(xnWindowType,0)
.MinButton=iif(.Windowtype=1, .F. ,.T.) && si el formulario es modal, siendo un secundario no debe miniminzarse
ENDWITH


En el botón o método de selección tenés que tener algo así:
lcCursor=Thisform.Grid1.RecordSource && cursor o tabla asociada al control grid
select (lcCursor)
lcNombre=alltrim(Nombre) && suponiendo que el cursor tiene un campo nombre
lcId=idCliente && suponiendo que el cursor tiene un campo IdCliente
lcClave=Cuit && suponiendo que el cursor tiene un campo Cuit
with thisform.Oform1
.TxtNombre.Value=lcNombre
.TxtIdCliente.VAlue=lcId
.TxtCuit.Value=lcClave
endiwth
Thisform.Retorna=.T.
thisform.release

Unload Event
if This.WindowType=1
RETURN THIS.RETORNA
endif

Si el Form2 no es modal.
Suponiendo que TxtNombre sea un TextBox que tiene el nombre del cliente, podés usar el evento ProgrammaticChange para testear si se puede continuar con la factura. (lContinue=!empty(this.value))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar