Listbox multiselect. Cambio de estilo.

Listbox multiselect. Cambio de estilo.

Postby Carles » Mon Nov 13, 2006 9:13 am

Hola,

Es posible cambiar en tiempo de ejecucion el estilo de un listbox ? Deseo pasar de multiselect a normal.

En la clase se define nStyle := nOr( ..., If( lMulti, LBS_MULTIPLESEL, 0 )...)

Gracias
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Carles
 
Posts: 1124
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona

Postby Antonio Linares » Mon Nov 13, 2006 9:45 am

Carles,

Prueba con:

SetWindowLong( oListBox:hWnd, GWL_STYLE, nStyle )
regards, saludos

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

Postby Carles » Mon Nov 13, 2006 10:02 am

Hola Antonio,

La idea parece buena, pero no funciona :( . Ejemplo:

Code: Select all  Expand view
#include "fivewin.ch"

STATIC oWnd, oLbx

FUNCTION Main()

   LOCAL oBar
   LOCAL aItems := { 'Primero', 'Segundo', 'Tercero' }
   LOCAL cVar   := ''

   DEFINE WINDOW oWnd

      DEFINE BUTTONBAR oBar OF oWnd
      DEFINE BUTTON OF oBar ACTION   TestStyle()

      @50, 50 LISTBOX oLbx VAR cVar ITEMS aItems PIXEL SIZE 100, 100 OF oWnd

   ACTIVATE WINDOW oWnd

RETU .T.

/*
* Window field offsets for GetWindowLong()
*/

#define GWL_WNDPROC         (-4)
#define GWL_HINSTANCE       (-6)
#define GWL_HWNDPARENT      (-8)
#define GWL_STYLE           (-16)
#define GWL_EXSTYLE         (-20)
#define GWL_USERDATA        (-21)
#define GWL_ID              (-12)

STATIC FUNCTION TestStyle()

LOCAL nStyle := nOr( GetWindowLong( oLbx:hWnd, GWL_STYLE ), LBS_MULTIPLESEL )

SetWindowLong( oLbx:hWnd, GWL_STYLE, nStyle )

RETU NIL


Alguna idea mas ?
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Carles
 
Posts: 1124
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona

Postby Antonio Linares » Mon Nov 13, 2006 10:21 am

Carles,

Por lo visto no permite cambiar ese estilo dinamicamente.

La solución es reconstruir el control:
Code: Select all  Expand view
   DEFINE BUTTON OF oBar ACTION ReBuild( oWnd, oLbx, aItems, @cVar )
   ...

function ReBuild( oWnd, oLbx, aItems, cVar )

   oLbx:End()

   @50, 50 LISTBOX oLbx VAR cVar ITEMS aItems PIXEL SIZE 100, 100 OF oWnd MULTISEL
   
return nil   
regards, saludos

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

Postby Carles » Mon Nov 13, 2006 10:38 am

Antonio,

Era la ultima solucion a realizar :-)

Gracias
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Carles
 
Posts: 1124
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 96 guests