13 de marzo de 2006

Funciones GetFile y GetPict eXtendidas

Estas funciones GetFile y GetPict eXtendidas nos permiten especificar en su primer parámetro la carpeta que se mostrará en el cuadro de diálogo "Abrir".

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

5 comentarios :

  1. Excelente Blog Luis María, gracias por crearlo y mantenerlo

    ResponderEliminar
  2. Felicitaciones LMG por tu impecable trabajo y la dedicación de tanto tiempo en temas de interés para la comunidad foxera.

    ResponderEliminar
  3. Excelente LuisMa gracias a personas como tu, vfp no es tan limitado y podemos seguir aprovechando nuestro lenguaje de programacion

    ResponderEliminar
  4. Excelente LuisMa gracias a personas como tu, vfp no es tan limitado y podemos seguir aprovechando nuestro lenguaje de programacion

    ResponderEliminar
  5. Gracias LuisMa, personas como tu mantienen vivo nuestro lenguaje.

    ResponderEliminar