Barra Outlook + Splitter + Browse (xBrowse) + TAB

Barra Outlook + Splitter + Browse (xBrowse) + TAB

Postby Andrés González » Wed Apr 11, 2007 10:20 am

Tengo una ventana con tres objetos una Barra Outlook + Splitter + Browse (xBrowse) + TAB. El problema es que el browse me come la barra outlook y el tab engloba tanto a outlook como al browse y me gustaria que solo perteneciera al browse como lo hago.
He tomado el ejemplo /samples/testxbrw.prg

Code: Select all  Expand view  RUN
STATIC FUNCTION BasicCell( oWnd )

   local oChild, oFont, oOut, oSpl, oBrw, oTabs

   DEFINE FONT oFont NAME "Ms Sans Serif" SIZE 0,-8
   DEFINE WINDOW oChild TITLE "Basic Cell selector browse" MDICHILD OF oWnd

   //-----------------------------------------------------------------//
   //      Definimos un objeto OUTLOOK                                //
   //-----------------------------------------------------------------//

   @ -1, -1 OUTLOOK oOut ;
   SIZE 125, 100 ; //Ajustamos al tamaño máximo de la ventana, tenemos que pensar que esta la barra de mensajes
   COLOR CLR_BLACK , 16436871 ;  //CLR_HCYAN  16741960
   PIXEL ;
   FONT oFont ;
   OF oChild

   DEFINE GROUP OF OUTLOOK oOut PROMPT "&Informes" //Defino un apartado

   //-----------------------------------------------------------------//
   //      Definimos un objeto BROWSE                                 //
   //-----------------------------------------------------------------//

   oBrw := TXBrowse():New( oWnd )

   oBrw:SetRDD()
   oBrw:CreateFromCode()
   oBrw:cToolTip = "This is a test"

   //oChild:oClient := oBrw //Si lo pongo me machaca la barra outlook

   //-----------------------------------------------------------------//
   //      Definimos un objeto TAB                                    //
   //-----------------------------------------------------------------//


   @ 1, 0 TABS oTabs PROMPTS "&One", "&Two", "T&hree", "&Four" OF oChild ;
      ACTION oChild:Say( 5, 5, oTabs:nOption )

   oChild:oBottom = oTabs
   
   //----------------------------------------------------------------------------//
   //            Sistema de SPLITTER. objeto oSpl                                //
   //----------------------------------------------------------------------------//
   @ 1, 124 SPLITTER oSpl ;
            VERTICAL ;
            PREVIOUS CONTROLS oOut ;
            HINDS CONTROLS oBrw , oTabs;   //
            LEFT MARGIN 100;
            RIGHT MARGIN 200 ;
            SIZE 4, 100  PIXEL ;
            OF oChild ;
            _3DLOOK ;
            UPDATE


   ACTIVATE WINDOW oChild;
                   ON INIT oBrw:SetFocus();
                   ON RESIZE oSpl:AdjRight()


RETURN NIL

Saludos

Andrés González desde Mallorca
User avatar
Andrés González
 
Posts: 629
Joined: Thu Jan 19, 2006 10:45 am
Location: Mallorca

Postby Biel EA6DD » Wed Apr 11, 2007 10:42 am

Hola Andres,

Code: Select all  Expand view  RUN
oBrw := TXBrowse():New( oWnd )

debes sustituir oWnd por oChild

Antes de Activate WINDOW añade el siguiente código
Code: Select all  Expand view  RUN
oChild:oLeft()  := oOut
oChild:oClient  := oBrw


Creo que con esto conseguiras el efecto deseado.
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
User avatar
Biel EA6DD
 
Posts: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca

Postby Andrés González » Fri Apr 13, 2007 9:37 am

Gracias Biel, el ejemplo es tal como esta en la carpeta samples de samples/testxbrw.prg. El problema es el resultado pues no se como decirle que las tab pertenecen al splitter derecho donde se muestra el browse. Quiero que aparezcan debajo del browse, esto lo he visto en varios programas hechos con fivewin pero no doy con el tema.

Si pongo oChild:oBottom = oTabs

me situa la barra tabs debajos de las dos partes del splitter, lo cual no queda mal ver esta foto
[img]

http://img87.imageshack.us/my.php?image ... 012xa6.png

[/img]



Pero no encuentro la forma de decirle que pertenece al browse o al splitter de la derecha.

Sin splitter va perfecto:

Code: Select all  Expand view  RUN

STATIC FUNCTION BasicRow( oWnd )

   local oChild, oBrw, oTabs

   DEFINE WINDOW oChild TITLE "Basic Row selector browse" MDICHILD OF oWnd

   oBrw := TXBrowse():New( oWnd )
   oBrw:nMarqueeStyle := MARQSTYLE_HIGHLROW

   oBrw:SetRDD()
   oBrw:CreateFromCode()

   oChild:oClient := oBrw

   @ 1, 0 TABS oTabs PROMPTS "&One", "&Two", "T&hree", "&Four" OF oChild ;
      ACTION oChild:Say( 5, 5, oTabs:nOption )

   oChild:oBottom = oTabs


   ACTIVATE WINDOW oChild ON INIT oBrw:SetFocus()

RETURN NIL


Situa uno a continuacion de otro.
Alguien que tenga experiencia en este tema me puede indicar como hacer para que la tab aparezca debajo del browse?
Saludos

Andrés González desde Mallorca
User avatar
Andrés González
 
Posts: 629
Joined: Thu Jan 19, 2006 10:45 am
Location: Mallorca

Postby Antonio Linares » Fri Apr 13, 2007 10:19 am

Andrés,

Prueba a comentar esta línea, y situa el tabs más abajo:

oChild:oBottom = oTabs

y en el bResized de la ventana tendrías que ponerle las coordenadas correctas al tabs, por lo menos el oTabs:nTop, ya que el nLeft lo hará el splitter
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42151
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Andrés González » Fri Apr 13, 2007 10:47 am

Ya me he dado cuenta de este detalle, si quito esa linea me situa el tab en el splitter derecho encima del browse, ahora estaba intentando situarlo en las coordenadas correctas, pero cuando se redimensiona el browse ocupa toda el area de cliente. Estoy realizando pruebas para ver como cojo las coordenadas del browse y lo ajusto a la ventana que le deja el espliter, creo que los tiros deben de ir por ahí.

Gracias Antonio
Saludos

Andrés González desde Mallorca
User avatar
Andrés González
 
Posts: 629
Joined: Thu Jan 19, 2006 10:45 am
Location: Mallorca


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 35 guests