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 > Fujitsu COBOL > PowerCOBOL V3L10 (Win32)
PowerCOBOL V3L10 (Win32) IDE Freeware compatible con Windows 7/8/10
Comunicados
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Sintaxis] Problema en el evento "Return" en TextBox (CmEdit) dmosca PowerCOBOL (ActiveX, v4 - v11) 8 3 de agosto de 2017 22:40
[Información] Error "impresora en uso" al cambiar de Form dmosca PowerFORM 2 20 de abril de 2017 15:44
[Sintaxis] Filtro con CmEdit y evento "change" Roger PowerCOBOL (ActiveX, v4 - v11) 4 26 de febrero de 2017 13:09
[Sintaxis] Obtener la propiedad "Name" del Form en ejecución Fito PowerCOBOL (ActiveX, v4 - v11) 4 18 de julio de 2016 23:47
[Aporte] Añadir evento "Resized" al SHEET Kuk Cocina PowerCOBOL V3L10 0 22 de diciembre de 2015 15:32
Respuesta
 
Herramientas

  #1
Antiguo 21 de julio de 2015, 12:50
IDENTIFICATION DIVISION
Kuk
Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
Forero desde (Registrado)diciembre 2014
España
Ubicación Madrid
Edad36 años
Última Actividad19.04.2021 18:52
PROCEDURE DIVISION
PostsPosts: 1.728
Ha dicho GraciasEnviado: 538
Ha recibido agradecimientosRecibido: 708
Mejores respuestasSoluiones: 93
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
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?



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
  #2
Antiguo 27 de julio de 2015, 13:16
IDENTIFICATION DIVISION
Adrianeloy
Novato Junior
ENVIRONMENT DIVISION
Avatar de Adrianeloy
DATA DIVISION
Forero desde (Registrado)marzo 2015
Argentina
Ubicación Santa Fe/rosario
Edad54 años
Última Actividad24.11.2020 16:31
PROCEDURE DIVISION
PostsPosts: 39
Ha dicho GraciasEnviado: 30
Ha recibido agradecimientosRecibido: 31
Mejores respuestasSoluiones: 3
ReputaciónReputación: 0
Adrianeloy is on a distinguished road Adrianeloy is on a distinguished road Adrianeloy is on a distinguished road
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:
Código COBOL:
  1. CALL SHOWSHEET OF SHEET1 USING POW-SWSHOWMINIMIZED.

Al hacer click en "cerrar" ejecuto:
Código COBOL:
  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.

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

Código COBOL:
  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.
Adrianeloy no ha iniciado sesión   Responder Con Cita
  #3
Antiguo 27 de julio de 2015, 13:49
IDENTIFICATION DIVISION
Kuk
Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
Forero desde (Registrado)diciembre 2014
España
Ubicación Madrid
Edad36 años
Última Actividad19.04.2021 18:52
PROCEDURE DIVISION
PostsPosts: 1.728
Ha dicho GraciasEnviado: 538
Ha recibido agradecimientosRecibido: 708
Mejores respuestasSoluiones: 93
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

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.



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
  #4
Antiguo 27 de julio de 2015, 15:48
IDENTIFICATION DIVISION
Adrianeloy
Novato Junior
ENVIRONMENT DIVISION
Avatar de Adrianeloy
DATA DIVISION
Forero desde (Registrado)marzo 2015
Argentina
Ubicación Santa Fe/rosario
Edad54 años
Última Actividad24.11.2020 16:31
PROCEDURE DIVISION
PostsPosts: 39
Ha dicho GraciasEnviado: 30
Ha recibido agradecimientosRecibido: 31
Mejores respuestasSoluiones: 3
ReputaciónReputación: 0
Adrianeloy is on a distinguished road Adrianeloy is on a distinguished road Adrianeloy is on a distinguished road
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.
Adrianeloy no ha iniciado sesión   Responder Con Cita
  #5
Antiguo 27 de julio de 2015, 16:09
IDENTIFICATION DIVISION
Kuk
Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
Forero desde (Registrado)diciembre 2014
España
Ubicación Madrid
Edad36 años
Última Actividad19.04.2021 18:52
PROCEDURE DIVISION
PostsPosts: 1.728
Ha dicho GraciasEnviado: 538
Ha recibido agradecimientosRecibido: 708
Mejores respuestasSoluiones: 93
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

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.



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
Respuesta

Tags
resized , sheet


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 22:37.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2021, Jelsoft Enterprises Ltd.