Resolucion en pantalla

Post Reply
Loren
Posts: 458
Joined: Fri Feb 16, 2007 10:29 am
Location: Cadiz - España

Resolucion en pantalla

Post by Loren »

Compañeros, buenos días:

Tengo un software diseñado y optimizado para una resolucion de 1024x768, donde fundamentalmente utiliza ventanas Dialogs y no Windows, desde recurso diseñados con Pelles C.

El caso es que tengo algunos usuarios que al cambiar de resolución en sus equipos (a letra más grande 125%, por falta de visión) o simplemente otra resolución (640x480), los buttons de los dialogs se esconden y desaparecen en pantalla por lo que es inoperativo el funcionamiento del programa.

He visto que los programas más comerciales diseñados por empresa muy potentes se adaptan a las nuevas configuraciones de pantalla.
La solución NO sería insertar un msginfo al principio del programa advirtiendo al usuario que cambie de resolución.
¿ Existe alguna rutina que pueda incorporar a mi software para cambiar el tamaño de los dialogs en tiempo de ejecución?

Mil gracias.
Un saludo a todos
Desde Cádiz, ESpaña
User avatar
AngelSalom
Posts: 664
Joined: Fri Oct 07, 2005 7:38 am
Location: Vinaros (Castellón ) - España
Contact:

Re: Resolucion en pantalla

Post by AngelSalom »

Mira este hilo http://forums.fivetechsupport.com/viewt ... isplay+prg , concretamente la función DISPLAY.PRG
Angel Salom
http://www.visionwin.com
---------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.0
russimicro
Posts: 179
Joined: Sun Jan 31, 2010 3:30 pm
Location: Bucaramanga - Colombia

Re: Resolucion en pantalla

Post by russimicro »


Buen día.. Esta función la obtuve de este foro y me funciona muy bien

AjustaResolucion() // al inicio de la aplicacion

FUNCTION AjustaResolucion()

LOCAL nResoAncho := GetSysMetrics(0)

IF nResoAncho > 1024
CamReso ( 1024, 768)
ENDIf

RETURN nil

//*****************************************************************

Function CamReso(nAncho, nAlto)

Local DM_PELSWIDTH := nHex("80000")
Local DM_PELSHEIGHT := nHex("100000")

//Local DM_PELSWIDTH := nHex("100000")
//Local DM_PELSHEIGHT := nHex("160000")

Local oDevMode
Local lPosible
Local cBuffer
Local lCamReso := .f.
DEFAULT nAncho := GetSysMetrics(0), ;
nAlto := GetSysMetrics(1)

STRUCT oDevMode
MEMBER cDevName AS STRING LEN 32
MEMBER nSpecVer AS WORD
MEMBER nDrvVer AS WORD
MEMBER nSize AS WORD
MEMBER nDrvExtra AS WORD
MEMBER nFields AS DWORD
MEMBER nOrientat AS WORD
MEMBER nPaperSiz AS WORD
MEMBER nPaperLen AS WORD
MEMBER nPaperWid AS WORD
MEMBER nScale AS WORD
MEMBER nCopies AS WORD
MEMBER nDefSrc AS WORD
MEMBER nPrnQlty AS WORD
MEMBER nColor AS WORD
MEMBER nDuplex AS WORD
MEMBER nYResolut AS WORD
MEMBER nTTOpt AS WORD
MEMBER nCollate AS WORD
MEMBER cFormName AS STRING LEN 32
MEMBER nUnusePad AS WORD
MEMBER nBitsPPel AS DWORD
MEMBER nPelWidth AS DWORD
MEMBER nPelHeigh AS DWORD
MEMBER nDisFlags AS DWORD
MEMBER nDisFreq AS DWORD
ENDSTRUCT

cBuffer := oDevMode:cBuffer
lPosible := EnumDisplaySettings(0, 0, @cBuffer)
IF lPosible
oDevMode:nFields := nOr(DM_PELSWIDTH, DM_PELSHEIGHT )
oDevMode:nPelWidth := nAncho
oDevMode:nPelHeigh := nAlto
cBuffer:=oDevMode:cBuffer
TRY
ChangeDisplaySettings(@cBuffer, 4)
lCamReso := .T.
CATCH
MsgAlert("Modo no soportado", "Error" )
END
else
MsgAlert("Modo no soportado", "Error" )
endif
return lCamReso

