Resultados 1 al 5 de 5

Tema: Evento "Resized" del Form (Sheet)

  1. #1
      Administrador
    Avatar de Kuk

    Registrado
    enero de 2015
    Ubicación
    Madrid
    Edad
    39
    Mensajes
    2,288
    Última visita
    Hoy a las 17:16

    Agradecimientos
     
    Recibidos
    1,036
    Enviados
    888

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

    Question Evento "Resized" del Form (Sheet)

    Hola compis, acabo de darme cuenta que el PowerCOBOL v3 no tiene evento "Resized" en sus Forms. ¿Cómo lo gestionáis? He pensado de meter un Timer, pero a lo mejor existen otras soluciones?

    Otra posibilidad sería hacer subclassing del Form via WinAPI pero por ejemplo la versión 9 no acepta CALL BY VALUE entre funciones COBOL, la versión diría yo que es más cercana a la construcción de ventana clásico de C++ así que lo mismo un día lo pruebo.

    Volviendo a la pregunta en si, cómo lo apañáis vosotros?

    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 botón en el editor y escribiendo su nick.

  2. #2
      Junior
    Avatar de Adrianeloy

    Registrado
    marzo de 2015
    Ubicación
    Santa Fe/rosario
    Edad
    57
    Mensajes
    40
    Última visita
    22.03.2024

    Agradecimientos
     
    Recibidos
    33
    Enviados
    30

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

    Predeterminado

    Yo tuve que hacer este "remedio" casero:
    En propiedades de la ventana, le quité los "Style" Minimize, Maximize y Control.
    Agregue arriba y a la izquierda de la ventana 3 imagenes de creación propia de "minimizar", "maximizar" y "cerrar".

    Al hacer click en "minimizar" ejecuto:
    COBOL Código:
    1. CALL SHOWSHEET OF SHEET1 USING POW-SWSHOWMINIMIZED.

    Al hacer click en "cerrar" ejecuto:
    COBOL Código:
    1. CALL CLOSESHEET OF SHEET1.

    Eso es sencillo, solo se complica en el proceso que ejecutas en "maximizar".
    Para esto uso un CHECK oculto llamado MAXIMIZA, asi se si estoy en modo maximizado o normal.

    COBOL Código:
    1.       IF POW-CHECK OF MAXIMIZA = POW-OFF
    2.        CALL SHOWSHEET OF SHEET1 USING POW-SWSHOWMAXIMIZED
    3.        MOVE POW-ON TO POW-CHECK OF MAXIMIZA.

    COBOL Código:
    1.      IF POW-CHECK OF MAXIMIZA = POW-ON
    2.        CALL SHOWSHEET OF SHEET1 USING POW-SWSHOWNORMAL
    3.        MOVE POW-OFF TO POW-CHECK OF MAXIMIZA.

    Tener en cuenta que al cambiar la ventana, la posicion de las 3 imagenes quedaran descolocadas.
    Asi que hay que leer la posicion de la ventana para obtener su ancho actual, restarle
    los "pixeles" del ancho de la imagen "cerrar" y moverle ese valor a la posicion horizontal de la imagen.
    Luego haremos lo mismo con la imagen de "maximizar", restandole los pixeles del ancho de "cerrar" + lo de "maximizar".
    Y finalemente lo mismo con la imagen de "minimizar", restandolo los anchos de las 3 imagenes.

    Complicado y muchas vueltas? No tanto. Peor es implementar la alternativa a la opcion "Resize".
    Para eso, tenes que llamar a un procedure que lee la posicion y tamaño de cada boton, pic, label, edit, tabla... que tenes en la ventana, uno por uno, y aplicarle un porcentaje para agrandar o reducir su tamaño actual. (Y tambien a su tipo de letra!)
    Es un laburo de hormiga pero es la unica forma que encontre en power cobol V3.
    Si queres un ejemplo lo preparo un poco y lo subo...
    Espero que te sirva.

    0 Not allowed!

  3. #3
      Administrador
    Avatar de Kuk

    Registrado
    enero de 2015
    Ubicación
    Madrid
    Edad
    39
    Mensajes
    2,288
    Última visita
    Hoy a las 17:16

    Agradecimientos
     
    Recibidos
    1,036
    Enviados
    888

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

    Predeterminado

    @Adrianeloy, usa el resalto de código que hay en el editor, en este caso COBOL.

    Lo que dices no es precisamente lo que quiero hacer. En realidad, si haces lo mismo que los botones nativos, no entiendo por qué los quitas y lo haces todo a mano?

    Yo a lo que me refiero es al evento en sí. Cuando quieres hacer Form de dimensiones variables, en PowerCOBOL 9 sea marcas la casilla "Scallable", sea recalculas las posiciones como bien dices en tu post (que mejor recalcular, lo de Scallable no me mola mucho...). El problema es que "Resized" es un evento, es decir reside en el bucle WndProc, y cuando el SO envía el message WM_SIZE es cuando se ejecuta el código que metas (el de calculo de posiciones y etc). Pero en PowerCOBOL 3 el WndProc de la ventana (que evidentemente no está disponible para nosotros) no controla este mensaje.

    Se puede hacer SubClassing del WndProc haciendo una DLL en C++, o meter un Timer que controle el cambio de dimensiones. Pero pensaba que a lo mejor la gente que más lo ha usado tiene otra solución más simple. Como por ejemplo, yo no sabía que la propiedad "hwnd" de los controles nativos de PowerCOBOL 9 están simplemente ocultos pero accesibles en todo momento.

    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 botón en el editor y escribiendo su nick.

  4. #4
      Junior
    Avatar de Adrianeloy

    Registrado
    marzo de 2015
    Ubicación
    Santa Fe/rosario
    Edad
    57
    Mensajes
    40
    Última visita
    22.03.2024

    Agradecimientos
     
    Recibidos
    33
    Enviados
    30

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

    Predeterminado

    Agregué las imagenes como un medio de detectar que se pulsó "maximizar" y poder reescalar todo, porque no encontré otra manera de detectar ese evento en PowerCobol V3.

    0 Not allowed!

  5. #5
      Administrador
    Avatar de Kuk

    Registrado
    enero de 2015
    Ubicación
    Madrid
    Edad
    39
    Mensajes
    2,288
    Última visita
    Hoy a las 17:16

    Agradecimientos
     
    Recibidos
    1,036
    Enviados
    888

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

    Predeterminado

    @Adrianeloy, el evento del que hablo, es cuando un Form no está minimizado ni maximizado sino redimensionado por el usuario con el ratón. Ese mismo evento pasa al maximizar y minimizar, es verdad, pero si el Form es redimensionable, el usuario puede cambiar el tamaño sin maximizar.

    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 botón en el editor y escribiendo su nick.

