Alaska Software Inc. - foco con xbpget
Username: Password:
AuthorTopic: foco con xbpget
Gustavo M. Burgosfoco con xbpget
on Tue, 12 Jul 2011 20:13:35 -0300
Hola estoy tratando de hacer que cuando me posiciono con el ratón en algún 
campo que estoy editando con xbpget el puntero se quede en la primera 
posición a la izquierda, con datos numéricos no tengo problemas ya que 
utilizo los picture, pero con los puramente caracteres me queda el cursor 
donde icé click. y no en la primera posición a la izquierda. si alguno tiene 
algo le agradesco.
Gracias de antemano

Gustavo M. Burgos
Rivadavia N° 278.
Pcia Roque Saenz Peña - Chaco
Argentina
Fijo 03732-420635
Movil 3732-408559
Burmanspm@arnet.com.ar
Jorge LRe: foco con xbpget
on Tue, 12 Jul 2011 21:13:05 -0300
Gustavo
intenta usar :setFirstChar() que es el equivalente del :pos en el get class

"Gustavo M. Burgos"  escribió en el mensaje de 
noticias:55ee6793$5dd48a6f$a2c5@news.alaska-software.com...

Hola estoy tratando de hacer que cuando me posiciono con el ratón en algún
campo que estoy editando con xbpget el puntero se quede en la primera
posición a la izquierda, con datos numéricos no tengo problemas ya que
utilizo los picture, pero con los puramente caracteres me queda el cursor
donde icé click. y no en la primera posición a la izquierda. si alguno tiene
algo le agradesco.
Gracias de antemano

Gustavo M. Burgos
Rivadavia N° 278.
Pcia Roque Saenz Peña - Chaco
Argentina
Fijo 03732-420635
Movil 3732-408559
Burmanspm@arnet.com.ar
Jos Luis Otermin [Alaska Software]Re: foco con xbpget
on Wed, 13 Jul 2011 01:04:27 -0300
Gustavo,

Has visto el cdigo fuente que publiqu bajo la serie "ABM"?
Debera funcionar tal como te hace falta.
XbpGet.PRG y
XbpGetC.PRG


Espero haber sido de ayuda.

Saludos

Jose Luis Otermin
Alaska Software

"Gustavo M. Burgos" <Burmanspm@arnet.com.ar> escribi en el mensaje 
news:55ee6793$5dd48a6f$a2c5@news.alaska-software.com...
> Hola estoy tratando de hacer que cuando me posiciono con el ratn en algn 
> campo que estoy editando con xbpget el puntero se quede en la primera 
> posicin a la izquierda, con datos numricos no tengo problemas ya que 
> utilizo los picture, pero con los puramente caracteres me queda el cursor 
> donde ic click. y no en la primera posicin a la izquierda. si alguno 
> tiene algo le agradesco.
> Gracias de antemano
>
> -- 
> Gustavo M. Burgos
> Rivadavia N 278.
> Pcia Roque Saenz Pea - Chaco
> Argentina
> Fijo 03732-420635
> Movil 3732-408559
> Burmanspm@arnet.com.ar
Gustavo M. BurgosRe: foco con xbpget
on Thu, 14 Jul 2011 11:20:00 -0300
Hola jose luis. si probe con la GUI que presentaste, pero no me da bola. a 
lo mejor no me exprese bien
el temas es el siguiente
tengo varios xbpget uno es el apellido y nombres que almaceno en una 
variable m_nombre := space(30). y cuando hago click en cualquier parte del 
xbpget que corresponde el puntero del mouse queda donde ice click y no en el 
la primer posicion a las izquierda. con el enter y con el tab lo hace, pero 
con el mouse no,
Gracias

Gustavo M. Burgos
Rivadavia N° 278.
Pcia Roque Saenz Peña - Chaco
Argentina
Fijo 03732-420635
Movil 3732-408559
Burmanspm@arnet.com.ar
Jos Luis Otermin [Alaska Software]Re: foco con xbpget
on Thu, 14 Jul 2011 12:29:31 -0300
Hola Gustavo,

Hay que considerar que el mouse puede posicionarse en cualquier punto porque 
a partir de ah se puede marcar, copiar/cortar y pegar.

Si, como indicas, el mouse habilitara el foco al hacer click (izquierdo), no 
habra forma de marcar un trozo de texto.

La otra posibilidad, es que el sobrevuelo del puntero habilite el foco.
Eso significara que un simple movimiento del ratn provocara el cambio de 
foco y las bendiciones del usuario que tipea los datos.

Para obtener lo que buscas (ms all de su conveniencia), se hace prctico 
usar la clase XbpGetC.prg ( XbpGetController() ).
Qu puede hacerse?

Usar herencia y crear una nueva clase de controlador de Gets.
Por ejemplo:

CLASS XbpGetNewController FROM  XbpGetController
    EXPORTED:
      METHOD setDisplayFocus     window obtains display focus
      METHOD killDisplayFocus    window looses display focus
      METHOD setInputFocus       window obtains input focus
ENDCLASS

En este caso conviene preguntarse qu accin deseo que el objeto realice 
para el caso del foco:

1 - Cuando el puntero del ratn pasa por encima: setDisplayFocus
2 - Cuando el puntero del ratn abandona al objeto : killDisplayFocus
3 - Cuando se le ha hecho click o enter o recibe foco por TAB, SHIFT+TAB.

Entonces debe recortarse el cdigo de la clase padre ( XbpGetController ) e 
implementar SOLO se cdigo.
Todo lo dems se comportar como siempre, excepto EN ESE CASO PARTICULAR 
TRATADO EN LA SUBCLASE.

Hasta aqu, estamos de acuerdo?

Espero haber sido de ayuda.

Saludos

Jose Luis Otermin
Alaska Software



"Gustavo M. Burgos" <Burmanspm@arnet.com.ar> escribi en el mensaje 
news:4176d4d4$620c1bf9$105d8@news.alaska-software.com...
> Hola jose luis. si probe con la GUI que presentaste, pero no me da bola. a 
> lo mejor no me exprese bien
> el temas es el siguiente
> tengo varios xbpget uno es el apellido y nombres que almaceno en una 
> variable m_nombre := space(30). y cuando hago click en cualquier parte del 
> xbpget que corresponde el puntero del mouse queda donde ice click y no en 
> el la primer posicion a las izquierda. con el enter y con el tab lo hace, 
> pero con el mouse no,
> Gracias
>
> -- 
> Gustavo M. Burgos
> Rivadavia N 278.
> Pcia Roque Saenz Pea - Chaco
> Argentina
> Fijo 03732-420635
> Movil 3732-408559
> Burmanspm@arnet.com.ar
Jorge LRe: foco con xbpget
on Thu, 14 Jul 2011 13:35:11 -0300
José, gracias por tu aporte y consideraciones



"José Luis Otermin [Alaska Software]"  escribió en el mensaje de 
noticias:2384e797$1e7421f1$10463@news.alaska-software.com...

Hola Gustavo,

Hay que considerar que el mouse puede posicionarse en cualquier punto porque
a partir de ahí se puede marcar, copiar/cortar y pegar.

Si, como indicas, el mouse habilitara el foco al hacer click (izquierdo), no
habría forma de marcar un trozo de texto.

La otra posibilidad, es que el sobrevuelo del puntero habilite el foco.
Eso significaría que un simple movimiento del ratón provocaría el cambio de
foco y las bendiciones del usuario que tipea los datos.

Para obtener lo que buscas (más allá de su conveniencia), se hace práctico
usar la clase XbpGetC.prg ( XbpGetController() ).
¿Qué puede hacerse?

Usar herencia y crear una nueva clase de controlador de Gets.
Por ejemplo:

CLASS XbpGetNewController FROM  XbpGetController
    EXPORTED:
      METHOD setDisplayFocus     window obtains display focus
      METHOD killDisplayFocus    window looses display focus
      METHOD setInputFocus       window obtains input focus
ENDCLASS

En este caso conviene preguntarse qué acción deseo que el objeto realice
para el caso del foco:

1 - Cuando el puntero del ratón pasa por encima: setDisplayFocus
2 - Cuando el puntero del ratón abandona al objeto : killDisplayFocus
3 - Cuando se le ha hecho click o enter o recibe foco por TAB, SHIFT+TAB.

Entonces debe recortarse el código de la clase padre ( XbpGetController ) e
implementar SOLO ése código.
Todo lo demás se comportará como siempre, excepto EN ESE CASO PARTICULAR
TRATADO EN LA SUBCLASE.

Hasta aquí, ¿estamos de acuerdo?

Espero haber sido de ayuda.

Saludos

Jose Luis Otermin
Alaska Software



