Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Sintaxis] Tamaño del texto de la pantalla (https://www.cobolforo.es/showthread.php?t=950)

Begoguay 6 de febrero de 2019 10:03

Tamaño del texto de la pantalla
 
1 Archivos Adjunto(s)
Hola

Me gustaría saber si hay forma (con alguna propiedad o metodo...) de saber que tamaño de texto tiene definido el sistema.

Por defecto tiene (ver imagen) el mas pequeño (100%), pero a veces se cambia a mediano (125%) o mas grande (150%), y entonces no caben en la pantalla los formularios que tenemos definicos.

Y también me gustaría saber si se podria cambiar en modo ejecución.

Archivo Adjunto 485

Kuk 6 de febrero de 2019 19:30

Begoguay, has probado con Propiedades del Form -> Pestaña "Coordinates" -> Scalable?

Begoguay 7 de febrero de 2019 10:26

Hola Kuk.

Creo que no me he explicado correctamente.
Tenemos clientes que cambian en la configuracion de la pantalla, en la resolución de la pantalla, la parte de 'Aumentar o reducir el tamaño del texto y de otros elementos', donde salen las opciones:
Mas pequeño (100% predeterminado)
Mediano 125%
Mas grande 150%

Entonces al ejecutar el programa, cuando han cambiado el tamaño predeterminado (100%) a otro (porque les gusta ver mas grandes las cosas en la pantalla), como la letra es mas grande, y los controles están ajustados al tamaño de letra con que lo hemos programado, pues no entran en el control (sea el que sea, TextBox, Tabla, Etiqueta....).
Lo que quiero saber es si hay forma de saber si el cliente ha cambiado esa configuración en el sistema, y de que manera se podría cambiar en modo ejecución.

Un saludo.

Kuk 7 de febrero de 2019 22:11

Begoguay, sí que te había entendido. Por eso te pregunto si has probado con "Scalable", porque podría ser que tenga en cuenta dicha posibilidad y reajuste todo él solito.

Si no lo hace, habrá que mirar esto: GetDpiForMonitor function | Microsoft Docs

Begoguay 12 de febrero de 2019 16:35

Hola.
Pues nada, con el 'Scalable' no funciona.
La letra se hace mas grande y no cabe en el control.
De todos modos, gracias

Un saludo

Joseg 12 de febrero de 2019 17:55

Cita:

Citación del post de Begoguay (Mensaje 4753)
Hola.
Pues nada, con el 'Scalable' no funciona.
La letra se hace mas grande y no cabe en el control.
De todos modos, gracias

Un saludo

é um bug NUNCA resolvido, apesar de ter sido expoto à mais de 10 anos à Fujitsu, quando a equipa que desenvolveu o PowerCobol ainda existia.

Kuk 12 de febrero de 2019 21:10

Begoguay, bueno pero no te rindas mujer! :baila:
¿Has mirado la función GetDpiForMonitor que te cité en mi post anterior?

Joseg, seguramente tenían cosas más importantes que hacer. Es un caso bastante aislado.

Kuk 14 de febrero de 2019 21:53

1 Archivos Adjunto(s)
Begoguay, ¡ya tengo solución a tu problema!!!

Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  01  HWND-DC     PIC S9(9) COMP-5.
  5.  01  DPI         PIC S9(9) COMP-5.
  6.  
  7.  PROCEDURE       DIVISION.
  8.          
  9.      CALL "GetDC" WITH STDCALL USING BY VALUE 0
  10.                                      RETURNING HWND-DC
  11.          
  12.      CALL "GetDeviceCaps" WITH STDCALL USING BY VALUE HWND-DC
  13.                                        BY VALUE 88                                  
  14.                                        RETURNING DPI.
  15.      
  16.      CALL "ReleaseDC" WITH STDCALL USING BY VALUE 0
  17.                                          BY VALUE HWND-DC
  18.      
  19.      INVOKE POW-SELF "DisplayMessage" USING DPI "DPI" 64
  20.      

Si te devuelve DPI=96, entonces está por defecto, o sea 100%.

Necesitas:
  • USER32.LIB
  • GDI32.LIB

Ambas en adjuntos ;)

Begoguay 14 de febrero de 2019 22:08

Muchisimas gracias Kuk.
Lo probaré.
¿Pero hay forma de cambiar ese tamaño, si estuviera en el 125% a un tamaño 100%, en modo ejecución? Porque yo necesito que el tamaño quede al 100%, tenga el que tenga al ejecutar el programa.

Un saludo.

Kuk 14 de febrero de 2019 23:12

Begoguay, no creo porque al cambiarlo vía normal, Windows pide cerrar sesión y volver a abrirla para que el cambio haga efecto.
Así que lo más fácil es detectarlo y avisar al usuario para que lo cambie él a mano.


La franja horaria es GMT +2. Ahora son las 15:38.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.