DLL32 FUNCTION EnumDisplaySettings(lpszDeviceName AS DWORD,;
iModeNum AS DWORD, ;
@lpDevMode AS LPSTR) AS BOOL PASCAL;
FROM "EnumDisplaySettingsA" LIB "User32.dll"

DLL32 STATIC FUNCTION ChangeDisplaySettings(@lpDevMode AS LPSTR,;
dwFlags AS DWORD) AS DWORD PASCAL;
FROM "ChangeDisplaySettingsA" LIB "User32.dll"

DLL32 FUNCTION ExitWindowsEx(uFlags AS DWORD,;
dwReserved AS DWORD) AS DWORD PASCAL;
LIB "user32.dll"

//************************************************************************

Johnson Russi
User avatar
Bayron
Posts: 815
Joined: Thu Dec 24, 2009 12:46 am
Location: Philadelphia, PA

Re: Resolucion en pantalla

Post by Bayron »

La mejor manera, es por codigo....

Tamaño del Font

Code: Select all

DEFINE FONT oFont1 NAME 'Verdana' ;
            SIZE 0 , ( 22 * ( Min ( oDIALOG:nWidth / 1680 , oDIALOG:nHeight / 1050 ) ) ) * nPorcentaje ;
            BOLD
Botones

Code: Select all

@ ( Cuadro1[1][1] + ( Btn1Height * 1 ) + 9 ) , ( Cuadro1[1][2] + ( Btn1Width * 0 ) +  8 ) ;
            BTNBMP oBtnF[ 1] OF oDIALOG ;
            SIZE ( Btn1Width - 4 ) , ( Btn1Height - 4 ) ;
            CENTER PIXEL ADJUST NOBORDER ;
            FONT oFont1 ;
            PROMPT "BOTON1"

https://www.youtube.com/watch?v=PVQpK-Eu7qo
=====>

Bayron Landaverry
(215)2226600 Philadelphia,PA, USA
+(502)46727275 Guatemala
MayaBuilders@gMail.com

FWH12.04||Harbour 3.2.0 (18754)||BCC6.5||UEstudio 10.10||
Windows 7 Ultimate

FiveWin, One line of code and it's done...
pgfdz
Posts: 145
Joined: Wed Nov 03, 2010 9:16 am

Re: Resolucion en pantalla

Post by pgfdz »

Hola

El escalado de la fuente me parece una solución magnífica, sencilla y elegante. Muy bueno.

Saludos
Paco García
horacio
Posts: 1270
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Resolucion en pantalla

Post by horacio »

Byron, cual es el valor de nPorcentaje ? Gracias

Saludos
User avatar
Bayron
Posts: 815
Joined: Thu Dec 24, 2009 12:46 am
Location: Philadelphia, PA

Re: Resolucion en pantalla

Post by Bayron »

nPorcentaje es un valor que se le asigna en un archivo .INI, para que pueda ser cambiado por el usuario, o puede almacenarce en una BD y tener una opcion de configuracion...

Yo lo hice de esta manera para resolver el problema del tamano de las pantallas.

Son demasiados controles, asi que de otra manera seria imposible...

https://www.youtube.com/watch?v=PVQpK-Eu7qo
=====>

Bayron Landaverry
(215)2226600 Philadelphia,PA, USA
+(502)46727275 Guatemala
MayaBuilders@gMail.com

FWH12.04||Harbour 3.2.0 (18754)||BCC6.5||UEstudio 10.10||
Windows 7 Ultimate

FiveWin, One line of code and it's done...
User avatar
Bayron
Posts: 815
Joined: Thu Dec 24, 2009 12:46 am
Location: Philadelphia, PA

Re: Resolucion en pantalla

Post by Bayron »

El proceso es sencillo

Hacer el diseño en una resolución especifica

Luego dividir la resolucion por la resolucion en que se diseñó

Multiplicar por el porcentaje que se desea ocupar en la pantalla

Hacer el diseño estilo WEB, pero sumando y restando valores...

Aqui una foto de cuando estaba diseñando todavia...

Image

Image
=====>

Bayron Landaverry
(215)2226600 Philadelphia,PA, USA
+(502)46727275 Guatemala
MayaBuilders@gMail.com

FWH12.04||Harbour 3.2.0 (18754)||BCC6.5||UEstudio 10.10||
Windows 7 Ultimate

FiveWin, One line of code and it's done...
Post Reply