Page 1 of 1

Problemas con la posición del puntero en los get

PostPosted: Thu Nov 25, 2021 8:09 pm
by santidedos
Buenas tardes compañeros, estoy hace tiempo con un problema con el puntero. Me pasa que en las entradas de texto, cuando clikeo sobre ellas para empezar a escribir, el puntero aparece exactamente donde pinché, cuando en realidad deberia aparecer, o al principio del cuadro de texto si no hay nada escrito en él, independientemente de en qué lugar del cuadro haya clikeado, o, si hay una palabra escrita y clikeo al final, justo donde termina la palabra, independientemente de si clikeo justo sobre el final de la palabra, o más atrás. Alguien sabe como hacer para que las entradas funcionen correctamente? Gracias de antemano.

Re: Problemas con la posición del puntero en los get

PostPosted: Sat Nov 27, 2021 4:41 pm
by horacio
Hola, prueba así:

Code: Select all  Expand view

oGet : bGotFocus := { || oGet : nPos := 1 }
 


Saludos

Re: Problemas con la posición del puntero en los get

PostPosted: Mon Nov 29, 2021 1:34 am
by santidedos
Cómo estás? No lo pude hacer andar

Re: Problemas con la posición del puntero en los get

PostPosted: Mon Nov 29, 2021 2:24 am
by JoseAlvarez
santidedos wrote:Cómo estás? No lo pude hacer andar


Hola,

Si publicas el codigo, sera mucho mas facil ayudarte

Re: Problemas con la posición del puntero en los get

PostPosted: Mon Nov 29, 2021 12:48 pm
by karinha
pronto José. El código que pedistes, és +- asi:

Code: Select all  Expand view

// \samples\JOSE.PRG

#Include "FiveWin.ch"

FUNCTION Main()

   LOCAL oDlg, oGet1, oGet2, cGet1 := "Jose Alvarez       ", ;
         cGet2:= "Cambiando Foco de Jose"
   LOCAL lCambiaJose := .F., aGrad, oClp

   aGrad := { { 0.30, CLR_WHITE, CLR_WHITE },{ 0.50, CLR_WHITE, CLR_WHITE } }

   DEFINE DIALOG oDlg SIZE 400, 300 GRADIENT aGrad

   oDlg:lHelpIcon := .F.

   DEFINE CLIPBOARD oClp OF oDlg

   @ 3, 1 GET oGet1 VAR cGet1 OF oDlg  SIZE 100, 12 PICTURE "@K" UPDATE      ;
      VALID ( MsgInfo( "Valor antes del LostFocus " + cGet1), .T. )

   // Bloquear PASTE y CTRL+V en un GET
   oGet1:bGotFocus := { || oClp:SetText( '' ) }

   oGet1:bChange = { || lCambiaJose := .T. }

   oGet1:bLostFocus := { || If( lCambiaJose, Jose_Focus( oGet1 ), .T. ) }

   @ 5, 1 GET oGet2 VAR cGet2 OF oDlg  SIZE 100, 12 PICTURE "@!" UPDATE

   ACTIVATE DIALOG oDlg CENTERED ;
      ON INIT( oGet1:bGotFocus := { || oGet1:SetPos( 0 ), Nil },             ;
               oGet1:SetFocus()  )

RETURN NIL

FUNCTION Jose_Focus( oGet1 )

   LOCAL cTxtJose

   cTxtJose := oGet1:cText

   // MsgInfo( "FiveWin The Best: " + cTxtJose )

   oGet1:bGotFocus := { || oGet1:SetPos( 0 ), Nil }

   oGet1:SetFocus()

RETURN( .T. )

// FIN / END
 


Regards, saludos.