Información de Tema

Usuarios Viendo este Tema

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

Temas Similares

  1. [Sintaxis] Problema en el evento "Return" en TextBox (CmEdit)
    Por dmosca en el foro PowerCOBOL (ActiveX, v4 - v11)
    Respuestas: 8
    Último Mensaje: 03.08.2017, 23:40
  2. [Información] Error "impresora en uso" al cambiar de Form
    Por dmosca en el foro PowerFORM
    Respuestas: 2
    Último Mensaje: 20.04.2017, 16:44
  3. [Sintaxis] Filtro con CmEdit y evento "change"
    Por Roger en el foro PowerCOBOL (ActiveX, v4 - v11)
    Respuestas: 4
    Último Mensaje: 26.02.2017, 14:09
  4. [Sintaxis] Obtener la propiedad "Name" del Form en ejecución
    Por Fito en el foro PowerCOBOL (ActiveX, v4 - v11)
    Respuestas: 4
    Último Mensaje: 19.07.2016, 00:47
  5. [Aporte] Añadir evento "Resized" al SHEET
    Por Kuk en el foro Cocina PowerCOBOL V3L10
    Respuestas: 0
    Último Mensaje: 22.12.2015, 16:32

Etiquetas para este Tema

Marcadores

Marcadores

Permisos de Publicación

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