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 23:40 |
| [Duda] Error "impresora en uso" al cambiar de Form | dmosca | PowerFORM | 2 | 20 de abril de 2017 16:44 |
| [Sintaxis] Filtro con CmEdit y evento "change" | Roger | PowerCOBOL (ActiveX, v4 - v11) | 4 | 26 de febrero de 2017 14:09 |
| [Sintaxis] Obtener la propiedad "Name" del Form en ejecución | Fito | PowerCOBOL (ActiveX, v4 - v11) | 4 | 19 de julio de 2016 00:47 |
| [PowerCOBOL v3] Añadir evento "Resized" al SHEET | Kuk | Cocina PowerCOBOL | 0 | 22 de diciembre de 2015 16:32 |
![]() |
|
Administrador
![]()
|
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 |
||||||||
|
|
|
|
Forero Junior
![]()
|
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:
Al hacer click en "cerrar" ejecuto: Código COBOL:
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:
Código COBOL:
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. |
||||||||
|
|
|
|
Administrador
![]()
|
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 |
||||||||
|
|
|
|
Administrador
![]()
|
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 |
||||||||
|
|
|
![]() |
|
|
| Archivo - Cobol Foro | Contactar con Nosotros - Cobol Foro | |||||||