theMainWindow.fileDialogGetSaveFileName


([N4] victorgt) #1

Hola foro:

Necesito un dialogo “guardar fichero”, que me devuelva un path a un nuevo fichero (txt en mi caso) para grabarle yo luego los datos dentro. Como es algo muy raro, esto que tengo que hacer, pues no hay funcion nativa en Velneo (ojala me equivoque). Hay que usar Javascript…

¿Alguien tiene un ejemplo sencillo del uso de theMainWindow.fileDialogGetSaveFileName? ¿Hay algun ejemplo por ahi que no logrado encontrar?

Lo que me gustaria es encapsular (para hacerlo reutilizable) theMainWindow.fileDialogGetSaveFileName y obtener el path al nuevo fichero en una variable normal alfa de Velneo… Pero con mis conocimentos de JS puedo tardar una semana…

Gracias.


([N3] pacosatu) #2

Hola victorgt.

Precisamente yo me pegué con esta función hace unos meses y parece que no había nadie interesado.
Es curioso cómo Velneo se ha olvidado de implementar de forma nativa esta Función.

Yo monté la siguiente Función Velneo y script JavaScript.

Función Velneo GUARDAR_COMO


Rem (Parámetros:  CTITULO, CPATH_FICHERO, CFILTRO )
Rem ( CPATH_FICHERO debe contener el Path inicial y el nombre del fichero por defecto )
Rem ( CFILTRO contendrá los Filtros que queremos en la Ventana de Diálogo )
Rem ( Los filtros irán separados por ;; sin espacios entre ellos )
Rem ( Si se introduce un fichero sin extensión, se devuelve con la extensión del Filtro seleccionado en ese momento )
Crear manejador de objeto ( oSelFichero, Proceso JS_GUARDAR_COMO@alias_app )
Set variable local de objeto ( oSelFichero, CTITULO, CTITULO )
Set variable local de objeto ( oSelFichero, CPATH_FICHERO, CPATH_FICHERO )
Set variable local de objeto ( oSelFichero, CFILTRO, CFILTRO )
Disparar objeto ( oSelFichero, 1º plano: Local (síncrono), )
Libre
Get variable local de objeto ( oSelFichero, CPATH_FICHERO, CPATH_FICHERO )
Libre
Set dato de retorno ( CPATH_FICHERO )

Script GuardarComo.js del proceso JS_GUARDAR_COMO@alias_app


// Título de la Ventana de Diálogo de Entrada de Fichero a Guardar
var cTitulo = theRoot.varToString("CTITULO");
// Path completo del Fichero por defecto
var cPathInicial = theRoot.varToString("CPATH_FICHERO");
// Filtro en la visualización de los archivos
// Por ejemplo: "Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)"
// ¡¡OJO!! no poner espacios antes o después del separador ;; o no toma bien los filtros
var cFiltro = theRoot.varToString("CFILTRO");
// Este parámetro no funciona. Lo ponemos siempre a 0
// Incidencia en Bugman con código: 4094
// var nFiltroSel = theRoot.varToInt("NFILTRO_SEL");
// Opciones. Lo ponemos siempre a 0
// var nOpciones = theRoot.varToInt("NOPCIONES");
var cResultado = theMainWindow.fileDialogGetSaveFileName(cTitulo, cPathInicial, cFiltro, 0, 0);
// alert(cResultado)
theRoot.setVar("CPATH_FICHERO",cResultado)

Esto es todo. Pruébalo.

Saludos
Paco Satué


([N4] victorgt) #3

Gracias Paco, como siempre, perfecto. Exactamente lo que estaba buscando.

Saludos a todos.