PDA

Ver la Versión Completa : [Sintaxis] Tamaño del texto de la pantalla


Begoguay
6 de febrero de 2019, 10:03
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.

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 (https://docs.microsoft.com/en-us/windows/desktop/api/shellscalingapi/nf-shellscalingapi-getdpiformonitor)

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
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
Begoguay, ¡ya tengo solución a tu problema!!!


ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 HWND-DC PIC S9(9) COMP-5.
01 DPI PIC S9(9) COMP-5.

PROCEDURE DIVISION.

CALL "GetDC" WITH STDCALL USING BY VALUE 0
RETURNING HWND-DC

CALL "GetDeviceCaps" WITH STDCALL USING BY VALUE HWND-DC
BY VALUE 88
RETURNING DPI.

CALL "ReleaseDC" WITH STDCALL USING BY VALUE 0
BY VALUE HWND-DC

INVOKE POW-SELF "DisplayMessage" USING DPI "DPI" 64



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.