¿Cómo puedo crear una función o rutina dentro de un Formulario en el Gris para autocompletar?

Señores Expertos:
Como puedo crear una función o rutina dentro de un Formulario en el Gris, para que apenas escriba una Palabra lo vaya completando, como en Excel, por ejemplo:
Esta en la tabla:
Cable de kit
Yo escribo:
Ca ( y debe completarse cable de kit, etc)
Otro es para que no me acepte códigos duplicados en el archivo maestro. Me rechaze y me restablezca al cursor con un mensaje para poder crear el nuevo.
Por favor si ahora mismo de manera especial la primera pregunta me ayudan le agradeceré muchísimo
Atentamente,
johnny catorceno a.

1 respuesta

Respuesta
1
Lo que buscas se llama autocompletar y su implementación aunque sencilla es una poco larga y encorrosa su explicación, por lo que quedaría fuera de los alcances de este espacio. Sin embargo la solución la tienes implementada en tu propia PC.
Busca dentro de tu PC el proyecto de ejemplo "tastrade", éste se localiza en:
c:\Archivos de programa\Microsoft Visual Studio\MSDN98\98VSa\3082\SAMPLES\VFP98\Tastrade
En el archivo de clase tsbase, se encuentra una clase llamada "tsifcombo" que es justamente una implemenetación del autocompletar.
Una vez que tengas tu clase "autocompletar", has click sobre el grid, con botón contrario selecciona Modificar y busca la columna en donde requieres insertar tu combo de "autocompletar", ahora arrastra la clase a esa columna, posteriormente, dirígete a la propiedad "currentcontrol" y activa el nombre de tu clase y listo todo irá a las mil maravillas.
Con respecto de tu pregunta dos, supongo que te distrajiste un poco ya que no es otra cosa más que una validación simple a través del seek.
Estimado Experto Miron:
Gracias por tu rapidez, voy a tratar de adecuarlo lo que me dices, sin embargo por favor quiero que me envíes la explicación, no importa larga a mi correo: [email protected]
Ya lo que lo necesito urgente
Y no te olvides para Detectar Que no Me Duplique Códigos que ya Existen en la Tabla Maestra, trabajando en el Grid (Lineas de Detalle)
Muchas Gracias de antemano
Atentamente,
Johnny
La clase autocompletar viene muy bien documentada, inclusive, la ayuda de tastrade la explica a detalle, por lo que ya no lo haré.
Me enfoco sobre la validación.
En el evento valid del control del campo, puedes poner algo como lo siguiente:
Local Okproceeds
Local CurrenValue
Okproceeds=.T.
*-- Detectar que se haya modificado el campo
IF ISNULL(GETFLDSTATE(-1))
Okproceeds= .F.
ELSE
Okproceeds= ("2" $ GETFLDSTATE(-1) OR ;
"4" $ GETFLDSTATE(-1))
ENDIF
if Okproceeds Then
*-- El campo sufrio algún cambio
CurrenValue=This.Value
*-- Buscamos el valor sin mover el apuntador
if indexSeek(CurrenValue, .f., 'Customer','Id_Customer')
*-- Se encontró el valor, por lo que hay que restaurar
TableRevert(. f., .t.'Customer')
*-- Se notifica al usuario
MessageBox('El campo que intenta dar de alta ya existe')
Else
*-- Afirmamos el campo para que esté disponible para todos los procesos
TableUpdate(.t., 'Customer')
Endif
Endif
Quizás no es exactamente el código que requieres pero es la idea que supongo sabrás adaptar a tus requerimientos.
Te comento que hoy salgo de vacaciones, por lo que estaré fuera del aire algún tiempo, cualquier otra duda mandala al tablón publico para que los compañeros te apoyen y así no esperes mi respuesta.
Fue un placer haberte saludado y espero haberte sido útil.

Añade tu respuesta

Haz clic para o