como marcar lineas en un LISTBOX

como marcar lineas en un LISTBOX

Postby Elias Torres » Mon Oct 30, 2006 5:00 pm

Hola a todos....

Esta vez me encuentro con que necesito marcar o resaltar cada linea que toco de un listbox. La verdad es que no se como hacerlo. Imagino que cogiendo el recno() de la linea y luego no se como decirle que esa linea me la pinte de un color....

Alguien me puede indicar el camino...


Saludos y gracias

Elías Torres.
Elias Torres
 
Posts: 233
Joined: Wed Aug 09, 2006 3:07 pm

Postby Antonio Linares » Mon Oct 30, 2006 6:36 pm

Elias,

Añade un nuevo campo lógico (lSelect) a la DBF. Cuando el usuario seleccione ese registro, cambias el valor a .t.. Y usas el siguiente codeblock para el color:

oBrowse:nClrPane := { || If( Tabla->lSelect, COLOR_<uno>, COLOR_<otro> ) }
regards, saludos

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

Postby Elias Torres » Thu Nov 02, 2006 6:04 pm

Gracias Antonio por la ayuda. La verdad es que me falta poco para que me funcione lo que quiero. El problema que me encuentro es que no se como hacer que cuando se pulse en una linea se cambie de color y cuando se vuelva a pulsar en el mismo sitio vuelva a cambiar el color....


El codigo en el que quiero poner eso es este..

--------------------------------------
FUNCTION Listado_de_articulos()
--------------------------------------

LOCAL hBmp := ReadBitmap( CurDir() + "\go.bmp" )
LOCAL ocolor:=RGB(255,255,255),ocolor2:=RGB(123,123,123)

SELECT articulos
articulos->(DbGoTop())
DEFINE dialog odlg resource "Listado_articulos"

redefine LISTBOX oBrw;
FIELDS hBmp, articulos->cod_art, articulos->nom_art;
HEADERS "","Código", "Descripción" ID 500 OF oDlg

redefine button id 140 of odlg action;
( nRecno := articulos->( Recno() ),oDlg:End(),cesta_de_compra())
redefine button id 150 of odlg action odlg:end(),registros()

oBrw:nClrPane := { || If( articulos->lSelect, ocolor2, ocolor ) }
odlg:setcolor(RGB(1,1,1),RGB(230,184,94))

ACTIVATE dialog odlg

RETU nil

Saludos y gracias

Elías Torres.
Elias Torres
 
Posts: 233
Joined: Wed Aug 09, 2006 3:07 pm

Postby Elias Torres » Fri Nov 03, 2006 9:14 am

Hola a todos....

Bueno he sacado la forma de marcar y desmarcar la linea, lo malo es que solo he podido hacerlo de la siguiente manera, marco con el botón izquierdo y desmarco con el derecho. Esto me funciona pero creo que no es la mejor forma (para lo que yo quiero). Entonces se me ha ocurrido que lo mejor seria poner un 'check' para cada linea con lo que si lo marco se marcaria la linea y si lo desmarco se desmarcaría esa linea...¿esto es posible?. ¿Existe alguna forma de integrar un check box en el brows?...


Un saludo y gracias por la respuesta Antonio, ha sido de gran ayuda como siempre...

Elías Torres.
Elias Torres
 
Posts: 233
Joined: Wed Aug 09, 2006 3:07 pm

Postby Biel EA6DD » Fri Nov 03, 2006 10:14 am

Hola Elias, no se si he entendido bien lo que quieres hacer.
Prueba con el siguiente codigo.
Code: Select all  Expand view
oBrw:blClicked:={||Articulos->lSelect:=!Articulos->lSelect,oBrw:Refresh()}
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
User avatar
Biel EA6DD
 
Posts: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca

Postby Elias Torres » Fri Nov 03, 2006 11:03 am

Hola Biel, gracias por la ayuda es lo que me hacia falta.

Una duda..cuando estoy en un dialogo y desde alli llamo a otro, cuando salgo de este ultimo me vuelve al anterior. Es como que no se cierra el dialogo antes de llamar al segundo. Yo lo que estoy haciendo antes de llamar al segundo es terminar el primero con action odlg:end(), pero parece que no hace lo que pretendo...

Un saludo y gracias por la ayuda, sin este foro las cosas se me complicarían mucho....

Elías Torres.
Elias Torres
 
Posts: 233
Joined: Wed Aug 09, 2006 3:07 pm

Postby Antonio Linares » Fri Nov 03, 2006 11:15 am

Elías,

Si desde un diálogo modal llamas a otro, el anterior permanece activo. La forma de hacer lo que quieres es llamar al segundo despues de la activación del primero:

DEFINE DIALOG oDlg1 ...

ACTIVATE DIALOG oDlg1

// Aqui ya se ha terminado con oDlg1

DEFINE DIALOG oDlg2 ...

ACTIVATE DIALOG oDlg2
regards, saludos

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


Return to FiveWin para Pocket PC

Who is online

Users browsing this forum: No registered users and 19 guests