Gracias Rui Pinto (Rapinto)
COBOL Foro
Foro dedicado a COBOL, a la Programación y a la Informática.
Retroceder   COBOL Foro > IDE-s y compiladores COBOL > Cocina Casera > Cocina PowerCOBOL V3L10
Cocina PowerCOBOL V3L10 Código listo para usar en el IDE PowerCOBOL V3L10
Noticias y Avisos
Respuesta
 
Herramientas

  #1
Antiguo 9 de octubre de 2015, 17:05
IDENTIFICATION DIVISION
Kuk
Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
Forero desde (Registrado)enero 2015
España
UbicaciónMadrid
Edad34 años
Última Actividad15.11.2019 15:02
PROCEDURE DIVISION
PostsPosts: 1.420
Ha dicho GraciasEnviado: 318
Ha recibido agradecimientosRecibido: 541
Mejores respuestasSoluiones: 87
ReputaciónReputación: 10
Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road
Thumbs up Crear un ProgressBar

Amigos, aquí tenéis la creación de un ProgressBar en el PowerCOBOL 3:

Definimos 2 variables globales en la WORKING del SHEET:

Código COBOL:
  1.  01  GLB-HWND-SHEET  IS GLOBAL PIC S9(9) COMP-5.
  2.  01  GLB-HWND-PRBAR  IS GLOBAL PIC S9(9) COMP-5.

Para crear el ProgressBar se necesita el HWND del Sheet. Pero a diferencia del PowerCOBOL 9, el HWND no está disponible hasta que se cree realmente el Sheet (sea visible). Para ello ponemos un TIMER en el Sheet,para que el código se ejecute cuando el Sheet ya esté creado, (lo marcamos como activo ya en modo diseño), y en su único evento TIMER escribimos:

Código COBOL:
  1.  ENVIRONMENT DIVISION.
  2.  DATA        DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  01  FUNC                   PIC X(50).
  5.  
  6.  01  GWL-HINSTANCE          PIC S9(9) COMP-5 VALUE -6.
  7.  
  8.  01  tagINITCOMMONCONTROLSEX.
  9.      05  dwSize             PIC S9(9) COMP-5 VALUE 8.
  10.      05  dwICC              PIC S9(9) COMP-5 VALUE 32.
  11.  
  12.  01  WS-STYLE               PIC S9(9) COMP-5.
  13.  01  WS-CLASS               PIC X(50).
  14.  01  WS-TEXT                PIC X(50).
  15.  
  16.  01  WS-HINSTANCE           PIC S9(9) COMP-5.
  17.  
  18.  01  WS-ERROR               PIC S9(9) COMP-5.
  19.  
  20.  PROCEDURE   DIVISION.
  21.          
  22.      MOVE POW-OFF TO POW-ACTIVATE OF TIMER1
  23.      
  24.      CALL "GetActiveWindow" WITH STDCALL
  25.      
  26.      MOVE PROGRAM-STATUS         TO GLB-HWND-SHEET    
  27.      MOVE "InitCommonControlsEx" TO FUNC
  28.      
  29.      CALL FUNC WITH STDCALL USING BY REFERENCE tagINITCOMMONCONTROLSEX
  30.      
  31.      MOVE 1342177280                  TO WS-STYLE
  32.      MOVE "msctls_progress32" & X"00" TO WS-CLASS
  33.      MOVE X"00"                       TO WS-TEXT
  34.      
  35.      CALL "GetWindowLongA" WITH STDCALL USING BY VALUE GLB-HWND-SHEET
  36.                                               BY VALUE GWL-HINSTANCE
  37.      
  38.      MOVE PROGRAM-STATUS TO WS-HINSTANCE
  39.      
  40.      CALL "CreateWindowExA" WITH STDCALL USING BY VALUE 0
  41.                                                BY REFERENCE WS-CLASS
  42.                                                BY REFERENCE WS-TEXT
  43.                                                BY VALUE WS-STYLE
  44.                                                BY VALUE 50  *> POSICION X
  45.                                                BY VALUE 50  *> POSICION Y
  46.                                                BY VALUE 250 *> ANCHURA (width)
  47.                                                BY VALUE 25  *> ALTURA (height)
  48.                                                BY VALUE GLB-HWND-SHEET
  49.                                                BY VALUE 0   *> HMENU (NO HAY MENU)
  50.                                                BY VALUE WS-HINSTANCE
  51.                                                BY VALUE 0   *> PUNTERO INNECESARIO
  52.      
  53.      MOVE PROGRAM-STATUS TO GLB-HWND-PRBAR
  54.      
  55.      IF  GLB-HWND-PRBAR = ZEROS THEN
  56.          CALL "GetLastError" WITH STDCALL
  57.          
  58.          MOVE PROGRAM-STATUS TO WS-ERROR
  59.          
  60.          DISPLAY "Error creacion ProgressBar: " WS-ERROR
  61.      END-IF

