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 , 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.
Gracias desde ya, por toda la ayuda que siempre me brindan
Aquí va el código:
- Code: Select all Expand view RUN
- #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