Las funciones nativas GetFile() y GetPict() de Visual FoxPro, muestran en el cuadro de diálogo "Abrir" la carpeta actual, sin permitir especificar otra carpeta. Estas dos funciones extendidas suman un nuevo parámetro a todos los parámetros de las funciones originales, para especificar una carpeta.
*-- Ejemplo de GetFileX()
? GetFileX()
? GetFileX(HOME(1)+ "Tools\GenDBC\","PRG")
? GetFileX("C:\Datos\","DBF","Nombre tabla:", "Abrir tabla", 0, "Busca tabla")
*-- Ejemplo de GetPictX()
? GetPictX()
? GetPictX(HOME(2) + "Solution", "BMP")
? GetPictX("C:\Fotografias\","","Foto:", "Abrir foto")
El código de ambas funciones es el siguiente:
**********************************************************************************
* FUNCTION GetFileX(tcRuta, tcExtension, tcLeyenda, tcBoton, tnBoton, tcTitulo)
********************************************************************************
* Función GetFile eXtendida. Al igual que la función GetFile muestra un cuadro
* de diálogo Abrir y retorna el nombre del archivo seleccionado. Si no se
* selecciona ningun archivo retorna una cadena vacia. La diferencia con
* GetFile() es que se puede especificar con el primer parámetro la carpeta
* donde se abre el cuadro de dialogo.
*
* RETORNA:
* Caracter
* PARAMETROS:
* tcRuta: Ruta inicial
* tcExtension: Extension de los archivos que se muestran
* tcLeyenda: Título del cuadro de texto "Nombre de archivo"
* tcBoton: Título del botón "Aceptar"
* tnBoton: Tipo y número de botones [0, 1 ó 2]
* tcTitulo: Título de la ventana Abrir
* USO:
* ? GetFileX("C:\Dat\","DBF","Nombre tabla:", "Abrir tabla", 0, "Busca tabla")
********************************************************************************
FUNCTION GetFileX(tcRuta, tcExtension, tcLeyenda, tcBoton, tnBoton, tcTitulo)
LOCAL lcDirAnt, lcGetPict
tcRuta = IIF(NOT EMPTY(tcRuta) AND DIRECTORY(tcRuta,1),tcRuta,"")
tcExtension = IIF(EMPTY(tcExtension), "", tcExtension)
tcLeyenda = IIF(EMPTY(tcLeyenda), "", tcLeyenda)
tcBoton = IIF(EMPTY(tcBoton), "", tcBoton)
tnBoton = IIF(EMPTY(tnBoton), 0, tnBoton)
tcTitulo = IIF(EMPTY(tcTitulo), "", tcTitulo)
lcDirAnt = FULLPATH("")
SET DEFAULT TO (tcRuta)
lcGetPict = GETFILE(tcExtension, tcLeyenda, tcBoton, tnBoton, tcTitulo)
SET DEFAULT TO (lcDirAnt)
RETURN lcGetPict
ENDFUNC
********************************************************************************
* FUNCTION GetPictX(tcRuta, tcExtension, tcLeyenda, tcBoton)
********************************************************************************
* Función GetPict eXtendida. Al igual que la función GetPict muestra un cuadro
* de diálogo Abrir imagen y retorna el nombre del archivo de imagen
* seleccionado. Si no se selecciona ningun archivo retorna una cadena vacia.
* La diferencia con GetPict() es que se puede especificar con el primer
* parámetro la carpeta donde se abre el cuadro de dialogo.
*
* RETORNA:
* Caracter
* PARAMETROS:
* tcRuta: Ruta inicial
* tcExtension: Extension de los archivos de imagen que se muestra
* tcLeyenda: Título del cuadro de texto "Nombre de archivo"
* tcBoton: Título del botón "Aceptar"
* USO:
* ? GetPictX("C:\Imagenes\","JPG","Foto:", "Abrir foto")
********************************************************************************
FUNCTION GetPictX(tcRuta, tcExtension, tcLeyenda, tcBoton)
LOCAL lcDirAnt, lcGetPict
tcRuta = IIF(NOT EMPTY(tcRuta) AND DIRECTORY(tcRuta,1),tcRuta,"")
tcExtension = IIF(EMPTY(tcExtension), "", tcExtension)
tcLeyenda = IIF(EMPTY(tcLeyenda), "", tcLeyenda)
tcBoton = IIF(EMPTY(tcBoton), "", tcBoton)
lcDirAnt = FULLPATH("")
SET DEFAULT TO (tcRuta)
lcGetPict = GETPICT(tcExtension, tcLeyenda, tcBoton)
SET DEFAULT TO (lcDirAnt)
RETURN lcGetPict
ENDFUNC
********************************************************************************
Luis María Guayán
Excelente Blog Luis María, gracias por crearlo y mantenerlo
ResponderBorrarFelicitaciones LMG por tu impecable trabajo y la dedicación de tanto tiempo en temas de interés para la comunidad foxera.
ResponderBorrarExcelente LuisMa gracias a personas como tu, vfp no es tan limitado y podemos seguir aprovechando nuestro lenguaje de programacion
ResponderBorrarExcelente LuisMa gracias a personas como tu, vfp no es tan limitado y podemos seguir aprovechando nuestro lenguaje de programacion
ResponderBorrarGracias LuisMa, personas como tu mantienen vivo nuestro lenguaje.
ResponderBorrarGracias LMG por tu incansable apoyo a la comunidad!!
ResponderBorrarSaludos Luis Maria, muy buenas aportaciones, gracias
ResponderBorrar... y mi "viejo" VFP consulta webservices (ubicación google, tracking de agencias... etc)
ResponderBorrar... y se ejecuta en tablets, en W8 y W10
... y mis programas interactuan con TAGs RFID
... y trabajan con XLSX
...
... pero NADA de esto se podría hacer sin esta maravillosa comunidad, ni personas como LMG
... ¡ Gracias!
Mil gracias ... me sirvió muchísimo !!!
ResponderBorrarinfinitas gracias LMG ,
ResponderBorrar