Para que nos tome apariencia moderna, en la misma carpeta del proyecto, ponemos el famoso fichero *.manifest y recompilamos.

Ya lo tenemos! Para hacer el "progress", usamos el siguiente código en cualquier lugar del Sheet donde lo hemos creado:

Código COBOL:
  1.      CALL "SendMessageA" WITH STDCALL USING BY VALUE GLB-HWND-PRBAR
  2.                                                      1029
  3.                                                      0
  4.                                                      0

Resultado en adjuntos.

Importante. En el fichero COBOL85.CBR añadimos:

Código:
[SHEET1.ENTRY]
InitCommonControlsEx=ComCtl32.dll
Espero que os sirva el invento
Imágenes Adjuntas
Tipo de Archivo: png ProgressBar.png (42,0 KB, 38 descargas)


NORMAS DEL FORO - obligatorias de conocer para TODOS.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale Pinchando en su Nick:

Kuk no ha iniciado sesión   Responder Con Cita
Han dicho Gracias: 2
Eslopes (10 de octubre de 2015), Rmcostar ( 9 de abril de 2016)
  #2
Antiguo 21 de octubre de 2015, 20:00
IDENTIFICATION DIVISION
Lecterman
Acabo de llegar...
ENVIRONMENT DIVISION
Avatar de Lecterman
DATA DIVISION
Forero desde (Registrado)abril 2015
Uruguay
UbicaciónMontevideo
Edad43 años
Última Actividad03.09.2018 21:52
PROCEDURE DIVISION
PostsPosts: 9
Ha dicho GraciasEnviado: 5
Ha recibido agradecimientosRecibido: 1
Mejores respuestasSoluiones: 1
ReputaciónReputación: 0
Lecterman is on a distinguished road
Predeterminado

Hola Kuk!

Estoy trabajando con PWC7, copie tu código y funciona muy bien.
Surge una duda a la hora de utilizar el archivo .manifest, como lo hago referencia a el desde mi proyecto.

Desde ya gracias.
Lecterman no ha iniciado sesión   Responder Con Cita
  #3
Antiguo 21 de octubre de 2015, 23:41
IDENTIFICATION DIVISION
Fito
Novato Senior
ENVIRONMENT DIVISION
Avatar de Fito
DATA DIVISION
Forero desde (Registrado)febrero 2015
Argentina
UbicaciónCórdoba, Villa María
Edad48 años
Última Actividad16.11.2019 13:29
PROCEDURE DIVISION
PostsPosts: 190
Ha dicho GraciasEnviado: 72
Ha recibido agradecimientosRecibido: 55
Mejores respuestasSoluiones: 9
ReputaciónReputación: 10
Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road
Predeterminado

Hola Lecterman,

yo trabajo en power8, ya trae un objeto progress, y si mal no recuerdo el 7 también.

Saludos.

Fito...
Fito no ha iniciado sesión   Responder Con Cita
  #4
