Horizontal scroll en un listbox

Horizontal scroll en un listbox

Postby DiegoCandel » Tue Dec 29, 2009 11:40 am

Hola a todos,

Me gustaría tener un scroll horizontal en un listbox que tiene bastantes campos. He intentado checkear la opción Horizontal Scroll desde la edición del fichero de recursos. Parece que no hace ningún efecto y no me aparece el scroll horizontal. Se debería hacer desde código?. No se puede hacer desde el fichero de recursos?. En este caso, como se incluiria esta barra desde codigo?. El scroll vertical sí me aparece.

El listbox lo redefino de esta forma:

REDEFINE LISTBOX ::oListBox FIELDS (::oDbfCli:cAlias)->cCodCli, (::oDbfCli:cAlias)->cNomCli, (::oDbfCli:cAlias)->cNomCom , (::oDbfCli:cAlias)->cDirCli, (::oDbfCli:cAlias)->cPobCli, (::oDbfCli:cAlias)->cCodProv, (::oDbfCli:cAlias)->cPTLCli, (::oDbfCli:cAlias)->cFaxCli, (::oDbfCli:cAlias)->cDniCif, (::oDbfCli:cAlias)->cContacto ;
ALIAS ::oDbfCli:cAlias ;
ID 121 OF ::oDlg ;
HEADER "Código", "Nombre", "NombreComunidad", "Dirección", "Población", "CódigoProvincia", "PTLCli", "FaxCli", "DniCif", "Contacto" ;
FIELDSIZES 50, 210, 190, 220, 100, 100, 50, 120, 75, 75 ;
ON CHANGE ::Cambio() ;
ON DBLCLICK ::DobleClick() ;
COLOR CLR_BLACK, CLR_BLACK

::oListBox:nClrPane:={||iIF((::oListBox:cAlias)->(OrdKeyNo())%2==0,nRGB(242,250,252),nRGB(226,226,208))}

Saludos y gracias de antemano.
DiegoCandel
 
Posts: 18
Joined: Wed Nov 04, 2009 9:41 am

Re: Horizontal scroll en un listbox

Postby Antonio Linares » Tue Dec 29, 2009 6:45 pm

Diego,

Comprueba que tengas el estilo WS_HSCROLL en el recurso y que esté definido el control en el recurso como "TWBrowse" (ó "TXBrowse", etc. según sea el browse que usas).
regards, saludos

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

Re: Horizontal scroll en un listbox

Postby DiegoCandel » Wed Dec 30, 2009 10:16 am

Antonio,

Ya he conseguido poner el horizontal scroll. El estilo WS_HSCROLL ya lo tenia puesto en el estilo. Me faltaba definir el control en el recurso como "TWBrowse" ya que lo tenia como "LISTBOX".
Una pregunta aunque tal vez un poco ingenua (...de principiante):

Qué si el control en el recurso está definido como ListBox no se puede conseguir el horizontal scroll bar?. Si es así, por qué esta carencia en este control?.

Saludos y gracias por la ayuda.
DiegoCandel
 
Posts: 18
Joined: Wed Nov 04, 2009 9:41 am

Re: Horizontal scroll en un listbox

Postby Antonio Linares » Wed Dec 30, 2009 11:29 am

Diego,

Un control ListBox standard de Windows no admite scroll horizontal. Windows no prevee que se desplace lateralmente (salvo que sea un listbox "partido" en varias columnas).

pero lo más importante, es que la clase de control especificada en el recurso (fichero RC) debe corresponder con la clase de control que usamos desde el PRG :-)
regards, saludos

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

Re: Horizontal scroll en un listbox

Postby DiegoCandel » Wed Dec 30, 2009 11:38 am

"pero lo más importante, es que la clase de control especificada en el recurso (fichero RC) debe corresponder con la clase de control que usamos desde el PRG"...

Antonio,

Y si por ejemplo la clase de control especificada en el recurso (fichero RC) es TwBrowse y la clase de control que usamos desde el PRG es ListBox, seria algo sin sentido?. "Manda" lo que se ponga en el (fichero RC)?.
Si pongo la clase de control especificada en el recurso (fichero RC) como TwBrowse y la clase de control que usamos desde el PRG como ListBox, si que se muestra la barra horizontal...

Disculpa si son cuestiones absurdas... :D
DiegoCandel
 
Posts: 18
Joined: Wed Nov 04, 2009 9:41 am

Re: Horizontal scroll en un listbox

Postby Antonio Linares » Wed Dec 30, 2009 4:00 pm

Diego,

