FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour XBROWSE RESTRINGIR MULTISELECT
Posts: 389
Joined: Wed Nov 29, 2006 01:51 PM
XBROWSE RESTRINGIR MULTISELECT
Posted: Sat Oct 20, 2012 12:49 PM

hola a todos,
alguien sabe como puedo controlar la multiseleccion en un xbrowse con :

oBrw:nMarqueeStyle:= MARQSTYLE_HIGHLWIN7
oBrw:lMultiSelect := .t.

x ejemplo, que no pueda elegir mas de 5 items ?

Gracias,
Salu2, Ariel.

Posts: 7317
Joined: Thu Oct 18, 2012 07:17 PM
Re: XBROWSE RESTRINGIR MULTISELECT
Posted: Sun Oct 21, 2012 08:40 PM

do you tried with oBrw:aselected ?

Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)

I use : FiveWin for Harbour March-April 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: XBROWSE RESTRINGIR MULTISELECT
Posted: Mon Oct 22, 2012 01:40 AM

Fijate, oBrw:aSelected contiene las posiciones de los registros seleccionados y se va incrementando,asi que contiene cantidad de registros seleccionados, tendrias que ver si al ir seleccionando se puede hacer alguna validacion para que alli verifiques el LEN de oBrw:aSelected y si ya llego a su limite no permitirle seleccionar mas registros, la otra forma es que deje que seleccione la cantidad que quiera y cuando clickeen sobre algun boton para loque vayan hacer con los registros seleccionados verifiques el LEN de oBrw:aSelected y si es mayor a lo permitido mandes mensajes que tiene mas de lo permitido y que debe deseleccionar X cantidad que seria el LEN de oBrw:aSelected menos la cantidad permitida, espero te ayude y de idea de que hacer, saludos... :shock:

Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 389
Joined: Wed Nov 29, 2006 01:51 PM
Re: XBROWSE RESTRINGIR MULTISELECT
Posted: Mon Oct 22, 2012 10:34 AM

Silvio, Jose Luis,
Gracias por responder... la pregunta es... como se cuando seleccionan o no el registro ??? o sea con q metodo controlo la seleccion ?
Esta es la configuracion de la columna :

    WITH OBJECT oLbx:InsCol( 1 )
          :cHeader       := " "
          :bEditValue    := { || If( AScan( oLbx:aSelected, oLbx:BookMark ) > 0, .t., nil ) }
          :SetCheck()
          :nHeadBmpNo    := { || If( Len( oLbx:aSelected ) == oLbx:nLen, 1, 2 ) }
          IF nTope == 0
                :bLClickHeader := { |r,c,f,oCol| If( Len( oLbx:aSelected ) == oLbx:nLen, ;
                                               oLbx:SelectNone(), oLbx:SelectAll() ) }
                endif
  END

Gracias.
Salu2, Ariel.

Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: XBROWSE RESTRINGIR MULTISELECT
Posted: Tue Oct 23, 2012 12:45 AM

Ariel, el aSelect contiene es la posicion del registro seleccionado, no de columna, por lo cual cuando aSelect es mayor a cero, entonces se han hecho selecciones, tienes que tener en cuenta, que cuando marcas 1 solo registro en el xbrowse, automaticamente aSelect se incremente, eso quiere decir que casi siempre por defecto si hay click sobre un registro, entoces alimenta aSelect, para ir seleccionando los demas, debes usar tecla ctrl o shift, yo por lo menos valido LEN de aSelect al hacer click sobre un boton, igual puedes ver esta linea en la clase xBrowse a ver si responde mejor tu pregunta y revisa METHOD Select( nOperation ) CLASS TXBrowse, saludos... :shock:

lHighLite := ::lMultiSelect .and. ( Ascan( ::aSelected, Eval( ::bBookMark ) ) > 0 )

if ::lMultiSelect .and. ( nStyle == MARQSTYLE_HIGHLROWMS .or. ::nMarqueeStyle == MARQSTYLE_HIGHLWIN7 )

  lHighLite := ( Ascan( ::aSelected, Eval( ::bBookMark ) ) > 0 )

endif

Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: XBROWSE RESTRINGIR MULTISELECT
Posted: Tue Oct 23, 2012 01:33 AM

Hola.

//Restringir cantidad de registros seleccionados.
//Con Ctrl+Click funciona bien... con Shift+flecha-abajo, no.
oBrw:bKeyDown := { || if(len(oBrw:aSelected) = 3, MsgInfo("Seleccion maxima agotada"+STR(len(oBrw:aSelected))),) }

