Page 1 of 1

Splitter con varios controles

PostPosted: Thu Jun 24, 2010 4:18 pm
by jose_murugosa
No termino de captar el uso de splitters.
Image

Uploaded with ImageShack.us

aquí pueden ver un intento de uso de una ribbon (no la de Fivewin), con un tree y un xbrowse, la pregunta surge porque no logro que se vea el browse :oops: , y no me doy cuenta que hago mal.

Apreciaría si me pueden ayudar a hacerlo funcionar y cualquier aporte a entener mejor como se utilizan los splitters, por ahora no los entiendo del todo, sobre todo para acomodar los controles en ellos.

Al margen quería saber también si se pueden utilizar paneles con splitters y como. :shock:

Gracias desde ya, por toda la ayuda que siempre me brindan :D

Aquí va el código:

Code: Select all  Expand view
#include "fivewin.ch"
#include "ord.ch"
#include "splitter.ch"
#include "tree.ch"
#include "xbrowse.ch"
//
FUNCTION Main()
    LOCAL oItem1, oItem2, oItem3, oItem4
    LOCAL oWnd, oSplit, oFont, oBar, oTree, oTItem[5], oBrw
    LOCAL oCarpeta[2], oGrp[4], oBtn[11], bWhen, oMenu

   
    FIELD first, city
        
    SET DEFAULT TO .\DATA
    USE CUSTOMER ALIAS CUSTOMER NEW EXCLUSIVE
    INDEX ON FIRST TAG FIRST
    INDEX ON CITY TAG CITY
    cAlias:=Alias()
    GO TOP
   
    DEFINE FONT oFont NAME "Ms Sans Serif"  SIZE 0, -10 BOLD
   
     DEFINE WINDOW oWnd FROM 10, 10 TO 50, 140
        //Definición de Ribbon
        oBar := TDotNetBar():New( 0, 205, 1300, 113, oWnd, 1 )
        oBar:lDisenio := .t.
        oCarpeta[1] := TCarpeta():New( oBar, "Navegación" )
            oGrp[1] := TDotNetGroup():New( oCarpeta[1], 250, "Navegación", .f.,, "" )
                oBtn[1] := TDotNetButton():New( 60, oGrp[1], ".\bmps\primero.bmp","Primero", 1, {|| .t.},  oMenu , bWhen, .f., .f., .f. )
                oBtn[2] := TDotNetButton():New( 60, oGrp[1], ".\bmps\anterior.bmp","Anterior", 2, {|| .t.},  oMenu , bWhen, .f., .f., .f. )
                oBtn[3] := TDotNetButton():New( 60, oGrp[1], ".\bmps\siguiente.bmp","Siguiente", 3, {|| .t.},  oMenu , bWhen, .f., .f., .f. )
                oBtn[4] := TDotNetButton():New( 60, oGrp[1], ".\bmps\ultimo.bmp","Último", 4, {|| .t.},  oMenu , bWhen, .f., .f., .f. )
               
            oGrp[2] := TDotNetGroup():New( oCarpeta[1], 128, "Búsquedas", .f.,, "" )
                oBtn[5] := TDotNetButton():New( 60, oGrp[2], ".\bmps\numeral.bmp","por  ID.", 1, {|| .t.},  oMenu , bWhen, .f., .f., .f. )
                oBtn[6] := TDotNetButton():New( 60, oGrp[2], ".\bmps\buscar.bmp","p/Nombre", 2, {|| .t.},  oMenu , bWhen, .f., .f., .f. )
         
            oGrp[3] := TDotNetGroup():New( oCarpeta[1], 186, "Otros", .f.,, "" )
                oBtn[7] := TDotNetButton():New( 60, oGrp[3], ".\bmps\calend.bmp","Calendario", 1, {|| .t.},  oMenu , bWhen, .f., .f., .f. )
                oBtn[8] := TDotNetButton():New( 60, oGrp[3], ".\bmps\calcular.bmp","Calculadora", 2, {|| .t.},  oMenu , bWhen, .f., .f., .f. )
                oBtn[9] := TDotNetButton():New( 60, oGrp[3], ".\bmps\salir.bmp","Salir", 3, {|| .t.},  oMenu , bWhen, .f., .f., .f. )

        oCarpeta[2] := TCarpeta():New( oBar, "Edición" )
            oGrp[4] := TDotNetGroup():New( oCarpeta[2], 128, "Edición", .f.,, "" )
                oBtn[10] := TDotNetButton():New( 60, oGrp[4], ".\bmps\nuevo.bmp","Nuevo", 1, {|| .t.},  oMenu , bWhen, .f., .f., .f. )
                oBtn[11] := TDotNetButton():New( 60, oGrp[4], ".\bmps\eliminar.bmp","Eliminar", 2, {|| .t.},  oMenu , bWhen, .f., .f., .f. )
        //Fin de definición de Ribbon

        //Definición del Tree         
        oTree = TTreeView():New( 8, 0, oWnd,,,,,200,800 )
       
        //pone en el titulo de la ventana la elección.
        //oTree:bChanged = { || oWnd:SetText( If( oTree:GetSelected():GetParent() != nil,;
          //            oTree:GetSelected():GetParent():cPrompt + " + ", "" ) + ;
          //            oTree:GetSelText() ) }
        //oTree:SetImageList( oImageList )

        oItem1 = oTree:Add( "Opcion1" )

        oItem1:Add( "Otras Opciones" )

        oItem2 = oItem1:Add( "Más aún" )
            oItem2:Add( "Opcion2" )
            oItem2:Add( "Opcion3" )

        oItem3 = oItem2:Add( "Otros Items" )
            oItem3:Add( "Opcion4" )

        oTree:Add( "Opcion5" )

        oItem4 = oTree:Add( "Opcion6" )
        oItem4:Add( "Opcion7" ) 
         //Fin definición Tree
         
         //Definición Browse
         @ 200,250 XBROWSE oBrw  ;
            COLUMNS "First", "City", "State", "Married", "HireDate", "Age", "Salary", "Hora", "cImagen", "Imagen" ;
            OF oWnd ;
            ALIAS cAlias AUTOSORT NOBORDER FOOTERS AUTOCOLS
           
       
       
        XBrNumFormat( 'E', .t. )
        SetBalloon( .t. )   
        oBrw:nStretchCol   := 0
         
        oBrw:nRowDividerStyle = LINESTYLE_NOLINES
        oBrw:nColDividerStyle = LINESTYLE_NOLINES
        oBrw:nMarqueeStyle    = MARQSTYLE_HIGHLROW
       
        oBrw:First:nEditType:= EDIT_GET
           
        oBrw:City:nEditType:= EDIT_GET_LISTBOX
        oBrw:City:aEditListTxt:={"uno", "dos", "tres"}
       
        oBrw:Married:nEditType:=EDIT_GET
       
        oBrw:HireDate:nEditType     := EDIT_DATE
           
        WITH OBJECT oBrw:First
            :cSortOrder:="FIRST"
            :bLClickHeader:= {|| oBrw:Gotop() } 
        END
       
        WITH OBJECT oBrw:City
            :cSortOrder:="CITY"
            :bLClickHeader:= {|| ( oBrw:Gotop() ) }
        END
       
        WITH OBJECT oBrw:state
            :nEditType     := EDIT_GET_BUTTON   
            :addResource( ".\bmps\next.bmp" )
            :lBtnTransparent := .t.
            :nBtnBmp := 1
            :bEditValid    := {|o| if ( Empty(o:value()) , .f., .t.) }
            :bEditBlock   := {|| MsgInfo( "No hago nada :)") }
           
        END
       
        WITH OBJECT oBrw:salary
            :SetProgBar( { || nMaxSal },, { || { nProgClr, CLR_WHITE } } )
            :nTotal   := 0 ; :lTotal   := .t. ; :nEditType := EDIT_GET
            :nDataStrAlign := AL_RIGHT
        END
       
        WITH OBJECT oBrw:Age
             :nTotal   := 0 ; :lTotal   := .t. ; :nEditType := EDIT_GET
            :nDataStrAlign := AL_RIGHT
        END
       
        WITH OBJECT oBrw:hora
            :nEditType     := EDIT_TIME
            :lBtnTransparent := .t.
        END
       
        WITH OBJECT oBrw:cImagen
            :nEditType       := EDIT_BUTTON
            :addResource( ".\bmps\files.bmp" )
            :lBtnTransparent := .t.
            :nBtnBmp := 1   //si no se pone no aparece el botón.
            :bEditBlock      := { |nRow, nCol, oCol| ( oCol:Value := cGetFile( "*.*", "Selecione un archivo:" ), ;
                            customer->Imagen:=oCol:Value ) }
        END
       
          WITH OBJECT oBrw:Imagen
            :nEditType       := EDIT_GET
            :cDataType := 'F'  //esto hace que se guarde el path y nombre del archivo en la base pero se muestre la imagen.
        END
       
        oBrw:bSeek := {|c| CUSTOMER->( DbSeek( c ,.t. ) ) }
