XBROWSE RESTRINGIR MULTISELECT

Ariel
Posts: 378
Joined: Wed Nov 29, 2006 1:51 pm
Location: Rosario - Argentina

XBROWSE RESTRINGIR MULTISELECT

Post by Ariel »

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.
User avatar
Silvio.Falconi
Posts: 7136
Joined: Thu Oct 18, 2012 7:17 pm
Been thanked: 1 time

Re: XBROWSE RESTRINGIR MULTISELECT

Post by Silvio.Falconi »

do you tried with oBrw:aselected ?
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 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
User avatar
joseluisysturiz
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: XBROWSE RESTRINGIR MULTISELECT

Post by joseluisysturiz »

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!
Ariel
Posts: 378
Joined: Wed Nov 29, 2006 1:51 pm
Location: Rosario - Argentina

Re: XBROWSE RESTRINGIR MULTISELECT

Post by Ariel »

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.
User avatar
joseluisysturiz
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: XBROWSE RESTRINGIR MULTISELECT

Post by joseluisysturiz »

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!
User avatar
FranciscoA
Posts: 2163
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: XBROWSE RESTRINGIR MULTISELECT

Post by FranciscoA »

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
User avatar
joseluisysturiz
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: XBROWSE RESTRINGIR MULTISELECT

Post by joseluisysturiz »

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!
User avatar
FranciscoA
Posts: 2163
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: XBROWSE RESTRINGIR MULTISELECT

Post by FranciscoA »

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
User avatar
joseluisysturiz
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: XBROWSE RESTRINGIR MULTISELECT

Post by joseluisysturiz »

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!
User avatar
FranciscoA
Posts: 2163
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: XBROWSE RESTRINGIR MULTISELECT

Post by FranciscoA »

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
User avatar
MarioG
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR
Been thanked: 2 times

Re: XBROWSE RESTRINGIR MULTISELECT

Post by MarioG »

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... :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


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
User avatar
MarioG
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR
Been thanked: 2 times

Re: XBROWSE RESTRINGIR MULTISELECT

Post by MarioG »

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
User avatar
MarioG
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR
Been thanked: 2 times

Re: XBROWSE RESTRINGIR MULTISELECT

Post by MarioG »

toc...toc
Nadie usa MULTISELCT?
Como se usaría, si no es como prentendo hacerlo?
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
nageswaragunupudi
Posts: 10721
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Been thanked: 8 times
Contact:

Re: XBROWSE RESTRINGIR MULTISELECT

Post by nageswaragunupudi »

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
User avatar
MarioG
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR
Been thanked: 2 times

Re: XBROWSE RESTRINGIR MULTISELECT

Post by MarioG »

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
Post Reply