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 !!!
ResponderBorrar