Antiguo 22 de octubre de 2015, 18:10
IDENTIFICATION DIVISION
Kuk
Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
Forero desde (Registrado)enero 2015
España
UbicaciónMadrid
Edad34 años
Última Actividad15.11.2019 15:02
PROCEDURE DIVISION
PostsPosts: 1.420
Ha dicho GraciasEnviado: 318
Ha recibido agradecimientosRecibido: 541
Mejores respuestasSoluiones: 87
ReputaciónReputación: 10
Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road
Predeterminado

Lecterman, que yo sepa el ProgressBar viene en el paquete de controles de Power 7 y no hay necesidad de crearlo en dinámico.

En cuanto al archivo Manifest, échale un ojo aquí: COBOL Foro - Ver Mensaje Individual - [Aporte] Run-Times y Merge-Modules v9.0


NORMAS DEL FORO - obligatorias de conocer para TODOS.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale Pinchando en su Nick:

Kuk no ha iniciado sesión   Responder Con Cita
  #5
Antiguo 22 de octubre de 2015, 21:16
IDENTIFICATION DIVISION
Lecterman
Acabo de llegar...
ENVIRONMENT DIVISION
Avatar de Lecterman
DATA DIVISION
Forero desde (Registrado)abril 2015
Uruguay
UbicaciónMontevideo
Edad43 años
Última Actividad03.09.2018 21:52
PROCEDURE DIVISION
PostsPosts: 9
Ha dicho GraciasEnviado: 5
Ha recibido agradecimientosRecibido: 1
Mejores respuestasSoluiones: 1
ReputaciónReputación: 0
Lecterman is on a distinguished road
Predeterminado

Si si, pero me pareció interesante usar las clases que provee Windows para que el formulario asuma el "tema" del Windows donde esta corriendo.


Muchas gracias por tu respuesta!
Lecterman no ha iniciado sesión   Responder Con Cita
  #6
Antiguo 22 de octubre de 2015, 22:52
IDENTIFICATION DIVISION
Kuk
Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
Forero desde (Registrado)enero 2015
España
UbicaciónMadrid
Edad34 años
Última Actividad15.11.2019 15:02
PROCEDURE DIVISION
PostsPosts: 1.420
Ha dicho GraciasEnviado: 318
Ha recibido agradecimientosRecibido: 541
Mejores respuestasSoluiones: 87
ReputaciónReputación: 10
Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road
Predeterminado

Lecterman, de nada hombre, para eso estamos, para ayudarnos y compartir opiniones!

Lo del tema de Windows depende del archivo *.manifest, es decir, si no lo metemos en la misma carpeta, haciendo todo lo mismo, tendría apariencia clásica de Windows. O sea que, siempre y cuando la WndProc del control derive de los estándares de las clases de Windows, el archivo *.manifest funciona y aplica la apariencia de los controles de Windows de la versión 6.x

En cuanto al modo de crearlo, es programación Win32 estándar (el invocar las clases de Windows para crear controles), en los IDE-s de C++ por ejemplo se hace todo lo igual pero escribiéndolo en C++. EN visual Studio por ejemplo si creas un proyecto Win32 tienes que hacerlo todo por código. El proyecto visual es del tipo "Windows Forms".


NORMAS DEL FORO - obligatorias de conocer para TODOS.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale Pinchando en su Nick:

Kuk no ha iniciado sesión   Responder Con Cita
Ha dicho Gracias : 1
Lecterman (23 de octubre de 2015)
  #7
Antiguo 3 de noviembre de 2015, 16:41
IDENTIFICATION DIVISION
Kuk
Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
Forero desde (Registrado)enero 2015
España
UbicaciónMadrid
Edad34 años
Última Actividad15.11.2019 15:02
PROCEDURE DIVISION
PostsPosts: 1.420
Ha dicho GraciasEnviado: 318
Ha recibido agradecimientosRecibido: 541
Mejores respuestasSoluiones: 87
ReputaciónReputación: 10
Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road
Predeterminado

Reitero que InitCommonControlsEx no es necesario en Windows 7, al menos habiendo el fichero Manifest. Con lo cual, podéis omitir todo lo relacionado con dicha función.


NORMAS DEL FORO - obligatorias de conocer para TODOS.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale Pinchando en su Nick:

Kuk no ha iniciado sesión   Responder Con Cita
Ha dicho Gracias : 1
Galileo (19 de diciembre de 2015)
  #8
Antiguo 19 de diciembre de 2015, 21:25
IDENTIFICATION DIVISION
Galileo
Novato Junior
ENVIRONMENT DIVISION
Avatar de Galileo
DATA DIVISION
Forero desde (Registrado)junio 2015
España
UbicaciónMurcia
Última Actividad13.12.2018 19:27
PROCEDURE DIVISION
PostsPosts: 37
Ha dicho GraciasEnviado: 19
Ha recibido agradecimientosRecibido: 34
Mejores respuestasSoluiones: 7
ReputaciónReputación: 0
Galileo is on a distinguished road Galileo is on a distinguished road Galileo is on a distinguished road
Predeterminado

Otro buen aporte. En 2003, cuando empezaba a jugar con PowerCOBOL 3.0, también eché a faltar este tipo de control, así que pergeñé unos cuantos con los que tenía PWC. Hice un programa de demostración y lo colgué en la sección Rutinas de ESCOBOL (http://www.escobol.com/modules.php?n...p=getit&lid=73. En el año 2006 añadí otros más, pero esa modificación la perdí. Sin embargo, conservo un pantallazo de la misma. http://galileano.tripod.com/powercobol/progreso.jpg
Galileo no ha iniciado sesión   Responder Con Cita
  #9
Antiguo 19 de diciembre de 2015, 23:29
IDENTIFICATION DIVISION
Kuk
Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
Forero desde (Registrado)enero 2015
España
UbicaciónMadrid
Edad34 años
Última Actividad15.11.2019 15:02
PROCEDURE DIVISION
PostsPosts: 1.420
Ha dicho GraciasEnviado: 318
Ha recibido agradecimientosRecibido: 541
Mejores respuestasSoluiones: 87
ReputaciónReputación: 10
Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road
Predeterminado

Galileo, el pantallazo no se ve, corrige el enlace o cuélago directamente en el foro.


NORMAS DEL FORO - obligatorias de conocer para TODOS.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale Pinchando en su Nick:

Kuk no ha iniciado sesión   Responder Con Cita
  #10
Antiguo 20 de diciembre de 2015, 10:59
IDENTIFICATION DIVISION
Galileo
Novato Junior
ENVIRONMENT DIVISION
Avatar de Galileo
DATA DIVISION
Forero desde (Registrado)junio 2015
España
UbicaciónMurcia
Última Actividad13.12.2018 19:27
PROCEDURE DIVISION
PostsPosts: 37
Ha dicho GraciasEnviado: 19
Ha recibido agradecimientosRecibido: 34
Mejores respuestasSoluiones: 7
ReputaciónReputación: 0
Galileo is on a distinguished road Galileo is on a distinguished road Galileo is on a distinguished road
Predeterminado

Juraría que lo probé ayer y funcionaba. En fin, aquí está.
Imágenes Adjuntas
Tipo de Archivo: jpg mxcpprogreso.jpg (27,0 KB, 19 descargas)
Galileo no ha iniciado sesión   Responder Con Cita
Ha dicho Gracias : 1
Kuk (20 de diciembre de 2015)
Respuesta

Tags
powercobol , progressbar


Usuarios activos actualmente viendo este tema: 1 (0 miembros y 1 visitantes)
 
Herramientas

Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado



La franja horaria es GMT +1. Ahora son las 10:28.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2019, Jelsoft Enterprises Ltd.