Gracias Rui Pinto (Rapinto)
COBOL Foro
Foro dedicado a COBOL, a la Programación y a la Informática.
  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
Comunicados
Respuesta
 
Herramientas

  #1
Antiguo 9 de octubre de 2015, 16:05
IDENTIFICATION DIVISION
Kuk
 Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
diciembre 2014
Madrid
37 años
26.06.2022 11:57
PROCEDURE DIVISION
Posts: 1.998
Enviado: 701
Recibido: 852
Soluciones: 100
Reputació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
Miniatura de Adjuntos
Pulsar la imagen para la versión amplia
Nombre:  ProgressBar.png
Vistas: 176
Tamaño:  42,0 KB  



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic 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, 19:00
IDENTIFICATION DIVISION
Lecterman
 Acabo de llegar...
ENVIRONMENT DIVISION
Avatar de Lecterman
DATA DIVISION
abril 2015
Montevideo
46 años
31.08.2021 21:45
PROCEDURE DIVISION
Posts: 9
Enviado: 5
Recibido: 1
Soluciones: 1
Reputació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, 22:41
IDENTIFICATION DIVISION
Fito
 Guardián del Foro
Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Razón: Por muchos agradecimientos de parte de los Foreros  Guardián del Foro: Guardián del espíritu y clima del Foro - Razón: Por el Avatar  Activista del Foro: Activista del Foro - Razón: Por aportar ideas 
ENVIRONMENT DIVISION
Avatar de Fito
DATA DIVISION
febrero 2015
Córdoba, Villa María
51 años
24.06.2022 22:06
PROCEDURE DIVISION
Posts: 329
Enviado: 175
Recibido: 170
Soluciones: 16
Reputación: 24
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 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, 17:10
IDENTIFICATION DIVISION
Kuk
 Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
diciembre 2014
Madrid
37 años
26.06.2022 11:57
PROCEDURE DIVISION
Posts: 1.998
Enviado: 701
Recibido: 852
Soluciones: 100
Reputació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 - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk no ha iniciado sesión   Responder Con Cita
  #5
Antiguo 22 de octubre de 2015, 20:16
IDENTIFICATION DIVISION
Lecterman
 Acabo de llegar...
ENVIRONMENT DIVISION
Avatar de Lecterman
DATA DIVISION
abril 2015
Montevideo
46 años
31.08.2021 21:45
PROCEDURE DIVISION
Posts: 9
Enviado: 5
Recibido: 1
Soluciones: 1
Reputació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, 21:52
IDENTIFICATION DIVISION
Kuk
 Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
diciembre 2014
Madrid
37 años
26.06.2022 11:57
PROCEDURE DIVISION
Posts: 1.998
Enviado: 701
Recibido: 852
Soluciones: 100
Reputació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 - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic 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, 15:41
IDENTIFICATION DIVISION
Kuk
 Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
diciembre 2014
Madrid
37 años
26.06.2022 11:57
PROCEDURE DIVISION
Posts: 1.998
Enviado: 701
Recibido: 852
Soluciones: 100
Reputació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 - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic 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, 20:25
IDENTIFICATION DIVISION
Galileo
 Junior
ENVIRONMENT DIVISION
Avatar de Galileo
DATA DIVISION
junio 2015
Murcia
22.01.2021 10:39
PROCEDURE DIVISION
Posts: 38
Enviado: 20
Recibido: 37
Soluciones: 8
Reputació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, 22:29
IDENTIFICATION DIVISION
Kuk
 Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
diciembre 2014
Madrid
37 años
26.06.2022 11:57
PROCEDURE DIVISION
Posts: 1.998
Enviado: 701
Recibido: 852
Soluciones: 100
Reputació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 - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk no ha iniciado sesión   Responder Con Cita
  #10
Antiguo 20 de diciembre de 2015, 09:59
IDENTIFICATION DIVISION
Galileo
 Junior
ENVIRONMENT DIVISION
Avatar de Galileo
DATA DIVISION
junio 2015
Murcia
22.01.2021 10:39
PROCEDURE DIVISION
Posts: 38
Enviado: 20
Recibido: 37
Soluciones: 8
Reputació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á.
Miniatura de Adjuntos
Pulsar la imagen para la versión amplia
Nombre:  mxcpprogreso.jpg
Vistas: 106
Tamaño:  27,0 KB  
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 09:34.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2022, Jelsoft Enterprises Ltd.