Si bien es cierto que usando Shift+flecha-Abj aSelect se incrementa, no obedece a la condicion expuesta arriba en oBrw:bKeyDown.

Con Shift + flecha-abajo, solo funciona si el usuario suelta la Shift y la vuelve a presionar. Creo que xBrowse necesita adaptarse a este comportamiento.

Por esto último es que abrí el post "Simular soltar y oprimir una tecla"

Saludos.

Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: XBROWSE RESTRINGIR MULTISELECT
Posted: Tue Oct 23, 2012 01:48 AM
FranciscoA wrote:Hola.

//Restringir cantidad de registros seleccionados.
//Con Ctrl+Click funciona bien... con Shift+flecha-abajo, no.
oBrw:bKeyDown := { || if(len(oBrw:aSelected) = 3, MsgInfo("Seleccion maxima agotada"+STR(len(oBrw:aSelected))),) }

Si bien es cierto que usando Shift+flecha-Abj aSelect se incrementa, no obedece a la condicion expuesta arriba en oBrw:bKeyDown.

Con Shift + flecha-abajo, solo funciona si el usuario suelta la Shift y la vuelve a presionar. Creo que xBrowse necesita adaptarse a este comportamiento.

Por esto último es que abrí el post "Simular soltar y oprimir una tecla"

Saludos.


Saludos Francisco, disculpa te contradiga en lo que dices que no funciona la multi-seleccion con Shift+flecha-Abj/flecha Arr , me pusistes a dudar de lo que dije, asi que volvi a revisarlo y estoy en lo correcto, a mi me funciona sin ningun problema Shift + flecha arriba e igual flecha abajo sin necesidad de soltar el shift, igual lo uso en combinacion ctrl+click y todo funciona perfecto...acabo hacer una prueba antes de escribir, por eso lo dije y lo mantengo...saludos...
Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: XBROWSE RESTRINGIR MULTISELECT
Posted: Tue Oct 23, 2012 02:27 AM
Saludos Francisco, disculpa te contradiga en lo que dices que no funciona la multi-seleccion con Shift+flecha-Abj/flecha Arr , me pusistes a dudar de lo que dije, asi que volvi a revisarlo y estoy en lo correcto, a mi me funciona sin ningun problema Shift + flecha arriba e igual flecha abajo sin necesidad de soltar el shift, igual lo uso en combinacion ctrl+click y todo funciona perfecto...acabo hacer una prueba antes de escribir, por eso lo dije y lo mantengo...saludos...


Hola José Luis, creo que no expliqué bien.
No me refiero a que con Shift+flechaAbajo no funcione la multi-seleccion, sino a que no funciona igual que Ctrl-Click, cuando tratas de restringir los registros seleccionados a un numero dado (en este ejemplo, 3).

oBrw:bKeyDown := { || if(len(oBrw:aSelected) = 3, MsgInfo("Seleccion maxima agotada"+STR(len(oBrw:aSelected))),) }

Si utilizas el codeblock anterior, verás que con Ctrl-Click se ejecuta el msginfo() al llegar a 3. Con Shift+Flecha no lo hace, y el usuario puede continuar seleccionando mas registros que los restringidos, sin que se ejecute el msginfo().

Si a ti te funciona este codeblock, entonces ya sabemos que se debe a la version de FWH. Estoy utilizando la 1006.
Saludos.
Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: XBROWSE RESTRINGIR MULTISELECT
Posted: Tue Oct 23, 2012 02:51 AM

Ok Francisco, disculpa el mal entendido, tienes razon, no funciona con shift + flech arri/abaj el:

:bKeyDown := { || if(len(oBrow:aSelected) = 2, MsgInfo("Seleccion maxima agotada"+STR(len(oBrow:aSelected))),) }

creo que si revisamos como funciona al hacer click podemo repararlo entre todos, asi nos beneficiarimos y como dice Daniel, es una clase para mejorarla entre todos, revisare a ver que veo y luego comento, saludos... :shock:

Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: XBROWSE RESTRINGIR MULTISELECT
Posted: Tue Oct 23, 2012 02:57 AM

