Resultados 1 al 10 de 10

Tema: Crear un ProgressBar

  1. #1
      Administrador
    Avatar de Kuk

    Registrado
    enero de 2015
    Edad
    37
    Mensajes
    2,011
    Ciudad
    Madrid

    Agradecimientos
     
    Recibidos
    862
    Enviados
    720

    Citaciones y menciones
     
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    5 Post(s)
    Poder de Reputación
    10

    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:

    COBOL Código:
    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:

    COBOL Código:
    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:

    COBOL Código:
    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
    Imagem Anexada Imagem Anexada

    0 Not allowed!

    ¿Te han ayudado? NO TE OLVIDES de darle al botón
    ¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
    1. Haciendo clic en el icono al lado de su nick
    2. Haciendo clic en el editor al botón y escribiendo su nick.

  2. #2
      Acabo de llegar...
    Avatar de Lecterman

    Registrado
    abril de 2015
    Edad
    46
    Mensajes
    9
    Ciudad
    Montevideo

    Agradecimientos
     
    Recibidos
    1
    Enviados
    5

    Citaciones y menciones
     
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    0 Post(s)
    Poder de Reputación
    0

    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.

    0 Not allowed!

  3. #3
      Guardián del Foro
    Avatar de Fito

    Registrado
    febrero de 2015
    Edad
    51
    Mensajes
    331
    Ciudad
    Córdoba, Villa María

    Agradecimientos
     
    Recibidos
    171
    Enviados
    176

    Citaciones y menciones
     
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    0 Post(s)
    Poder de Reputación
    24
    Agradecimientos / Point Value: 0 Guardián del Foro / Point Value: 0 Activista del Foro / Point Value: 0

    Predeterminado

    Hola @Lecterman,

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

    Saludos.

    Fito...

    0 Not allowed!

  4. #4
      Administrador
    Avatar de Kuk

    Registrado
    enero de 2015
    Edad
    37
    Mensajes
    2,011
    Ciudad
    Madrid

    Agradecimientos
     
    Recibidos
    862
    Enviados
    720

    Citaciones y menciones
     
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    5 Post(s)
    Poder de Reputación
    10

    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

    0 Not allowed!

    ¿Te han ayudado? NO TE OLVIDES de darle al botón
    ¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
    1. Haciendo clic en el icono al lado de su nick
    2. Haciendo clic en el editor al botón y escribiendo su nick.

  5. #5
      Acabo de llegar...
    Avatar de Lecterman

    Registrado
    abril de 2015
    Edad
    46
    Mensajes
    9
    Ciudad
    Montevideo

    Agradecimientos
     
    Recibidos
    1
    Enviados
    5

    Citaciones y menciones
     
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    0 Post(s)
    Poder de Reputación
    0

    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!

    0 Not allowed!

  6. #6
      Administrador
    Avatar de Kuk

    Registrado
    enero de 2015
    Edad
    37
    Mensajes
    2,011
    Ciudad
    Madrid

    Agradecimientos
     
    Recibidos
    862
    Enviados
    720

    Citaciones y menciones
     
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    5 Post(s)
    Poder de Reputación
    10

    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".

    0 Not allowed!

    ¿Te han ayudado? NO TE OLVIDES de darle al botón
    ¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
    1. Haciendo clic en el icono al lado de su nick
    2. Haciendo clic en el editor al botón y escribiendo su nick.

  7. #7
      Administrador
    Avatar de Kuk

    Registrado
    enero de 2015
    Edad
    37
    Mensajes
    2,011
    Ciudad
    Madrid

    Agradecimientos
     
    Recibidos
    862
    Enviados
    720

    Citaciones y menciones
     
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    5 Post(s)
    Poder de Reputación
    10

    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.

    0 Not allowed!

    ¿Te han ayudado? NO TE OLVIDES de darle al botón
    ¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
    1. Haciendo clic en el icono al lado de su nick
    2. Haciendo clic en el editor al botón y escribiendo su nick.

  8. #8
      Junior
    G

    Registrado
    junio de 2015
    Mensajes
    38
    Ciudad
    Murcia

    Agradecimientos
     
    Recibidos
    39
    Enviados
    20

    Citaciones y menciones
     
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    0 Post(s)
    Poder de Reputación
    0

    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

    progreso.jpg

    0 Not allowed!

  9. #9
      Administrador
    Avatar de Kuk

    Registrado
    enero de 2015
    Edad
    37
    Mensajes
    2,011
    Ciudad
    Madrid

    Agradecimientos
     
    Recibidos
    862
    Enviados
    720

    Citaciones y menciones
     
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    5 Post(s)
    Poder de Reputación
    10

    Predeterminado

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

    0 Not allowed!

    ¿Te han ayudado? NO TE OLVIDES de darle al botón
    ¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
    1. Haciendo clic en el icono al lado de su nick
    2. Haciendo clic en el editor al botón y escribiendo su nick.

  10. #10
      Junior
    G

    Registrado
    junio de 2015
    Mensajes
    38
    Ciudad
    Murcia

    Agradecimientos
     
    Recibidos
    39
    Enviados
    20

    Citaciones y menciones
     
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    0 Post(s)
    Poder de Reputación
    0

    Predeterminado

    Juraría que lo probé ayer y funcionaba. En fin, aquí está.
    Imagem Anexada Imagem Anexada

    0 Not allowed!

Información de Tema

Usuarios Viendo este Tema

Actualmente hay 1 usuarios viendo este tema. (0 miembros y 1 visitantes)

User Tag List

Etiquetas para este Tema

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •