Page 1 of 1

Folder en Ventana Principal ¡¡¡Ayuda!! (Solucionado)

PostPosted: Sat Feb 06, 2010 12:24 am
by sjingo
Un saludo amigos

Bueno, me cansé de estar dos días con esto y por eso acudo a ustedes por su ayuda:

Quiero simplemente colocar unos dialogos creados desde recursos en un FOLDER que forma parte de la ventana principal (ojo no es MDI).
Creando el Folder y todos los controles de cada pestaña desde código funciona OK,
Code: Select all  Expand view

         @30,30 FOLDER oFold PROMPT "Datos Gen","Pestaña 2" pixel of oWinGen
         @1,10 GET AODAT[1] VAR aDat[1] OF oFold:adialogs[1] pixel
         @30,10 GET AODAT[2] VAR aDat[2] OF oFold:adialogs[1] pixel


Ahora, creo el folder desde código, pero los controles de cada pesaña he dibujado desde recursos sobre diálogos child, y lo que quiero ahora es pegarlos en el folder creado desde código: para eso hago:
Code: Select all  Expand view

         @30,30 FOLDER oFold PROMPT "Datos Gen","Pestaña 2" pixel of oWinGen
         //Aquí vá mas controles de la ventana
        ACTIVATE window oWinGen ON resize RESIZE_WINDOW2(oWinGen) MAXIMIZED;
        VALID (oCon:Close(),oWVeh:=nil,.t.);
        ON INIT (BUILDFOLDER(oFold:adialogs[1],aodat,adat,aoImg,aImg))
//Aqui colococo los controles de la pestaña y uso la función ChangeParent()
function BuildFolder( oWdestino,aoDat,adat,aoImg,aImg )
    LOCAL oDlg
    DEFINE DIALOG oDlg RESOURCE "DATOS"
    REDEFINE GET AODAT[1] VAR aDat[1] ID 0  of oDlg
    REDEFINE GET AODAT[2] VAR aDat[2] ID 1  of odlg
   ACTIVATE DIALOG oDlg NOWAIT ;
      ON INIT ChangeParent( oDlg, oWdestino )
     
   oDlg:End()  
return nil

 


Los controles se generan bien pero no se puede usar ni los ENTER ni TABS. Ojo todos los controles tienen la propiedad WS_TABSTOP.

He probado de todo lo que puedo, hasta cambie de editor de recursos, pero sigue igual, y mis conocimientos no dan más :oops:
Todos los ejemplos que he visto en SAMPLES funcionan OK, como la de los folders, pero todas se generan sobre un DIALOGO y no sobre una ventana principal, el ejemplo de TESTMDIR.PRG, también funciona bien pero es en una ventana CHILD. La mía no tiene hijas

Reitero que desde código funciona muy bien. Y no quiero hacerlo así. Por favor Auxilio.

Un saludo
Marcelo Jingo

Re: Folder en Ventana Principal ¡¡¡Ayuda!!

PostPosted: Sun Feb 07, 2010 11:44 pm
by sjingo
Hola de nuevo

Parece que de momento no es posible hacer lo que quiero :( . Y definitivamente construiré todos los controles del folder desde código que así funciona muy bien, hasta ver si en algún momento alguien encuentra la solución a esto. O si ya lo tiene solucionado por favor comparta.

Repito mi problema: Quiero colocar en la ventana principal que no es MDI (oWind:=Twindow:New()) un folder y en éste colocar los diálogos creados desde recursos para su respectiva pestaña.

Saludos
Marcelo Jingo

Re: Folder en Ventana Principal ¡¡¡Ayuda!!

PostPosted: Mon Feb 08, 2010 12:18 pm
by Antonio Linares
Marcelo,

Prueba a usar la claúsula OF al crear el diálogo y no llames a ChangeParent():
Code: Select all  Expand view

DEFINE DIALOG oDlg RESOURCE "DATOS" OF oWnd // ventana principal
...
 

Re: Folder en Ventana Principal ¡¡¡Ayuda!!

PostPosted: Mon Feb 08, 2010 2:22 pm
by sjingo
Gracias Antonio por el Interés.

No olvidemos que los diálogos que están en recursos los quiero colocar en cada pestaña del folder el cual ya está en la ventana principal.

Con tu sugerencia estoy colocando el diálogo fuera del folder, lo he probado y se crea el diálogo, los TABS funcionan pero queda detrás del folder.

Como último recurso voy a probar colocando todos los diálogos tanto el del folder como los otros en un Tpanel a ver que pasa, aunque me parece que ya lo probé, tantas cosas que hice que ya no me acuerdo.

En la siguiente imagen ilustro lo que quiero hacer, desde recursos. El ejemplo está hecho en código y todo funciona correcto:
Image
En la ventana principal tengo la barra de herram,un xbrowse, el folder y un TPAnel

Cualquier cosa les comento.

Un saludo

Marcelo Jingo

Re: Folder en Ventana Principal ¡¡¡Ayuda!!

PostPosted: Mon Feb 08, 2010 3:15 pm
by sjingo
Lo intenté una vez más con la sugerencia de Antonio y otras que se me vino a la cabeza, pero nada funciona bien, así que esto lo voy a dejar allí, porque más rápido lo estoy haciendo desde "source code", y el tiempo es nuestro peor enemigo.

Gracias Antonio y a todos por su tiempo.

Saludos

Marcelo Jingo

Re: Folder en Ventana Principal ¡¡¡Ayuda!!

PostPosted: Tue Feb 09, 2010 1:27 am
by Antonio Linares
Marcelo,

Disculpa, no me di cuenta de que el folder es hijo de la ventana principal.

En tal caso tienes el método LoadPages( aResNames, bRedefineControls ) que es precisamente para eso:
Code: Select all  Expand view

oFolder:LoadPages(  { "DATOS" }, { || RedefineLosControles( oFolder ) } )

...

function RedefineLosControles( oFolder )

   REDEFINE GET ... VAR ... ID 0 of oFolder:aDialogs[ 1 ]
   REDEFINE GET ... VAR ... ID 1 of oFolder:aDialogs[ 1 ]
   ...

return nil
 

Re: Folder en Ventana Principal ¡¡¡Ayuda!! (Solucionado)

PostPosted: Tue Feb 09, 2010 10:18 pm
by sjingo
Acabo de probarlo y sip :D si se pudo, los TABS ya funcionan, nada más que luego de hacer lo que me dice el Maestro Antonio, se debe mandar a reconstruir las pestañas con oFolder:SetPrompts().
Code: Select all  Expand view
    @30,30 FOLDER oFold ;
    PROMPT "Datos Gen","Pestaña 2" pixel of ::oWinGen
    oFold:aEnable = { .t. ,.t.}
    oFold:LoadPages(  { "DATOS" }, { || RedefineLosControles( oFold,aodat,adat,aoImg,aImg ) } )
    oFold:Setprompts({"Datos Gen","Pestaña2"})
 

Ahora sí a respirar tranquilo, muchísimas gracias Antonio. Seguiré molestando por aquí muy seguido.

Un saludo

Marcelo Jingo

Re: Folder en Ventana Principal ¡¡¡Ayuda!! (Solucionado)

PostPosted: Tue Feb 09, 2010 11:38 pm
by Antonio Linares
Marcelo,

Muy bien! :-)