Jose Luis, yo también voy a revisar la Classe a ver si encuentro algo.
Saludos.

Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: XBROWSE RESTRINGIR MULTISELECT
Posted: Fri Aug 30, 2013 01:17 PM
Estimados;
joseluisysturiz wrote:Ariel, el aSelect contiene es la posicion del registro seleccionado, no de columna, por lo cual cuando aSelect es mayor a cero, entonces se han hecho selecciones, tienes que tener en cuenta, que cuando marcas 1 solo registro en el xbrowse, automaticamente aSelect se incremente, eso quiere decir que casi siempre por defecto si hay click sobre un registro, entoces alimenta aSelect, para ir seleccionando los demas, debes usar tecla ctrl o shift, yo por lo menos valido LEN de aSelect al hacer click sobre un boton, igual puedes ver esta linea en la clase xBrowse a ver si responde mejor tu pregunta y revisa METHOD Select( nOperation ) CLASS TXBrowse, saludos... :-)

lHighLite := ::lMultiSelect .and. ( Ascan( ::aSelected, Eval( ::bBookMark ) ) > 0 )

if ::lMultiSelect .and. ( nStyle == MARQSTYLE_HIGHLROWMS .or. ::nMarqueeStyle == MARQSTYLE_HIGHLWIN7 )

lHighLite := ( Ascan( ::aSelected, Eval( ::bBookMark ) ) > 0 )
endif


Me surge el siguiente problema al usar MARQSTYLE_HIGHLROWMS
Procedo a seleccionar registros mediante Ctrl - clic izq. Luego,
- Si suelto la tecla de Control y pulso, sobre el último seleccionado; y luego pulso boton derecho para seleccionar una opciçón desde un menu secundario, :aSelected solo almacena el último registro marcado.
- Si Mantengo la tecla de Control apretada (lo que ya no es lo mejor para el usuario), y accedo al menu secundario y ejecutar una opción, la evauación de :aSelected me muestra todos los registros seleccionados, menos el último sobre el que pulse botón derecho.

Evidentemente asi no es la manera de trabajar esta modalidad, aunque yo emule lo que normalmente hago con Windows al seleccionar varios archivos.
Entonces la consulta es. Cual es la manera optima de trabajar con esta opción

muchas gracias
Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: XBROWSE RESTRINGIR MULTISELECT
Posted: Mon Sep 02, 2013 01:03 PM

Gente;
reformulo mi consulta por si no fui explícito

Con el Explorador de windows, puedo, pulsando Ctrl-clic izq, marcar varios archivos. Luego, haciendo clic derecho, sobre cualquiera de ellos, abrir el menu secundario y, puedo entre otros, seleccionar "Copiar". Posteriormente al "Pegar" lo hará sobre todos los registros seleccionados.
Hasta aquí no dije nada nuevo 8)
En un xBrowse si hago este proceso sucede que:
1.- Al señalar uno de los registros marcados y hacer clic derecho, para abrir un menu secundario y tomar una opcion (borrar x ej.). El ::aSelected contiene un solo registro (el último sobre el que se hizo clic)
2.- Si mantengo la tecla Ctrl presionada y repito el proceso, ::aSelected tiene todos los registros marcados, menos el que se corresponde con el clic derecho.

Mi intención es marcar varios, con Ctrl o Shift, para luego ejecutar una acción sobre ellos
Cual es la forma correcta?

gracias

Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: XBROWSE RESTRINGIR MULTISELECT
Posted: Tue Sep 03, 2013 11:45 PM

toc...toc
Nadie usa MULTISELCT?
Como se usaría, si no es como prentendo hacerlo?

Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: XBROWSE RESTRINGIR MULTISELECT
Posted: Thu Sep 05, 2013 02:03 PM
Ariel wrote:hola a todos,
alguien sabe como puedo controlar la multiseleccion en un xbrowse con :

oBrw:nMarqueeStyle:= MARQSTYLE_HIGHLWIN7
oBrw:lMultiSelect := .t.

x ejemplo, que no pueda elegir mas de 5 items ?

Gracias,
Salu2, Ariel.

You can choose any number of rows. There is no limit.
Regards



G. N. Rao.

Hyderabad, India
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: XBROWSE RESTRINGIR MULTISELECT
Posted: Thu Sep 05, 2013 05:16 PM

Mr Rao;
Thank for your respond (in other post too)
sorry for my english (I write from Google Traductor)

I put, xbrowse, in active the Multi selection

First, I selec with shift+clic or ctrl+clic, some registers.
after I do right clic (to open a popup), over a selection and ::aSelected only return the last register selected.
If I do again with Ctrl pressed. ::aSelected, returned all the registers, but not the register where I did clic.

How must i do it that?. This process is clean from Windows Explorer when do a copy files, for example

Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina