FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Splitter con varios controles
Posts: 1279
Joined: Mon Feb 06, 2006 04:28 PM
Splitter con varios controles
Posted: Thu Jun 24, 2010 04:18 PM
No termino de captar el uso de splitters.


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 (fw): Select all Collapse
#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:=oSay
// 聽 聽 聽oBrw: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
Saludos/Regards,

Jos茅 Murugosa

"Los errores en programaci贸n, siempre est谩n entre la silla, el teclado y la IA!!"
Posts: 1279
Joined: Mon Feb 06, 2006 04:28 PM
Re: Splitter con varios controles
Posted: Fri Jun 25, 2010 12:43 PM

Alguna idea? :(

Saludos/Regards,

Jos茅 Murugosa

"Los errores en programaci贸n, siempre est谩n entre la silla, el teclado y la IA!!"
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: Splitter con varios controles
Posted: Fri Jun 25, 2010 01:39 PM

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

Posts: 880
Joined: Fri Jan 12, 2007 08:35 PM
Re: Splitter con varios controles
Posted: Fri Jun 25, 2010 05:16 PM
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 :-)
Que es mejor que programar? creo que nada :)
Atropellada pero aqui ando :P

I love Fivewin

s茅蕦菨晒 谉蓯 蓯蕠s菨 opun莎 菨蕠s菨
Posts: 1078
Joined: Thu Sep 27, 2007 03:47 PM
Re: Splitter con varios controles
Posted: Fri Jun 25, 2010 08:59 PM

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.

Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
Posts: 1279
Joined: Mon Feb 06, 2006 04:28 PM
Re: Splitter con varios controles
Posted: Sat Jun 26, 2010 02:28 AM
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. :-) :-)
Mar铆a, Voy a probar tus indicaciones y luego te cuento :-)
Saludos/Regards,

Jos茅 Murugosa

"Los errores en programaci贸n, siempre est谩n entre la silla, el teclado y la IA!!"
Posts: 1279
Joined: Mon Feb 06, 2006 04:28 PM
Re: Splitter con varios controles
Posted: Sat Jun 26, 2010 02:28 AM
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 :-)

A铆da, probar茅 y te cuento... gracias a ambos. :-)
Saludos/Regards,

Jos茅 Murugosa

"Los errores en programaci贸n, siempre est谩n entre la silla, el teclado y la IA!!"
Posts: 205
Joined: Fri Oct 07, 2005 05:07 PM
Re: Splitter con varios controles
Posted: Sat Jun 26, 2010 12:12 PM
Puedes experimetar esto

Code (fw): Select all Collapse
 聽 聽 
聽@ 0, 199 SPLITTER oSplit ;
聽 聽 聽 聽 VERTICAL _3DLOOK ;
.....
聽 聽 聽 oWnd:oClient := oSplit

ACTIVATE WINDOW oWnd ;
聽 聽 聽 聽 聽 ON RESIZE ( 聽oSplit:AdjClient() )
Saludos/regards

RenOmaS



skype: americo.balboa

Continue the discussion