FoxPro/Visual FoxPro - Adaptar aplicativo a cualquier monitor

 
Vista:
Imágen de perfil de JAIME

Adaptar aplicativo a cualquier monitor

Publicado por JAIME (63 intervenciones) el 18/03/2010 17:52:58
Hola a todas y todos los programadores de Visual Foxpro,

reciban un cordial saludo.

Nucesito su ayuda porque se me esta presentando un problema con una aplicacion que estoy desarrollando.
Si la ejecuto en mi portatil no tengo problema con resolucion 1280 x 800, pero si la ejecuto en otro monitor con resolucion menor los formulrios quedan cortados y solo se ve una parte.
Ahora mi jefe me pidio el favor que le instale la apicacion en su portatil de 10 pulgadas y lo hice, pero los formularios no se ven en su totalidad, se cortan.

Ayudemen por fa.... mi jefe no espera y ya se esta poniendo .........

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Adaptar aplicativo a cualquier monitor

Publicado por Pablo (23 intervenciones) el 22/03/2010 20:12:53
Con esto podes saber la resolucion actual de la pc y cambiarla a la que vos quieras. El problema esta en que la pc soporte la resolucion que vos le pongas. Te recomiendo que programes en una resolucion mas o mendo estandar como 1024x768 que es mas probable que la mayoria la tenga.

Suerte

Declare Integer GetSystemMetrics In Win32API Integer nIndex && resolucion pantalla
Declare Integer EnumDisplaySettings In Win32API STRING lpszDeviceName, INTEGER iModeNum, STRING @lpDevMode
Declare Integer ChangeDisplaySettings In Win32API STRING @lpDevMode , INTEGER dwFlags

Function GetScreenResolution()
Local cWidth As String, cHeight As String
cWidth = GetSystemMetrics(0)
cHeight = GetSystemMetrics(1)

Return Alltrim(Str(cHeight)) + " x " + Alltrim(Str(cWidth))
EndFunc

Function Dimensiones
#DEFINE h_screenwidth 0 && Screen width
#DEFINE h_screenheight 1 && Screen HEIGHT

Local lnalto_screen, lnancho_screen
lnalto_screen = getsystemmetrics(h_screenheight)
lnancho_screen = getsystemmetrics(h_screenwidth)

If ( lnalto_screen < 768 OR lnancho_screen < 1024 )
If MessageBox("Es recomendable que la resolución "+Chr(13)+;
"de su monitor sea de 1024 x 768"+Chr(13)+"Para que el sistema se ejecute adecuadamente"+Chr(13)+Chr(13)+;
"¿ Desea cambiarla ?",4+32+0,"Verifique pregunta" ) = 6
Return .T.
Else
Return .F.
EndIf
Else
Return .F.
EndIf

#undefine h_screenwidth
#undefine h_screenheight
EndFunc

Function Cambiar_Resolucion
Lparameters tnwidth, tnheight
Local lnwidth, lnheight, lnmodenum, lcdevmode, lnresp

lnmodenum = 0
lcdevmode = Replicate(Chr(0), 156)
lnwidth = Iif(Empty(tnwidth), 800, tnwidth)
lnheight = Iif(Empty(tnheight), 600, tnheight)

*!* Se usa obtener todos los modos disponibles
Do While EnumDisplaySettings(NULL, lnmodenum, @lcdevmode) <> 0
lnmodenum = lnmodenum + 1
ENDDO

lcdevmode = Stuff(lcdevmode, 41, 4, long2str(1572864))
lcdevmode = Stuff(lcdevmode, 109, 4, long2str(tnwidth)) && Ancho
lcdevmode = Stuff(lcdevmode, 113, 4, long2str(tnheight)) && Alto
lnresp = ChangeDisplaySettings(@lcdevmode, 1)

If lnresp = 0
*MessageBox("La resolución de su monitor ha sido cambiada"+Chr(13)+;
"Ahora podra trabajar adecuamente",0+48+0,"atención" )
Return .T.
Else
*MessageBox("No se pudo cambiar la resolución de su monitor",0+48+0,"atención" )
Return .F.
EndIf
EndFunc

Function long2str
Lparameters lnlongval
*!* Convierte un long integer a un 4-byte character string
*!* Sintaxis: LongToStr(lnLongVal)
*!* Valor devuelto: lcRetStr
*!* Argumentos: lnLongVal
*!* lnLongVal especifica el long integer a convertir
Local lncnt, lcretstr
lcretstr = ''

For lncnt = 24 To 0 Step -8
lcretstr = Chr(Int(lnlongval/(2^lncnt))) + lcretstr
lnlongval = Mod(lnlongval, (2^lncnt))
Next
Return lcretstr
EndFunc
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JAIME

RE:Adaptar aplicativo a cualquier monitor

Publicado por JAIME (63 intervenciones) el 26/03/2010 16:21:13
¡¡¡¡¡GRACIAS PABLO¡¡¡¡¡¡¡
Te agradezco mucho por la ayuda y el interes en sacarme de este apuro, voy a probrar el codigo que me envias.
Pablo, puedo molestarte si tengo alguna duda despues de probra el codigo????

Saludos

Jaime Ortiz
Cali Colombia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar