FoxPro/Visual FoxPro - Cómo actualizar automáticamente campo ?

 
Vista:

Cómo actualizar automáticamente campo ?

Publicado por Pilastrón (11 intervenciones) el 17/06/2005 16:05:17
1.- Tengo un un formulario con varios campos
En uno de estos campos se calcula una funcion tipo sys(2007), y deseo que cada vez
que se pulse una tecla en uno de los otros campos se actualice el valor del campo calculado.

Etiqueta1
cadenadecaracteres Cada vez que se pulse una tecla en este campo...

Etiqueta2
otracadena ...O en este otro...

Etiqueta3
calcular sys(2007, y tal y tal) Se actualice este valor

2.- Cómo abrir y modificar un valor en un archivo.INI
3.- Cómo reproducir un sonido de fondo en un formulario mientras está abierto.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Cómo actualizar automáticamente campo ?

Publicado por David Amador T. (520 intervenciones) el 17/06/2005 20:58:48

1.- Coloca código en el KeyPress de cada cuadro de texto para que cuando se pulse una tecla suceda lo que deseas...

2.-
Leer archivo INI
http://www.davphantom.net/consultar.asp?id=435&op=1

3.-

Puedes hacerlo de varias formas...

Set Bell To Archivo.wav

Reproducir archivo de sonido através de WSH
http://www.davphantom.net/consultar.asp?id=202&op=1

Reproducir archivo con Windows Media Player
http://www.davphantom.net/consultar.asp?id=314&op=1

OCX para reproducir MP3 (Activemp3)
http://www.davphantom.net/descarga.asp?id=167&op=2

mciExecute
http://www.davphantom.net/consultar.asp?id=116&op=2

David Amador Tapia
WebMaster "La Web de Davphantom"
www.davphantom.net
Cartagena. Colombia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cómo actualizar automáticamente campo ?

Publicado por Jesus Alberto (45 intervenciones) el 18/06/2005 16:22:07
Estimado Colega Pilastron,

Sobre tu consulta, el colega David Amador te ha dado excelentes tips para resolver el requerimiento, yo solo para complementar tu investigacion, te comento que para actualizar en linea y al momento tus datos en base a los datos que vas capturando puedes usar la propiedad object.interactivechange() del TextBox y aplicar los datos conforme los vas validando o eliminando al momento.
Sobre el sonido, Set Bell To (File) está bien, esa uso yo tambien y por ultimo te mando el codigo fuente de dos funciones para escribir datos y obtener datos en files INI utilizando API, estas funciones las desarrollé y probé en Visual Foxpro 7, espero que te sirvan si tienes VFP6, si no, pues no habrá problema.

Aqui te van:

(1) EscribirIniFiles
(2) TraerDatosIniFiles

*/ Manipulación de archivos INI ---- Escritura y Lectura */
Function EscribirIniFiles
Lparameters cSection,ckey,cValorPara,cPathNombreINI

*!* ------------- API Function -------------------------------------------------------------------------------------------
*!* Parameters:
*!* -lpAppName
*!* [in] Nombre de la Seccion de Archivo INI que se va a procesar.
*!* -lpKeyName
*!* [in] Nombre de la Llave que va a ser actualizada (Se encuentra debajo de SECCION
*!* -lpString
*!* [in] Definicion del texto con que sera actualizada la Llave (key) de la seccion del INI indicado.
*!* -lpFileName
*!* [in] Nombre del archivo INI que sera actualizado por la funcion.
*!*
*!* La funcion retorna:
*!* Si todo va correctamente la funcion copia el texto en el archivo y el valor de retorno es 1 si regresa ZERO algo anduvo mal.

Local nVal
Declare WritePrivateProfileString In kernel32;
STRING lpAppName,;
STRING lpKeyName,;
STRING lpString,;
STRING lpFileName

nVal = WritePrivateProfileString (cSection,ckey,cValorPara,cPathNombreINI)
If Type("nVal") = 'L' then
Else
If nVal = 1 then
Else
=Messagebox("PRECAUCION: ocurrió algún percance en la escritura del archivo, verificar.",16,"API Ini Files")
Endif
Endif
Return (Null)
Endfunc


Function TraerDatosIniFiles
Lparameters cSection,ckey,cDefaultReturn,cBufferName,nLongBuffer,cPathNombreINI
*!* ------------- API Function -------------------------------------------------------------------------------------------
*!* Parameters:
*!* - lpAppName
*!* [in] Nombre de la seccion que se va a afectar en el Ini indicado.
*!* - lpKeyName
*!* [in] Nombre de la Llave perteneciente a la seccion del Ini indicado, la cual se va a afectar.
*!* - lpDefault
*!* [in] Valor de retorno por default
*!* - lpReturnedString
*!* [out] Nombre del Buffer que va a recibir el valor solicitado.
*!* - nSize
*!* [in] Especifica el tamaño del Buffer, normalmente no regresa una cadena con muchos caracteres invalido, esto es importante.
* lo devuelve de forma interna la funcion API.
*!* - lpFileName
*!* [in] Nombre del archivo Ini que va a ser procesado.
*!* La funcion retorna:
*!* Si todo va correctamente la funcion copia el texto del archivo y el valor de retorno es 1 si regresa ZERO algo anduvo mal.

Local lcBuffer, cretval,cCurrDir
cCurrDir= Addbs(Fullpath(Curdir()))+'Auditoria.ini'
cPathNombreINI = cCurrDir
cretval = ''
lcBuffer = Space (255) && Maxima capacidad de una cadena en VFP

*/ Declaracion de API */
Declare Integer GetPrivateProfileString In kernel32;
STRING lpAppName,;
STRING lpKeyName,;
STRING lpDefault,;
STRING @ lpReturnedString,;
INTEGER nSize,;
STRING lpFileName

oAPIObject = GetPrivateProfileString(cSection,ckey,cDefaultReturn,@lcBuffer,Len(lcBuffer),cPathNombreINI)
If oAPIObject = 0 then
=Messagebox("PRECAUCION: sucedió algun percance en la escritura del archivo, verificar.",16,"API Ini Files")
lcBuffer = 'Checar'
Return (lcBuffer)
Else
lcBuffer = Strtran(lcBuffer,Chr(0),'')
lcBuffer = Alltrim(lcBuffer)
Return (lcBuffer)
Endif
Endfunc

Sin mas, me despido y te deseo exito en tus proyectos.
Quedamos en contacto.

Alberto Sanchez
Mexico, D.F.
):-))

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar