Consulta VFP simple

Necesito saber de una función que me calcule la intentar del cursor dentro de un textbox. Es para situar el cursor en una cadena con la función selStar.
¿Se entiende?
Ojala si

3 Respuestas

Respuesta
1
Si vos consultas el valor de selstart, el mismo te devuelve cual es la intentar actual del cursor
Por ejemplo
lnPosicionActual=thisform.text1.selstart
Hola. Te agradezco tu ayuda.
al hacer lo tu me indicas siempre lnPosicionActual=0
**este es mi codigo**
**InteractiveChange**
SET NEAR ON
=seek (RTRIM(this.value),"clientes")
if found()
this.value = allt(clientes.cliente)
this.SelStart = 3
this.SelLength = len(allt(this.value))-3
SET NEAR OFF
thisform.grid1.setfocus
this.setfocus
Endif
Lo que necesito hacer es lo siguiente:
Calcular ese "3" automáticamente, tomando la intentar actual del cursor. Es decir, cada vez que ingreso un carácter en el textbox, me tiene que calcular la intentar, ¿se entiende?.
Es para hacer el autocompletar de excel o de Outlook express
Desde ya muchas gracias
PD: mandame tu mail para comunicarnos más fácil
[email protected].
Chau
Te mando un formulario de ejemplo con el código arreglado a tu email personal, el mio es [email protected]
Por favor luego de que veas la solución acordate de puntuar la respuesta si todo esta ok.
Respuesta
1
Esa propiedad es la que te devuelve o la que te permite activarla.
Para saber en que intentar está, lo llamas:
A = thisform.txtValor.Selstar
en A se va a almacenar la posicion que tenga.
**********
ahora si quieres cambiar la posicion del cursor haces:
thisform.TxtValor.Value = 'Cesar'
thisform.TxtValor.Selstar = 3
**el cursor se posicionaria entre la letra 's' y 'a'.
*********************
Claro que para que eso funcione tienes que poner en falso la propiedad "SelectOnEntry" del textbox, porque si no, se va a marcar cada vez que entre y siempre te devolverá 1.
Hola. Te agradezco tu ayuda.
al hacer lo tu me indicas siempre A=0
Lo que necesito hacer es lo siguiente
**********
ahora si quieres cambiar la posicion del cursor haces:
thisform.TxtValor.Value = 'Cesar'
thisform.TxtValor.Selstar = 3 &&
Calcular ese "3" automáticamente, tomando la intentar actual del cursor. Es decir, cada vez que ingreso un carácter en el textbox, me tiene que calcular la intentar, ¿se entiende?.
Es para hacer el autocompletar de excel o de Outlook express
**este es mi codigo**
**InteractiveChange**
SET NEAR ON
=seek (RTRIM(this.value),"clientes")
if found()
this.value = allt(clientes.cliente)
this.SelStart = 3
this.SelLength = len(allt(this.value))-3
SET NEAR OFF
thisform.grid1.setfocus
this.setfocus
endif
**necesito calcular la posicion cada vez que ingreso un caracter, que iría en reemplazo del 3**
Desde ya muchas gracias
PD: mandame tu mail para comunicarnos más fácil
[email protected].
Chau
Le puedes poner que te lo calcule siempre a partir del ultimo:
THISFORM.TXTVALOR.VALUE = 'XXXX'
THISFORM.TXTVALOR.SELSTART = LEN(THISFORM.TXTVALOR.VALUE)
La función 'len' te devuelve el numero de letras que tenga tu cadenaç (incluyendo espacios en blanco)
Con eso pondrías tu cursor siempre al final de la cadena.
No sé si aclaro tu duda, en caso contrario dime para ampliar más explicación.
Lo que quiero hacer es una búsqueda con la función autocompletar.
Todo este condigo es en el evento InteractiveChange de un textbox
Esto es, al introducir un carácter "A", BUSCA EL 1º REGISTRO CUYA 1º LETRA SEA "A"...
=seek (RTRIM(this.value),"clientes")
if found()
si lo encuentra, le asigno al textbox ese registro...
this.value = allt(clientes.cliente)
Entonces, si yo ingreso "GAR", me va a traer el registro de, por ejemplo, GARCÍA y el cursor me queda entre la "R" y la "I". Lo que necesito saber es en ese momento es la intentar del cursor... ¿cómo la calculo?
this.SelStart = ?
this.SelLength = len(allt(this.value))-?
**necesito calcular la posicion cada vez que ingreso un caracter, que iría en reemplazo del "?" **
Si no me explico bien, por favor mandame tu mail así te paso la porción de mi programa
Muchísimas Gracias
[email protected]
Lo que podrías hacer, es almacenar el valor en una variable antes de hacer la búsqueda, (por si lo encuentra):
LOCAL nPosInicial
nPosInicial = LEN(ALLT(this.value))
&&te toma el ancho que tengas escrito
seek (RTRIM(this.value),"clientes")
if found()
this.value = allt(clientes.cliente)
this.SelStart = nPosInicial
this.SelLength = len(allt(this.value))-nPosInicial
Endif
Checa si con esto queda bien, si no, insisteme (yo ya vislumbré la solución), se me hace muy interesante tu duda, pero me gustaría hacerlo junto contigo, ya que si te doy la solución, como que no tendría sentido... ¿o no?
Gracias Cesar(creo que ese es tu nombre), he podido solucionar el problema. Has sido de una gran y muy cordial ayuda. Me gustaría poder hacerte más consultas de este tipo... así es que, si no es mucha molestia, me gustaría tener tu dir de e-mail en mi libreta de dir. Yo soy un principiante en esto, pero si algún día necesitas de mi ayuda te la daré sin problemas.
Mi dir es [email protected]
Escríbeme aquí si quieres
Gracias
Marcelo Andino - Mendoza - Argentina
Respuesta
1
Si te puedes explicar mejor te lo agradeceré.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas