Resolucion en pantalla

Resolucion en pantalla

Postby Loren » Thu Aug 13, 2015 9:54 am

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
Loren
 
Posts: 479
Joined: Fri Feb 16, 2007 10:29 am
Location: Cadiz - España

Re: Resolucion en pantalla

Postby AngelSalom » Thu Aug 13, 2015 10:40 am

Mira este hilo http://forums.fivetechsupport.com/viewtopic.php?f=6&t=29291&hilit=display+prg , concretamente la función DISPLAY.PRG
Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
User avatar
AngelSalom
 
Posts: 708
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España

Re: Resolucion en pantalla

Postby russimicro » Thu Aug 13, 2015 1:25 pm


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

russimicro
 
Posts: 225
Joined: Sun Jan 31, 2010 3:30 pm
Location: Bucaramanga - Colombia

Re: Resolucion en pantalla

Postby Bayron » Wed Sep 02, 2015 4:08 am

La mejor manera, es por codigo....

Tamaño del Font
Code: Select all  Expand view
DEFINE FONT oFont1 NAME 'Verdana' ;
            SIZE 0 , ( 22 * ( Min ( oDIALOG:nWidth / 1680 , oDIALOG:nHeight / 1050 ) ) ) * nPorcentaje ;
            BOLD


Botones
Code: Select all  Expand view
@ ( 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...
User avatar
Bayron
 
Posts: 815
Joined: Thu Dec 24, 2009 12:46 am
Location: Philadelphia, PA

Re: Resolucion en pantalla

Postby pgfdz » Wed Sep 02, 2015 10:44 am

Hola

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

Saludos
Paco García
pgfdz
 
Posts: 145
Joined: Wed Nov 03, 2010 9:16 am

Re: Resolucion en pantalla

Postby horacio » Thu Sep 03, 2015 7:42 pm

Byron, cual es el valor de nPorcentaje ? Gracias

Saludos
horacio
 
Posts: 1358
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Resolucion en pantalla

Postby Bayron » Wed Sep 09, 2015 2:11 am

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

Postby Bayron » Wed Sep 09, 2015 2:27 am

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...
User avatar
Bayron
 
Posts: 815
Joined: Thu Dec 24, 2009 12:46 am
Location: Philadelphia, PA


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 83 guests