Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Sintaxis] Activar pantalla de busqueda de Windows (https://www.cobolforo.es/showthread.php?t=42)

Roger 19 de febrero de 2015 19:44

Activar pantalla de busqueda de Windows
 
Amigos del foro
en un form tengo un cmimagen necesito cuando de click se abra la ventana de windows de busqueda de una imagen y que seleccione y se incruste en este evento.

lo tengo hecho con cmfile y un cmlist pero no le gusta a mi cliente.
http://s2.subirimagenes.com/fotos/pr..._9286582zz.jpg

similar al de la imagen

Josber 19 de febrero de 2015 20:40

Pues así mismo:

Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  01 WTEX                PIC X(255) VALUE SPACES.
  5.  01 ReturnValue             PIC S9(9) COMP-5.
  6.  PROCEDURE       DIVISION.
  7.      INVOKE POW-SELF "GetFileName"
  8.             USING WTEX
  9.                   "Seleccione Imágen ..."
  10.                   "Imágen JPG|*.jpg|Imágen BMP|*.bmp"
  11.                   POW-CDOPEN
  12.             RETURNING ReturnValue
  13.      END-INVOKE.
  14.      
  15.      IF ReturnValue = POW-TRUE
  16.         MOVE WTEX      TO "ImageName" OF IMAGEN
  17.         MOVE POW-FALSE TO "Resource"  OF IMAGEN
  18.         INVOKE IMAGEN "Refresh"
  19.      END-IF.
  20.      

A mi me funciona perfectamente ...

Un saludo

Roger 19 de febrero de 2015 21:10

Gracias JOSBER
Eso es lo que necesitaba una ayuda como puedo enviar solo el nombre del archivo en una variable porque la variable WTEX esta toda la ruta ejem "d:\sis-vet\fotos\cardiologia.jpg" a parte necesito solo el nombre del archivo "cardiologia.jpg"
para grabar en otra carpeta con un nombre diferente.
lo vuelvo a grabar con
Código COBOL:
  1. CALL "CBL_COPY_FILE" USING RUTA1 NUEVO RETURNING STATUS-CODE.
a foto lo púeden seleccionar de diferentes carpetas y las rutas no tendran la misma forma. existe otra forma de grabar?? SIN TENER QUE USAR EL WINUSER.dll

Josber 20 de febrero de 2015 08:11

Pues creo que no puede ser el nombre solo y la librería, la necesitas, porque es a la que "llama" el GetFileName, en cuanto a lo otro, con una simple rutina puedes hacerlo

Código COBOL:
  1.     ENVIRONMENT     DIVISION.
  2.      DATA            DIVISION.
  3.      WORKING-STORAGE SECTION.
  4.      01 WTEX.
  5.          03  WT                 PIC X OCCURS 255.
  6.      01  I                        PIC 999 VALUE 255.
  7.      01  I1                       PIC 999 VALUE 0.
  8.      01 ReturnValue           PIC S9(9) COMP-5.
  9.      PROCEDURE       DIVISION.
  10.  
  11.          INITIALIZE WTEX.
  12.  
  13.          INVOKE POW-SELF "GetFileName"
  14.                 USING WTEX
  15.                       "Seleccione Imágen ..."
  16.                       "Imágen JPG|*.jpg|Imágen BMP|*.bmp"
  17.                       POW-CDOPEN
  18.                 RETURNING ReturnValue
  19.          END-INVOKE.
  20.          
  21.          IF ReturnValue = POW-TRUE
  22.             MOVE WTEX      TO "ImageName" OF IMAGEN
  23.             MOVE POW-FALSE TO "Resource"  OF IMAGEN
  24.             INVOKE IMAGEN "Refresh"
  25.          END-IF.
  26.  
  27.          PERFORM VARYING I FROM 255 BY -1
  28.                       UNTIL WT (I) = "\" OR I = 0
  29.                               CONTINUE
  30.         END-PERFORM.
  31.  
  32.         COMPUE I1 = FUNCTION STORED-CHAR-LENGTH (WTEX).
  33.  
  34.         MOVE WTEX (I:I1) TO ...


Un saludo

Roger 20 de febrero de 2015 17:18

se agradece lista la rutina.

Josber
Código COBOL:
  1. *
  2.            INVOKE POW-SELF "GetFileName"
  3.             USING WTEX
  4.                   "Seleccione Imágen ..."
  5.                   "Imágen JPG|*.jpg|Imágen BMP|*.bmp"
  6.                   POW-CDOPEN
  7.             RETURNING ReturnValue
En estos codigo se selecciona 2 tipos de imagen jpg y bmp pero en el buscador sale separado por tipo de imagen ¿Se puede hacer que los 2 tipos se muestre junto tanto .bmp como jpg?

Kuk 25 de febrero de 2015 20:34

Cita:

Citación del post de Roger (Mensaje 150)
Josber
Código COBOL:
  1. *
  2.            INVOKE POW-SELF "GetFileName"
  3.             USING WTEX
  4.                   "Seleccione Imágen ..."
  5.                   "Imágen JPG|*.jpg|Imágen BMP|*.bmp"
  6.                   POW-CDOPEN
  7.             RETURNING ReturnValue
En estos codigo se selecciona 2 tipos de imagen jpg y bmp pero en el buscador sale separado por tipo de imagen ¿Se puede hacer que los 2 tipos se muestre junto tanto .bmp como jpg?

Roger, no entiendo que quieres decir. En este OpenDialog se te van a mostrar todos los archivos con extension *.jpg y *.bmp, los dos! No entiendo esto de "por separado"...

Roger 26 de febrero de 2015 05:37

Kuk
En el OpenDialog te muestra primero todos los archivo con terminacion .jpg y abajo hay una pestaña
donde puedes seleccionar .jpg o .bmp

Necesito que ambos se muestren un primer plano

ejemplo 000101.jpg 000102.jpg 102545.bmp 1036555.jpg 104658.bmp ......

sin necesidad de selecionar .jpg o .bmp
http://sia1.subirimagenes.net/img/20...4320122702.jpg

Josber 26 de febrero de 2015 06:22

Creo que no puede ser Roger.

Un saludo.-

Kuk 26 de febrero de 2015 09:11

Debe ser una movida de Windows 8 porque yo lo he hecho y creo recordar que mostraba todos (vamos tal y como lo quieres tu) en Windows XP y en Windows 7 creo que tambien. Miraré esta tarde en casa a ver...

Josber 26 de febrero de 2015 19:00

Roger, a ver si es ésto lo que necesitas:

Código COBOL:
  1.      INVOKE POW-SELF "GetFileName"
  2.             USING WSFILE
  3.                   "Por favor, Indique el nombre de la Imágen"
  4.                   "(Archivo Imágen)|*.bmp;*.jpg;*.png;*.tif"
  5.                   POW-CDOPEN
  6.             RETURNING RETORNO
  7.      END-INVOKE.

Con ésto no te muestra un desplegable con los tipos de extensión, pero si te muestra todos los archivos que coinciden con la extensiones definidas.

Un saludo.-

Kuk 26 de febrero de 2015 19:27

Josber, exacto! Es eso, hay que ponerlos todos juntos!!!

Hrmcobol 6 de agosto de 2015 14:46

Hola Amigos !!, Siguiendo con este tema del GetFileName, hay alguna manera de poder dirigir el comando, para que abra una carpeta en particular?

Saludos

Kuk 6 de agosto de 2015 18:24

Hrmcobol, creo que si le mueves la ruta antes a la variable donde te la devuelve, (si existe dicha ruta), se abre en ella.

Hrmcobol 6 de agosto de 2015 19:20

Yo también creía eso, pero no es así, o yo estoy haciendo al mal, siempre trae el ultimo path visitado, esto quiere decir que se debe poder cambiarlo. Seguiré investigando y te cuento.

Saludos

lumalma 22 de septiembre de 2016 11:09

Hola

Retomo este antiguo tema.

Cambio la carpeta actual mediante cbl_change_dir2 desde un form. Pero al hacer GetFileName en otro form no me lleva a la carpeta a la que he cambiado.
Alguien ha conseguido algun avance?

Gracias y saludos

Kuk 22 de septiembre de 2016 11:28

lumalma, dónde estás haciendo exactamente el cambio? En teoría, si es en un Form padre, cambiará también para los Form hijo pero no lo contrario.

Es decir, si haces el cambio en el MainForm, cambiaría para todos los hijos. Pero si lo haces en un Form hijo, creo que el MainForm quedará donde estaba.

lumalma 22 de septiembre de 2016 11:58

Hola Kuk

El cambio de carpeta lo hago en un proyecto externo en el que tengo todas las llamadas a rutinas "cbl_....". Pero no cambia.
Pero si guardo un fichero en una carpeta en otro form, esa carpeta se queda como la actual.
Espero haberme explicado mejor que antes.

Gracias y saludos

Kuk 22 de septiembre de 2016 13:24

lumalma, yo nunca he usado la rutina CBL para cambio de directorio actual. En general, no cambio nunca el directorio porque puede llevar a consecuencias graves. Siempre trabajo con directorios absolutos, es decir, indicando explícitamente la ruta exacta de cada fichero.

Si miras el PowerCOBOLReference.pdf, verás lo que se dice de la rutina de dialogo de ficheros "GetFileName" (página 294) :

Cita:

Folder Group
Whether the current folder is changed when the user changes folders.
POW-CDCHANGEDIR: (The default) Changes the current folder.
POW-CDNOCHANGEDIR: Does not change the current folder.
O sea que para que NO cambia de directorio, hay que indicarlo expresamente con POW-CDNOCHANGEDIR. En caso contrario, el directorio cambia (opción por defecto: POW-CDCHANGEDIR)

Si se trata de un proyecto externo, por narices debe ser una DLL por lo tanto con Form(s) hijo. Si es un ejecutable, peor aún, se trata de otro Thread (flujo) de ejecución.

La filosofía del asunto es, que yo sepa, la que he descrito en mi post anterior. Yo creo que es por eso que no te funciona.

Haz pruebas con ello en el MainForm y fíjate si el Form hijo sigue en el mismo directorio o no. Y haz lo contrario, cambiando el directorio en el Form hijo y comprueba dónde apunta el MainForm.

lumalma 22 de septiembre de 2016 16:23

Hola Kuk

Gracias por tus respuestas Kuk

Ya habia leido todo lo referente al metodo GetFileName.
Mi problema es que quiero guardar un archivo con unos datos y quiero que por defecto al hacer GetFileName me lleve a una carpeta concreta para indicar el nombre del archivo. Y no se me ocurre otra forma.

Saludos

Kuk 22 de septiembre de 2016 17:40

lumalma, acabo de probarlo. Efectivamente no funciona con GetFileName, pero funciona con GetFolderName.

Puedes crear tu propio dialogo "Guardar Archivo" con CmFolder y CmFile. O usa el GetFolderName.

También se puede cambiar la CurrentPath vía WinAPI, si te interesa.


La franja horaria es GMT +2. Ahora son las 00:18.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.