Fondo de Visual FoxPro

Quisiera me ayudara a crear un fondo personalizado y permanente a mi aplicación creada en Visual Foxpro; como ejemplo el logotipo o nombre de mi compañía. Esto para darle un toque personalizado a mi aplicación.

1 respuesta

Respuesta
1
Dependiendo de que version tengas de Visual Fox te permitirá porner gráficos bmp, jpg, jpeg, alugunas otras o todas.
Tu quieres cambiar el fondo de tu aplicación osea de la ventana principal o form principal de Visual Fox, este objeto tiene el nombre de _Screen
Y tiene propiedades como cualquier form (algunas o todas dependiendo de la version)
Cualquier cambio que quieras al form principal deberás referirte al objeto _Screen.
Por ejemplo
_Screen.BackColor = Rgb(255,1,1)
_screen.Picture = 'fondo.jpg'
_Screen.Caption = "Mi Aplicacion" + cNombreUsuario
etc, etc, etc..
Ahora bien si quieres
Que cada usuario tenga su propio fondo deberás hacer un procedimiento que te permita guardar en una base de datos el path o ruta de donde se encuentra esa gráfica o archivo de fondo, esto para cada usuario.
De tal forma que cuando inicie su sesión en tu aplicación por usuario vas a traer esa gráfica y le dices:
_screen.picture = rutadefoto
Saludos,
Derick Salazar
Guatemala
Excelente. Hice lo que me dijiste, pero cuando selecciono una imagen, me aparece duplicada, como en mosaico; ¿Qué debo hacer para que me aparezca centrada?
De nuevo gracias
Si lo se...
Puedes hacer 1000 cosas para que poder centrarla...
Pero yo te aconsejaría que hicieras tu gráfica de 1024 x 768 para que te cubriera todo el fondo...
No hay una opción como Autocenter o que se yo...
Si, lo se, es una muy mala solución pero es la más practica...
Como te quede mal en esta te mando este procedimiento para enmendar el error... ji ji
*****************************
*****************************
DO decl
#DEFINE LR_LOADFROMFILE 16
LOCAL lcBitmap
lcBitmap = "C:\Picture.bmp" &&& Tu grafica la debes especificar aca
= LoadAndShowBitmap (lcBitmap, LR_LOADFROMFILE, 251,100)
PROCEDURE LoadAndShowBitmap (lcBitmap, lnLoadOptions, lnX,lnY)
#DEFINE IMAGE_BITMAP 0
LOCAL hBitmap
hBitmap = LoadImage (0, lcBitmap, IMAGE_BITMAP,;
0,0, lnLoadOptions)
IF hBitmap <> 0
= ShowBitmap (hBitmap, lnX,lnY)
= DeleteObject (hBitmap)
ELSE
= MessageB (lcBitmap + Chr(13) + Chr(13) +;
"Check if this is a valid BMP file.",;
32, " Unable to load an image from file")
ENDIF
PROCEDURE ShowBitmap (hBitmap, lnX, lnY)
#DEFINE AC_SRC_OVER 0
#DEFINE AC_SRC_ALPHA 1
#DEFINE AC_SRC_NO_ALPHA 2
#DEFINE SRCCOPY 13369376
LOCAL hWnd, hDC, hMemDC, lnWidth, lnHeight
STORE 0 TO lnWidth, lnHeight
= GetBitmapSize (hBitmap, @lnWidth, @lnHeight)
hWnd = GetActiveWindow()
hDC = GetWindowDC (hWnd)
hMemDC = CreateCompatibleDC(hDC)
= SelectObject (hMemDC, hBitmap)
LOCAL lnAlphaBlend, lnResult,;
lnBlendOp, lnBlendFlags, lnSrcConstAlpha, lnAlphaFormat
lnBlendOp = AC_SRC_OVER && always
lnBlendFlags = 0 && always
lnSrcConstAlpha = 48 && intensity, up to 255
lnAlphaFormat = 0 && try AC_SRC_ALPHA on non-white background
lnAlphaBlend = lnBlendOp +;
BitLShift(lnBlendFlags, 8) +;
BitLShift(lnSrcConstAlpha, 16) +;
BitLShift(lnAlphaFormat, 24)
lnResult = AlphaBlend (hDC, lnX,lnY, lnWidth,lnHeight,;
hMemDC, 0,0, lnWidth,lnHeight,;
lnAlphaBlend)
IF lnResult = 0
? "Error:", GetLastError()
ENDIF
= DeleteDC(hMemDC)
= ReleaseDC (hWnd, hDc)
RETURN .T.
FUNCTION GetBitmapSize (hBitmap, lnWidth, lnHeight)
#DEFINE BITMAP_STRU_SIZE 24
LOCAL lcBuffer
lcBuffer = Repli(Chr(0), BITMAP_STRU_SIZE)
IF GetObjectA(hBitmap, BITMAP_STRU_SIZE, @lcBuffer) <> 0
lnWidth = buf2dword (SUBSTR(lcBuffer, 5,4))
lnHeight = buf2dword (SUBSTR(lcBuffer, 9,4))
ENDIF
FUNCTION buf2dword (lcBuffer)
RETURN Asc(SUBSTR(lcBuffer, 1,1)) + ;
BitLShift(Asc(SUBSTR(lcBuffer, 2,1)), 8) +;
BitLShift(Asc(SUBSTR(lcBuffer, 3,1)), 16) +;
BitLShift(Asc(SUBSTR(lcBuffer, 4,1)), 24)
PROCEDURE decl
DECLARE INTEGER CreateCompatibleDC IN gdi32 INTEGER hdc
DECLARE INTEGER DeleteDC IN gdi32 INTEGER hdc
DECLARE INTEGER GetActiveWindow IN user32
DECLARE INTEGER GetWindowDC IN user32 INTEGER hwnd
DECLARE INTEGER ReleaseDC IN user32 INTEGER hwnd, INTEGER dc
DECLARE INTEGER DeleteObject IN gdi32 INTEGER hObject
DECLARE INTEGER SelectObject IN gdi32 INTEGER hdc, INTEGER hObject
DECLARE INTEGER LoadImage IN user32;
INTEGER hinst, STRING lpszName, INTEGER uType,;
INTEGER cxDesired, INTEGER cyDesired, INTEGER fuLoad
DECLARE INTEGER GetObject IN gdi32 AS GetObjectA;
INTEGER hgdiobj, INTEGER cbBuffer, STRING @lpvObject
DECLARE INTEGER AlphaBlend IN Msimg32;
INTEGER hDestDC, INTEGER x, INTEGER y,;
INTEGER nWidth, INTEGER nHeight, INTEGER hSrcDC,;
INTEGER xSrc, INTEGER ySrc, INTEGER nWidthSrc,;
INTEGER nHeightSrc, INTEGER blendFunction
DECLARE INTEGER GetLastError IN kernel32
************************************************************
Espero te sirva... es como una marca de agua y se ve muy profesional...
Hasta la próxima,
Derick Salazar
Guatemala.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas