In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Editar Columnas Browse

Foro público de Xailer en español
Responder
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

Editar Columnas Browse

Mensaje por Xevi »

En un Browse donde entro en modo edición, pongamos el caso de todas las
columnas tengan la propiedad nEditType establecida beGET, (sucede el mismo
comportamiento si nEditType se establece a otro valor).
Pongamos el caso que dependiendo de si se entra algún valor o no en una
columna en concreto, por ejemplo la primera columna la dejamos vacia...
ocultamos los Edits de la columna 4... la primera columna está rellena...
ocultamos los edits de las columnas 2 y 5.
Bien pues cuando la columna que tiene el foco es una anterior a una columna
con un edit NoVisible... por mas que pulse return o tab... el foco no salta
al siguiente edit Visible.
Adjunto un ejemplo donde muestra este "fallo" de salto de foco.
Si en lugar de utilizar oGridEdit:lVisible utilizo oGridEdit:lEnabled... el
salto de foco lo realiza correctamente... ahora bien, para facilitar la
captura de datos a mis clientes, necesito poder "ocultar" esas columnas que
no van a ser "editadas", sinó me dicen que "les crean confusión".
Gracias.
Un Saludo,
Xevi.


Attached files PRUEBA.zip (1.9 KB)Â
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

Editar Columnas Browse

Mensaje por Xevi »

Bien, se me ha ocurrido utilizar las dos propiedades al mismo tiempo... y
así SI me funciona correctamente.
Cuando lEnabled := .F. pues además establezco lVisible := .F.
Un Saludo,
Xevi.
"Xevi" <xevicomas_quitar_esto@gmail.com> escribió en el mensaje
news:[email=48f58356@ozsrv2.ozlan.local...]48f58356@ozsrv2.ozlan.local...[/email]
> En un Browse donde entro en modo edición, pongamos el caso de todas las
> columnas tengan la propiedad nEditType establecida beGET, (sucede el mismo
> comportamiento si nEditType se establece a otro valor).
>
> Pongamos el caso que dependiendo de si se entra algún valor o no en una
> columna en concreto, por ejemplo la primera columna la dejamos vacia...
> ocultamos los Edits de la columna 4... la primera columna está rellena...
> ocultamos los edits de las columnas 2 y 5.
> Bien pues cuando la columna que tiene el foco es una anterior a una
> columna con un edit NoVisible... por mas que pulse return o tab... el foco
> no salta al siguiente edit Visible.
>
> Adjunto un ejemplo donde muestra este "fallo" de salto de foco.
>
> Si en lugar de utilizar oGridEdit:lVisible utilizo oGridEdit:lEnabled...
> el salto de foco lo realiza correctamente... ahora bien, para facilitar la
> captura de datos a mis clientes, necesito poder "ocultar" esas columnas
> que no van a ser "editadas", sinó me dicen que "les crean confusión".
>
> Gracias.
>
> Un Saludo,
> Xevi.
>
>
>
>
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

Editar Columnas Browse

Mensaje por Xevi »

Ignacio,
¿No sería mejor forzar !lEnabled si !lVisible ???
Un Saludo,
Xevi.
"Xevi" <xevicomas_quitar_esto@gmail.com> escribió en el mensaje
news:48f59428$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Bien, se me ha ocurrido utilizar las dos propiedades al mismo tiempo... y
> así SI me funciona correctamente.
>
> Cuando lEnabled := .F. pues además establezco lVisible := .F.
>
>
> Un Saludo,
> Xevi.
>
>
> "Xevi" <xevicomas_quitar_esto@gmail.com> escribió en el mensaje
> news:[email=48f58356@ozsrv2.ozlan.local...]48f58356@ozsrv2.ozlan.local...[/email]
>> En un Browse donde entro en modo edición, pongamos el caso de todas las
>> columnas tengan la propiedad nEditType establecida beGET, (sucede el
>> mismo comportamiento si nEditType se establece a otro valor).
>>
>> Pongamos el caso que dependiendo de si se entra algún valor o no en una
>> columna en concreto, por ejemplo la primera columna la dejamos vacia...
>> ocultamos los Edits de la columna 4... la primera columna está rellena...
>> ocultamos los edits de las columnas 2 y 5.
>> Bien pues cuando la columna que tiene el foco es una anterior a una
>> columna con un edit NoVisible... por mas que pulse return o tab... el
>> foco no salta al siguiente edit Visible.
>>
>> Adjunto un ejemplo donde muestra este "fallo" de salto de foco.
>>
>> Si en lugar de utilizar oGridEdit:lVisible utilizo oGridEdit:lEnabled...
>> el salto de foco lo realiza correctamente... ahora bien, para facilitar
>> la captura de datos a mis clientes, necesito poder "ocultar" esas
>> columnas que no van a ser "editadas", sinó me dicen que "les crean
>> confusión".
>>
>> Gracias.
>>
>> Un Saludo,
>> Xevi.
>>
>>
>>
>>
>
>
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9461
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Editar Columnas Browse

Mensaje por ignacio »

Xevi,
Incluyo el méodo corregido.
Un saludo,
//---------------------------------------------------------- ----------------
METHOD ChangeFocus( oFrom, lBack ) CLASS XBrowse
LOCAL oCol, oFst, oLst
LOCAL nPos, nLen, nLast, nFor, nTmp
LOCAL lUpd
nPos := ::aDisplay[ oFrom:nPos ]
nLen := Len( ::aCols )
lUpd := .F.
// Primera columan editable
FOR nFor := 1 TO nLen
WITH OBJECT ::aCols[ nFor ]
IF :IsVisible() .AND. :nEditType != beNONE .AND. :oGridEdit:lEnabled
..AND. :oGridEdit:lVisible
oFst := HB_QWith()
EXIT
ENDIF
END WITH
NEXT
//Ultima columna editable
FOR nFor := nLen TO 1 STEP -1
WITH OBJECT ::aCols[ nFor ]
IF :IsVisible() .AND. :nEditType != beNONE .AND. :oGridEdit:lEnabled
..AND. :oGridEdit:lVisible
oLst := HB_QWith()
EXIT
ENDIF
END WITH
NEXT
IF ! lBack
nPos ++
// Buscamos siguiente columna editable
DO WHILE nPos <= nLen
WITH OBJECT ::aCols[ nPos ]
IF :IsVisible() .AND. :nEditType != beNONE .AND.
:oGridEdit:lEnabled .AND. :oGridEdit:lVisible
oCol := HB_QWith()
EXIT
ENDIF
END WITH
nPos++
ENDDO
// Sino se encontro ninguna columna ir a la primera editable
IF oCol == Nil .AND. oFst != NIL
::GoLeftMost()
oCol := oFst
lUpd := .T.
ENDIF
// Forzar que la columna este completamente visible
IF oCol != Nil
DO WHILE oCol:nPos == 0
::GoRight( .T. )
lUpd := .T.
ENDDO
nTmp := ::nColOffset
DO WHILE ! ::IsColVisible( oCol, .T. ) .AND. ! ( oCol == oFst )
::GoRight( .T. )
IF nTmp == ::nColOffset
EXIT
ENDIF
lUpd := .T.
ENDDO
ENDIF
// Actualizar la posición de los GridEdits
IF lUpd
::UpdGridEdits()
ENDIF
// Cambiar el foco
IF oCol != Nil .AND. !( oCol == oFrom )
oCol:oGridEdit:SetFocus()
RETURN .T.
ENDIF
ELSE
nPos--
// Buscamos anterior columna editable
DO WHILE nPos >= 1
WITH OBJECT ::aCols[ nPos ]
IF :IsVisible() .AND. :nEditType != beNONE .AND.
:oGridEdit:lEnabled .AND. :oGridEdit:lVisible
oCol := HB_QWith()
EXIT
ENDIF
END WITH
nPos--
ENDDO
// Sino se encontro ninguna nos vamos a la ultima editable
IF oCol == Nil
oCol := oLst
lUpd := .T.
nTmp := ::nColOffset
DO WHILE ! ::IsColVisible( oCol, .T. ).AND. ! ( oCol == oFst )
::GoRight( .T. )
IF nTmp == ::nColOffset
EXIT
ENDIF
ENDDO
ENDIF
// Forzar que este completamente visible
IF oCol != Nil
DO WHILE oCol:nPos == 0 .AND. ::nColOffset > 1
::GoLeft( .T. )
lUpd := .T.
ENDDO
nTmp := ::nColOffset
DO WHILE ! ::IsColVisible( oCol, .T. ) .AND. ::nColOffset > 1
::GoLeft( .F. )
lUpd := .T.
IF nTmp == ::nColOffset
EXIT
ENDIF
ENDDO
IF lUpd
::UpdGridEdits()
ENDIF
IF !( oCol == oFrom )
oCol:oGridEdit:SetFocus()
RETURN .T.
ENDIF
ENDIF
ENDIF
RETURN .F.
--
Ignacio Ortiz de Zúñiga
[Soporte Xailer]
[Xailer support]
"Xevi" <xevicomas_quitar_esto@gmail.com> escribió en el mensaje
news:48f5976c$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Ignacio,
>
> ¿No sería mejor forzar !lEnabled si !lVisible ???
>
> Un Saludo,
> Xevi.
>
>
> "Xevi" <xevicomas_quitar_esto@gmail.com> escribió en el mensaje
> news:48f59428$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>> Bien, se me ha ocurrido utilizar las dos propiedades al mismo tiempo... y
>> así SI me funciona correctamente.
>>
>> Cuando lEnabled := .F. pues además establezco lVisible := .F.
>>
>>
>> Un Saludo,
>> Xevi.
>>
>>
>> "Xevi" <xevicomas_quitar_esto@gmail.com> escribió en el mensaje
>> news:[email=48f58356@ozsrv2.ozlan.local...]48f58356@ozsrv2.ozlan.local...[/email]
>>> En un Browse donde entro en modo edición, pongamos el caso de todas las
>>> columnas tengan la propiedad nEditType establecida beGET, (sucede el
>>> mismo comportamiento si nEditType se establece a otro valor).
>>>
>>> Pongamos el caso que dependiendo de si se entra algún valor o no en una
>>> columna en concreto, por ejemplo la primera columna la dejamos vacia...
>>> ocultamos los Edits de la columna 4... la primera columna está
>>> rellena... ocultamos los edits de las columnas 2 y 5.
>>> Bien pues cuando la columna que tiene el foco es una anterior a una
>>> columna con un edit NoVisible... por mas que pulse return o tab... el
>>> foco no salta al siguiente edit Visible.
>>>
>>> Adjunto un ejemplo donde muestra este "fallo" de salto de foco.
>>>
>>> Si en lugar de utilizar oGridEdit:lVisible utilizo oGridEdit:lEnabled...
>>> el salto de foco lo realiza correctamente... ahora bien, para facilitar
>>> la captura de datos a mis clientes, necesito poder "ocultar" esas
>>> columnas que no van a ser "editadas", sinó me dicen que "les crean
>>> confusión".
>>>
>>> Gracias.
>>>
>>> Un Saludo,
>>> Xevi.
>>>
>>>
>>>
>>>
>>
>>
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Responder