FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Resolucion en pantalla
Posts: 479
Joined: Fri Feb 16, 2007 10:29 AM
Resolucion en pantalla
Posted: Thu Aug 13, 2015 09: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

Posts: 728
Joined: Fri Oct 07, 2005 07:38 AM
Re: Resolucion en pantalla
Posted: 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
Posts: 411
Joined: Sun Jan 31, 2010 03:30 PM
Re: Resolucion en pantalla
Posted: Thu Aug 13, 2015 01: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

Posts: 883
Joined: Thu Dec 24, 2009 12:46 AM
Re: Resolucion en pantalla
Posted: Wed Sep 02, 2015 04:08 AM
La mejor manera, es por codigo....

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


Botones
Code (fw): Select all Collapse
@ ( 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
xBasePHP.com
(215)2226600 Philadelphia,PA, USA
MayaBuilders@gMail.com
Guatemala

FWH25.06--Harbour 3.0.0--BCC7.7--UEstudio 10.10
Windows 10

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

Posts: 145
Joined: Wed Nov 03, 2010 09:16 AM
Re: Resolucion en pantalla
Posted: 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
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: Resolucion en pantalla
Posted: Thu Sep 03, 2015 07:42 PM

Byron, cual es el valor de nPorcentaje ? Gracias

Saludos

Posts: 883
Joined: Thu Dec 24, 2009 12:46 AM
Re: Resolucion en pantalla
Posted: Wed Sep 09, 2015 02: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
xBasePHP.com
(215)2226600 Philadelphia,PA, USA
MayaBuilders@gMail.com
Guatemala

FWH25.06--Harbour 3.0.0--BCC7.7--UEstudio 10.10
Windows 10

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

Posts: 883
Joined: Thu Dec 24, 2009 12:46 AM
Re: Resolucion en pantalla
Posted: Wed Sep 09, 2015 02: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...



=====>

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

FWH25.06--Harbour 3.0.0--BCC7.7--UEstudio 10.10
Windows 10

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

Continue the discussion