XBROWSE RESTRINGIR MULTISELECT
XBROWSE RESTRINGIR MULTISELECT
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.
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.
- Silvio.Falconi
- Posts: 7136
- Joined: Thu Oct 18, 2012 7:17 pm
- Been thanked: 1 time
Re: XBROWSE RESTRINGIR MULTISELECT
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
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
- joseluisysturiz
- Posts: 2064
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
Re: XBROWSE RESTRINGIR MULTISELECT
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... 

Dios no está muerto...
Gracias a mi Dios ante todo!
Gracias a mi Dios ante todo!
Re: XBROWSE RESTRINGIR MULTISELECT
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.
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.
- joseluisysturiz
- Posts: 2064
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
Re: XBROWSE RESTRINGIR MULTISELECT
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

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!
Gracias a mi Dios ante todo!
- FranciscoA
- Posts: 2163
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: XBROWSE RESTRINGIR MULTISELECT
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.
//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
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
- joseluisysturiz
- Posts: 2064
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
Re: XBROWSE RESTRINGIR MULTISELECT
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!
Gracias a mi Dios ante todo!
- FranciscoA
- Posts: 2163
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: XBROWSE RESTRINGIR MULTISELECT
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
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
- joseluisysturiz
- Posts: 2064
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
Re: XBROWSE RESTRINGIR MULTISELECT
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...
: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...

Dios no está muerto...
Gracias a mi Dios ante todo!
Gracias a mi Dios ante todo!
- FranciscoA
- Posts: 2163
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: XBROWSE RESTRINGIR MULTISELECT
Jose Luis, yo también voy a revisar la Classe a ver si encuentro algo.
Saludos.
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
- MarioG
- Posts: 1380
- Joined: Fri Oct 14, 2005 1:28 pm
- Location: Resistencia - Chaco - AR
- Been thanked: 2 times
Re: XBROWSE RESTRINGIR MULTISELECT
Estimados;
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
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
Chaco - Argentina
- MarioG
- Posts: 1380
- Joined: Fri Oct 14, 2005 1:28 pm
- Location: Resistencia - Chaco - AR
- Been thanked: 2 times
Re: XBROWSE RESTRINGIR MULTISELECT
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
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
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

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
Chaco - Argentina
- MarioG
- Posts: 1380
- Joined: Fri Oct 14, 2005 1:28 pm
- Location: Resistencia - Chaco - AR
- Been thanked: 2 times
Re: XBROWSE RESTRINGIR MULTISELECT
toc...toc
Nadie usa MULTISELCT?
Como se usaría, si no es como prentendo hacerlo?
Nadie usa MULTISELCT?
Como se usaría, si no es como prentendo hacerlo?
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
Chaco - Argentina
- nageswaragunupudi
- Posts: 10721
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Been thanked: 8 times
- Contact:
Re: XBROWSE RESTRINGIR MULTISELECT
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
G. N. Rao.
Hyderabad, India
- MarioG
- Posts: 1380
- Joined: Fri Oct 14, 2005 1:28 pm
- Location: Resistencia - Chaco - AR
- Been thanked: 2 times
Re: XBROWSE RESTRINGIR MULTISELECT
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
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
Chaco - Argentina