"Gustavo M. Burgos" <Burmanspm@arnet.com.ar> escribió en el mensaje
news:4176d4d4$620c1bf9$105d8@news.alaska-software.com...
> Hola jose luis. si probe con la GUI que presentaste, pero no me da bola. a 
> lo mejor no me exprese bien
> el temas es el siguiente
> tengo varios xbpget uno es el apellido y nombres que almaceno en una 
> variable m_nombre := space(30). y cuando hago click en cualquier parte del 
> xbpget que corresponde el puntero del mouse queda donde ice click y no en 
> el la primer posicion a las izquierda. con el enter y con el tab lo hace, 
> pero con el mouse no,
> Gracias
>
> -- 
> Gustavo M. Burgos
> Rivadavia N° 278.
> Pcia Roque Saenz Peña - Chaco
> Argentina
> Fijo 03732-420635
> Movil 3732-408559
> Burmanspm@arnet.com.ar
J.A. Diego KerejetaRe: foco con xbpget
on Thu, 14 Jul 2011 19:34:00 +0200
Hola Gustavo:

Creo que puede ser suficiente con modificar un poco el método lbUp(). Prueba
con el siguiente código:

**************************
CLASS MyXbpGet FROM XbpGet
**************************
EXPORTED:
   INLINE METHOD lbUp( aPos )
   **************************
      LOCAL aStartEnd

      ::XbpSle:lbUp( aPos )

      IF ::get:type == "L"
         ::home()
      ELSE
         aStartEnd:= ::queryMarked()

         IF aStartEnd[ 1 ] = aStartEnd[ 2 ]
            ::home()
         ELSE
            ::Get:Pos := aStartEnd[ 2 ]
         ENDIF
      ENDIF
   RETURN self
ENDCLASS

**************************
CLASS MyXbpSle FROM XbpSle
**************************
EXPORTED:
   INLINE METHOD lbUp( aPos )
   **************************
      LOCAL aStartEnd

      ::XbpSle:lbUp( aPos )

      aStartEnd:= ::queryMarked()

      IF aStartEnd[ 2 ] = aStartEnd[ 1 ] .AND. aStartEnd[ 1 ] != 1
         ::setMarked( { 1, 1 } )
      ENDIF
   RETURN self
ENDCLASS

Saludos. Diego
Jos Luis Otermin [Alaska Software]Re: foco con xbpget
on Thu, 14 Jul 2011 19:22:52 -0300
Kaixo Diego!

Tanto tiempo 
Esta es una solucin creativa y muy interesante.
Gracias por tu aporte.

Agur bero bat

Jos Luis Otermin
Alaska Software

"J.A. Diego Kerejeta" <diegokerejeta@euskalnet.net> escribi en el mensaje 
news:2f669d50$1d11f29b$10937@news.alaska-software.com...
> Hola Gustavo:
>
> Creo que puede ser suficiente con modificar un poco el mtodo lbUp(). 
> Prueba
> con el siguiente cdigo:
>
> **************************
> CLASS MyXbpGet FROM XbpGet
> **************************
> EXPORTED:
>   INLINE METHOD lbUp( aPos )
>   **************************
>      LOCAL aStartEnd
>
>      ::XbpSle:lbUp( aPos )
>
>      IF ::get:type == "L"
>         ::home()
>      ELSE
>         aStartEnd:= ::queryMarked()
>
>         IF aStartEnd[ 1 ] = aStartEnd[ 2 ]
>            ::home()
>         ELSE
>            ::Get:Pos := aStartEnd[ 2 ]
>         ENDIF
>      ENDIF
>   RETURN self
> ENDCLASS
>
> **************************
> CLASS MyXbpSle FROM XbpSle
> **************************
> EXPORTED:
>   INLINE METHOD lbUp( aPos )
>   **************************
>      LOCAL aStartEnd
>
>      ::XbpSle:lbUp( aPos )
>
>      aStartEnd:= ::queryMarked()
>
>      IF aStartEnd[ 2 ] = aStartEnd[ 1 ] .AND. aStartEnd[ 1 ] != 1
>         ::setMarked( { 1, 1 } )
>      ENDIF
>   RETURN self
> ENDCLASS
>
> Saludos. Diego
>
J.A. Diego KerejetaRe: foco con xbpget
on Mon, 18 Jul 2011 20:13:27 +0200
> Agur bero bat

Baita zuri ere