El nombre especificado en el recurso le indica a Windows la clase de control a crear, pero la clase que usemos en el PRG le asocia la "funcionalidad", además teniendo presente que existen clases de controles predefinidas de Windows (como ListBox) y que tambien existen nuevas clases creadas por FWH (como TWBrowse).

Es por esto que se puede usar (por error) un ListBox en el recurso, pues Windows puede crearlo, y un TWBrowse en el PRG que le "intenta" dar la funcionalidad del browse.

Lo correcto: ambos deben ser de la misma clase :-)
regards, saludos

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

Re: Horizontal scroll en un listbox

Postby DiegoCandel » Wed Dec 30, 2009 4:47 pm

Gracias Antonio. Eso haré, poner los dos (fichero RC) y prg con el mismo control.

En el fichero RC estoy utilizando un TWBrowse. Y en el PRG tengo redefinido un ListBox (...por lo que aunque aparentemente está bien, no es correcto como bien has dicho tú).

Por lo que mi intención en cambiar el redefine listbox...bla,bla,bla...por su TWBrowse correspondiente.

Si para redefinir el ListBox hago lo sguiente:

REDEFINE LISTBOX ::oListBox FIELDS (::oDbfCli:cAlias)->cCodCli, (::oDbfCli:cAlias)->cNomCli, (::oDbfCli:cAlias)->cNomCom , (::oDbfCli:cAlias)->cDirCli, (::oDbfCli:cAlias)->cPobCli, (::oDbfCli:cAlias)->cCodProv, (::oDbfCli:cAlias)->cPTLCli, (::oDbfCli:cAlias)->cFaxCli, (::oDbfCli:cAlias)->cDniCif, (::oDbfCli:cAlias)->cContacto ;
ALIAS ::oDbfCli:cAlias ;
ID 121 OF ::oDlg ;
HEADER "Código", "Nombre", "NombreComunidad", "Dirección", "Población", "CódigoProvincia", "PTLCli", "FaxCli", "DniCif", "Contacto" ;
FIELDSIZES 50, 210, 190, 220, 100, 100, 50, 120, 75, 75 ;
ON CHANGE ::Cambio() ;
ON DBLCLICK ::DobleClick() ;
COLOR CLR_BLACK, CLR_BLACK

::oListBox:nClrPane:={||iIF((::oListBox:cAlias)->(OrdKeyNo())%2==0,nRGB(242,250,252),nRGB(226,226,208))}

Esto último para el efecto pijama...

Me podrías dar alguna idea de como sería la redefinición semejante con el TWBrowse?.

He estado mirando un poco, y lo hago (intento hacer) de esta manera:

REDEFINE TWBROWSE oBrw ALIAS "::oDbfCli:cAlias" ID 121 OF oDlg

ADD COLUMN TO oBrw;
HEADER "Código" ;
SIZE 50 PIXELS;

ADD COLUMN TO oBrw;
HEADER "Nombre" ;
SIZE 210 PIXELS;

ADD COLUMN TO oBrw;
HEADER "NombreComunidad" ;
SIZE 190 PIXELS;

etc,etc,etc...con los otros campos que quedan...

Como te he comentado el fichero(RC) ya está correcto. He puesto el control TWBrowse que lo he cambiado por el ListBox que habia antes. Me queda adaptar el TWBrowse en el PRG.
Hay que añadir algún include especial, añadir alguna clase....?. Con el redefine del TWBrowse voy bien encaminado...?

Saludos y gracias.
DiegoCandel
 
Posts: 18
Joined: Wed Nov 04, 2009 9:41 am

Re: Horizontal scroll en un listbox

Postby Antonio Linares » Wed Dec 30, 2009 4:55 pm

Diego,

Lo estas haciendo bien :-)

Es que REDEFINE LISTBOX ::oListBox FIELDS ... en realidad crea un control TWBrowse

Esa sintaxis se creo para el primer browse que se implementó en FiveWin y de ahí que se usase LISTBOX, por su semejanza con un ListBox. Luego se han ido implementando nuevos browses con nuevas sintaxis y más capacidades.

Tambien hay browses que han desarrollado usuarios avanzados de FiveWin, como el TSBrowse del Maestro Manuel Mercado. El más potente que ha creado FiveTech es el TXBrowse y tienes un ejemplo en FWH\samples\TestXBrw.prg
regards, saludos

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

Re: Horizontal scroll en un listbox

Postby DiegoCandel » Wed Dec 30, 2009 5:01 pm

oK!. Gracias Antonio.

No sabia que: Redefine ListBox fields....era equivalente a Redefine TWBrowse...etc,etc,etc...

Pues nada. Para la otra ya lo sé... :D
DiegoCandel
 
Posts: 18
Joined: Wed Nov 04, 2009 9:41 am


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: antolin and 30 guests