Ver la Versión Completa : [Sintaxis] Directorio por defecto en GetFileName
Breew
20 de abril de 2018, 23:22
Hola.
Tengo un problemilla con el "GetFileName" .
Mi intencion es poder escoger diferentes ficheros de un directorio en concreto, pero
si por alguna circustancia escojo un fichero de un directorio diferente, cuando vuelvo a abrir
el programa, se me posiciona en el ultimo directorio, y no en el que quiero por defecto.
MOVE ALL SPACE TO EXCELSHEET-NAME.
MOVE "C:\remesas" TO EXCELSHEET-NAME.
INVOKE POW-SELF "GetFileName" USING EXCELSHEET-NAME "Por favor, escoge fichero" "XLS(EXCEL book)|*.XLS" POW-CDOPEN RETURNING ReturnValue.
Seguramente no lo estoy usando bien.
Saludos.
Kuk
22 de abril de 2018, 14:48
Breew, tienes que incluir la opción POW-CDNOCHANGEDIR:
Del manual de Power:
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 Filename PIC X(256).
01 FileMask PIC X(30).
01 FileStyle PIC S9(9) COMP-5.
01 ReturnValue PIC S9(9) COMP-5.
PROCEDURE DIVISION.
* Specify the types of files to list
MOVE "All files|*.*|Text files|*.txt" TO FileMask
* Specify the File Open dialog.
* (Change this to POW-CDSAVE if you need
* the File Save Dialog.)
ADD POW-CDOPEN TO FileStyle
* Specify the behavior required if the
* user changes the current directory when
* browsing for a file to open.
ADD POW-CDNOCHANGEDIR TO FileStyle *> ESTE ES !!!
INVOKE MainForm "GetFileName"
USING FileName
"Title Displayed in Title Bar"
FileMask
FileStyle
RETURNING ReturnValue
Breew
29 de abril de 2018, 13:17
Hola.
No acaba de funcionar del todo.
En la barra de navegacion, aparece siempre el ultimo directorio que se ha entrado.
En cambio en la barra que hay a la derecha del nombre si que aparece siempre el mismo directorio.
Lo ideal seria que la trayectoria quede fijada en la barra superior.
Gracias.
Kuk
29 de abril de 2018, 18:32
Breew, haz un pantallazo y cuélgalo aquí, no me estoy enterando ;)
Breew
29 de abril de 2018, 19:01
Hola.
El programa abre una hoja de calculo excel, normalmente en c:\doser\rafel\bancos
pero ocasionalmente, voy a remesas.
Lo que quiero hacer es que siempre se posicione en el directorio c:\doser\rafel\bancos.
Con la solucion que me has dado anteriormente, si que se fija el directorio en la ventana inferior, en cambio abre la superior.
Gracias.
Kuk
29 de abril de 2018, 23:41
Breew, yo creo que te estás haciendo un lío. En el combo donde dice "c:\doser\rafel\bancos" te debería aparecer la lista de extensiones de ficheros que quieres abrir, es decir el "filemask".
MOVE "All files|*.*|Text files|*.txt" TO FileMask
INVOKE MainForm "GetFileName"
USING FileName
"Title Displayed in Title Bar"
FileMask *> <===============================
FileStyle
RETURNING ReturnValue
Revisa tu código y me cuentas. Estarás haciendo un MOVE donde no es. ;)
Breew
1 de mayo de 2018, 09:17
Hola Kuk.
Efectivamente, estaba el move mal puesto.
El caso es que no consigo fijar el directorio que quiero que abra por defecto.
Me gustaria que siempre se posicione en c:\doser\rafel.
Al principio se abre alli, pero si por algun instante abro otro fichero en otro directorio, siempre se posiciona en el ultimo directorio activo.
Se puede cambiar?
Saludos
Kuk
1 de mayo de 2018, 20:33
Breew, la función GetFilename invoca WinAPI, y parece ser que la última no deja hacerlo: OpenFile function (Windows) (https://msdn.microsoft.com/en-us/library/windows/desktop/aa365430(v=vs.85).aspx)
Por internetes hablan de mejor usar los Dialog que hay en otros entornos, cosa de la que no disponemos en Power por defecto.
Puedes buscar alguna OCX como alternativa, que permita indicarle el directorio por defecto.
Dasije
1 de mayo de 2018, 20:42
Hace unos años me pasó un caso parecido, necesitaba fijar una ruta fija para examinar y seleccionar imagenes al abrir el dialogo de abrir archivos cuando ejecutaba la función GetFileName.
Finalmente no recuerdo porque tuve que hacerme una libreria en C++, no sé si era por limitaciones de estructura de datos al llamar a la función GetOpenFileName de Windows o imcompátibilidad de variables char (no recibía el valor).
vBulletin v3.8.7, Derechos ©2000-2026, Jelsoft Enterprises Ltd.