Página 1 de 1

pasar datos de un tarraybrowse a otro formulario

Publicado: Mié Ago 09, 2017 12:20 am
por lilosoft
Buenas tardes junto con saludar. Alguién me podría ayudar necesito pasar los datos que contiene un array browse en un formulario y pasar los datos a otro formulario .
o de otra forma si tengo un array browse en un formulario poder modificarlo en otro

A continuación muestro como llamo al otro formulario en donde en el arraybrowse (oBrwSelbono) es llenado luego al retornar agrego los datos en aLines para incluirlos en el arreglo oBrwBono que se encuentra en el formulario inicial.
Bueno esto no me funciona y no se como hacerlo. por favor alguien que me pueda ayudar.

De antemano muchas gracias.

METHOD BtnAgreBonClick( oSender ) CLASS TFrmPerEdi
Local aLines := {}
Local I := 1

WITH OBJECT TFrmSelBono():New( Application:oMainForm )
:cText := "Agrega Bono"
IF :ShowModal() == mrOK
While :oBrwSelBono:GetValue(1, I) != Nil
If :oBrwSelBono:GetValue(4, I) = "*"
AAdd(aLines, { :oBrwSelBono:GetValue(1, I), :oBrwSelBono:GetValue(2, I), :oBrwSelBono:GetValue(3,I)})
End If
I++
End
::oBrwBono:aArrayData := aLines
End IF
:End()
End With

RETURN Nil

Re: pasar datos de un tarraybrowse a otro formulario

Publicado: Mié Ago 09, 2017 10:50 am
por XeviCOMAS
Para poder acceder a otro formulario i TODOS sus controles/eventos/datas...

Local aForms := Application:aForms
If (nAscan := aScan( aForms , {|o| o:ClassName() == TFrmSelBono():ClassName() } )) > 0
//Aquí todo el código que quieras
puedes acceder a cualquier objeto... por ejemplo
aForms[nAscan]:oBrwBono:aArrayData := aLines
//
EndIf


Espero te sirva.

Un Saludo,
Xevi.

Re: pasar datos de un tarraybrowse a otro formulario

Publicado: Mié Ago 09, 2017 4:03 pm
por lilosoft
Muchas gracias
voy a probar y te cuenta

Re: pasar datos de un tarraybrowse a otro formulario

Publicado: Mié Ago 09, 2017 8:05 pm
por lilosoft
Por favor He estado haciendo pruebas pero no logro hacerlo funcionar, por favor me podrías ayudar.
En el siguiente código el formulario TfrmSelBono no se abre por lo tanto no puedo hacer la selección.
Me podrías indicar que estoy haciendo mal

Este método lo ejecuto desde mi primer formulario, donde en teoría se llama al segundo el cual llena oBrwSelBono cuando retorna llenaría oBrwBono.
Obviamente como el segundo formulario no se abre como indico anteriormente no se llena oBrwSelBono


METHOD BtnAgreBonClick( oSender ) CLASS TFrmPerEdi
Local aLines := {}
Local I := 1
Local nAscan
Local aForms := Application:aForms

If (nAscan := aScan( aForms , {|o| o:ClassName() == TFrmSelBono():ClassName() } )) > 0

While aForms[nAscan]:oBrwSelBono:GetValue(1,I) != Nil
If aForms[nAscan]:oBrwSelBono:GetValue(4,I) = "*"
AAdd(aLines, {aForms[nAscan]:oBrwSelBono:GetValue(1,I), ;
aForms[nAscan]:oBrwSelBono:GetValue(2,I), ;
aForms[nAscan]:oBrwSelBono:GetValue(3,I)})
End If
I++
End
::oBrwBono:aArrayData := aLines
::oBrwBono:Refresh()
EndIf

Re: pasar datos de un tarraybrowse a otro formulario

Publicado: Mié Ago 09, 2017 9:32 pm
por emeasoft
English:

Hello Lilosoft,

Are you sure there is a "*" on any of the rows of the arraybrowse? Because I can't see what is wrong with your code.
Here goes a test with the same code...

Regards,
Juliano

Spanish by Google Translator:

Hola Lilosoft,

¿Estás seguro de que hay un "*" en cualquiera de las filas del arraybrowse? Porque no puedo ver lo que está mal con tu código.
Aquí va una prueba con el mismo código ...

Saludos,
Juliano

Re: pasar datos de un tarraybrowse a otro formulario

Publicado: Mié Ago 09, 2017 10:36 pm
por lilosoft
Muchas gracias
Ahora si funciono, seguí el ejemplo y funciono.
Nuevamente muchas gracias

Quedaría así

METHOD BtnAgreBonClick( oSender ) CLASS TFrmPerEdi
Local aLines := {}
Local I := 1

::oBrwBono:Zap()
WITH OBJECT TFrmSelBono():New()
:ShowModal()
For I := 1 To Len( :oBrwSelBono:aArrayData )
If :oBrwSelBono:aArrayData[I,4]$"*"
AAdd( aLines ,{:oBrwSelBono:aArrayData[I,1],:oBrwSelBono:aArrayData[I,2],:oBrwSelBono:aArrayData[I,3]} )
End If
Next
::oBrwBono:aArrayData := aLines
:end()
End With

RETURN Nil

Re: pasar datos de un tarraybrowse a otro formulario

Publicado: Jue Ago 10, 2017 4:12 pm
por xhermita
Igual llego un poco tarde, pero igual te sirve esta solución algo más compacta.

Código: Seleccionar todo

   with object TForm2():New(oSender)
      if :ShowModal() == mrOK
         ::oArrayBrowse1:Zap()
         ::oArrayBrowse1:aArrayData := :oArrayBrowse1:aArrayData
      endif
   end with
Te adjunto proyecto de prueba.
prueba.zip
(3.22 KiB) Descargado 226 veces
Saludos

Re: pasar datos de un tarraybrowse a otro formulario

Publicado: Vie Ago 11, 2017 2:14 pm
por emeasoft
Glad to hear that everything is working now!

Regards,
Juliano

Spanish:

Me alegro de saber que todo está funcionando ahora!

Saludos,
Juliano