Barra Outlook + Splitter + Browse (xBrowse) + TAB

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

Barra Outlook + Splitter + Browse (xBrowse) + TAB

Post by Andrés González »

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

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
Biel EA6DD
Posts: 680
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca
Contact:

Post by Biel EA6DD »

Hola Andres,

Code: Select all

oBrw := TXBrowse():New( oWnd )
debes sustituir oWnd por oChild

Antes de Activate WINDOW añade el siguiente código

Code: Select all

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
Andrés González
Posts: 625
Joined: Thu Jan 19, 2006 10:45 am
Location: Mallorca

Post by Andrés González »

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


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
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

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
Andrés González
Posts: 625
Joined: Thu Jan 19, 2006 10:45 am
Location: Mallorca

Post by Andrés González »

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
Post Reply