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
Resolucion en pantalla
- AngelSalom
- Posts: 664
- Joined: Fri Oct 07, 2005 7:38 am
- Location: Vinaros (Castellón ) - España
- Contact:
Re: Resolucion en pantalla
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
http://www.visionwin.com
---------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.0
-
- Posts: 179
- Joined: Sun Jan 31, 2010 3:30 pm
- Location: Bucaramanga - Colombia
Re: Resolucion en pantalla
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
Re: Resolucion en pantalla
La mejor manera, es por codigo....
Tamaño del Font
Botones
https://www.youtube.com/watch?v=PVQpK-Eu7qo
Tamaño del Font
Code: Select all
DEFINE FONT oFont1 NAME 'Verdana' ;
SIZE 0 , ( 22 * ( Min ( oDIALOG:nWidth / 1680 , oDIALOG:nHeight / 1050 ) ) ) * nPorcentaje ;
BOLD
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...
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...
Re: Resolucion en pantalla
Hola
El escalado de la fuente me parece una solución magnífica, sencilla y elegante. Muy bueno.
Saludos
El escalado de la fuente me parece una solución magnífica, sencilla y elegante. Muy bueno.
Saludos
Paco García
Re: Resolucion en pantalla
Byron, cual es el valor de nPorcentaje ? Gracias
Saludos
Saludos
Re: Resolucion en pantalla
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
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...
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...
Re: Resolucion en pantalla
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...
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
(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...
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...