//      oBrw:oSeek:=oSay
//      oBrw:oSeek:nLeft := oBrw:nLeft + oBrw:aCols[ 1 ]:nDisplayCol
       
        oBrw:MakeTotals()
       
        oBrw:CreateFromCode()
         //Fin definicion Browse
         
         //Definición del Splitter contenedor del Browse y el Tree
         @ 0, 200 SPLITTER oSplit ;
        VERTICAL _3DLOOK ;
        PREVIOUS CONTROLS oTree ;
        HINDS CONTROLS oBrw, oBar ;
        SIZE 4, 800 PIXEL ;  //ancho y largo del splitter
        OF oWnd
       
     ACTIVATE WINDOW oWnd ;
          ON RESIZE (  oSplit:AdjClient() )
RETURN nil

Re: Splitter con varios controles

PostPosted: Fri Jun 25, 2010 12:43 pm
by jose_murugosa
Alguna idea? :(

Re: Splitter con varios controles

PostPosted: Fri Jun 25, 2010 1:39 pm
by horacio
José, yo uso extensivamente los splitter y lo que generalmente hago para diseñar las pantallas es poner primero los controles sobre la misma y después defino los splitter. Tu código parece estar bien, yo utilizaría oSplit : Adjust( .t.,.t.,.f.,.t. ) en Resize. Si se pueden usar paneles y, creo cualquier control. Espero te sirva

Re: Splitter con varios controles

PostPosted: Fri Jun 25, 2010 5:16 pm
by AIDA
Hola te falta el SetParent yo tengo algo similar a tu programita pero la windows de mi programita es MDI checa si te funciona sin ser MDI

@ 200,250 XBROWSE oBrw ;
COLUMNS "First", "City", "State", "Married", "HireDate", "Age", "Salary", "Hora", "cImagen", "Imagen" ;
OF oWnd ;
ALIAS cAlias AUTOSORT NOBORDER FOOTERS AUTOCOLS

SetParent( oBrw:hWnd, oWnd:hWnd )


Saluditos :wink:
Image

Re: Splitter con varios controles

PostPosted: Fri Jun 25, 2010 8:59 pm
by ruben Dario
Jos elo compilo pero me genera estos errores

Error: Unresolved external '_HB_FUN_TDOTNETBAR' referenced from

Error: Unresolved external '_HB_FUN_TCARPETA' referenced from

Error: Unresolved external '_HB_FUN_TDOTNETGROUP' referenced from

Error: Unresolved external '_HB_FUN_TDOTNETBUTTON' referenced from

Tengo la Version de FWH 8.03 no se si es la version o son algunas librerias especiales.

Re: Splitter con varios controles

PostPosted: Sat Jun 26, 2010 2:28 am
by jose_murugosa
ruben Dario wrote:Jos elo compilo pero me genera estos errores

Error: Unresolved external '_HB_FUN_TDOTNETBAR' referenced from

Error: Unresolved external '_HB_FUN_TCARPETA' referenced from

Error: Unresolved external '_HB_FUN_TDOTNETGROUP' referenced from

Error: Unresolved external '_HB_FUN_TDOTNETBUTTON' referenced from

Tengo la Version de FWH 8.03 no se si es la version o son algunas librerias especiales.


Es que tiene una clase que requiere de una librería de terceros, disculpa. :shock: :roll:
María, Voy a probar tus indicaciones y luego te cuento :D

Re: Splitter con varios controles

PostPosted: Sat Jun 26, 2010 2:28 am
by jose_murugosa
ruben Dario wrote:Jos elo compilo pero me genera estos errores

Error: Unresolved external '_HB_FUN_TDOTNETBAR' referenced from

Error: Unresolved external '_HB_FUN_TCARPETA' referenced from

Error: Unresolved external '_HB_FUN_TDOTNETGROUP' referenced from

Error: Unresolved external '_HB_FUN_TDOTNETBUTTON' referenced from

Tengo la Version de FWH 8.03 no se si es la version o son algunas librerias especiales.


Ante todo Ruben gracias por contestar, efectivamente requiere de una lib de terceros para funcionar, disculpa :roll:

Aída, probaré y te cuento... gracias a ambos. :D

Re: Splitter con varios controles

PostPosted: Sat Jun 26, 2010 12:12 pm
by RenOmaS
Puedes experimetar esto

Code: Select all  Expand view
   
 @ 0, 199 SPLITTER oSplit ;
        VERTICAL _3DLOOK ;
.....
      oWnd:oClient := oSplit

ACTIVATE WINDOW oWnd ;
          ON RESIZE (  oSplit:AdjClient() )