Alguien ha hecho esto: cambiar el fondo de la ventana principal en tiempo de ejecucion:
hice esto pero no me funcionó, ...
MENUITEM "Empresa" action (CapEmpresa(oWnd,.f.),;
oWnd:settext( alltrim( empresa->nombre ) +" "+ cTextoPeriodo),;
cLogo := "logo"+strzero(empresa->clave,4,0)+".jpg",;
oFondo := TImage():Define(,cLogo),;
oWnd:bPainted:={|hDC|PalBmpDraw(hDC,0,0,oFondo:hBitmap,,oWnd:nWidth,oWnd:nHeight,,.T.)},;
oWnd:refresh())
creo que no es con refresh,....¿?
Cambiar el fondo de la ventana principal en tiempo de ejecu
-
- Posts: 132
- Joined: Sun Oct 23, 2005 4:09 pm
- Location: Pánuco,Ver. México
-
- Posts: 132
- Joined: Sun Oct 23, 2005 4:09 pm
- Location: Pánuco,Ver. México
Re: Cambiar el fondo de la ventana principal en tiempo de ejecu
de verdad será que no se puede? .... debe haber algun repintado o algo parecido...
- cuatecatl82
- Posts: 614
- Joined: Wed Mar 14, 2007 6:49 pm
- Location: San Cristobal de las Casas, Chiapas México
- Contact:
Re: Cambiar el fondo de la ventana principal en tiempo de ejecu
Buenos dias Etimado Miguel...
Hace días lei tu post y tu solicitud, pero por falta de tiempo no pude contestar..
Sobre tu pregunta, de poder se puede.. yo lo hago en una ventana principal. pero el fondo es un brush de tipo imagen.
en mi caso tengo 100 imagenes en jpg dentro de una carpeta llamada FOTOS y el usuario cambia la imagen que más le agrade, esta imagen y la configuracion de cada usuario es guardada en un archivo config.ini,
Puedes mostrar un brush como imagen o como los estilos Clasicos de Fivewin, eso es cuestion de gustos de cada usuario y es guardada en el archivo de configuración, así cada usuario tiene una imagen diferente o un fondo diferente.
Ctrl + Suma -> (+) Cambia imagen hacia arriba
Ctrl + Resta -> (-) Cambia imagen hacia abajo
Crtl + Mulpiplicacion -> (*) Cambia imagen aleatoria del 1 al 100
Es un proceso algo enrredado, pero puedo darte una idea de como hacerlo...
Debes tambien tener el archivo FREEIMAGE.DLL para poder ver las imagenes jpg.
Esto esta implantado en mi sistema y funciona al 100%, espero te haya dado una ayudita, si tienes dudas al respecto comunicate conmigo para poderlo resolver..
NOTA: El cambio de imagenes en tiempo real no lo he probado en entornos MDI, pero no creo que haya mucho conflicto entre una ventana y otra, sería cuestión de hacer unas cuantas modificaciones, pero nada dificil..
Espero te sirva a ti y a toda la comunidad que lo necesite...
Hace días lei tu post y tu solicitud, pero por falta de tiempo no pude contestar..
Sobre tu pregunta, de poder se puede.. yo lo hago en una ventana principal. pero el fondo es un brush de tipo imagen.
en mi caso tengo 100 imagenes en jpg dentro de una carpeta llamada FOTOS y el usuario cambia la imagen que más le agrade, esta imagen y la configuracion de cada usuario es guardada en un archivo config.ini,
Puedes mostrar un brush como imagen o como los estilos Clasicos de Fivewin, eso es cuestion de gustos de cada usuario y es guardada en el archivo de configuración, así cada usuario tiene una imagen diferente o un fondo diferente.
Ctrl + Suma -> (+) Cambia imagen hacia arriba
Ctrl + Resta -> (-) Cambia imagen hacia abajo
Crtl + Mulpiplicacion -> (*) Cambia imagen aleatoria del 1 al 100
Es un proceso algo enrredado, pero puedo darte una idea de como hacerlo...
Code: Select all
STATIC oWndMain,oBrush1,oBrush2
//----------------------------------------------//
FUNCTION Main()
LOCAL pBrocha := "NINGUNO" // Prueba con "TILED","BRICKS","BORLAND"
LOCAL pEscr := 1 // Solo puede ser 1 o 0
LOCAL NomFondo := BRUSH46.JPG // Aki el nombre del archivo a mostrar
DEFINE BRUSH oBrush1 STYLE (pBrocha)
DEFINE WINDOW oWndMain TITLE "Cambio de Fondo" BRUSH oBrush1
oWndMain:bKeyDown = { | nKey | CambiaFondo(nKey) } //Aki cambiamos las imagenes
IF pEscr == "1"
DEFINE BRUSH oBrush1 FILENAME ".\FOTOS\"+NomFondo
ELSEIF pEscr == "0"
DEFINE BRUSH oBrush1 FILENAME ""
ENDIF
IF pBrocha == "NINGUNO" .AND. pEscr == "0"
DEFINE BRUSH oBrush2 COLOR nRGB( 128,128,128 )
SET BRUSH OF oWndMain TO oBrush2
ENDIF
ACTIVATE WINDOW oWndMain MAXIMIZED
oBrush1:END()
oBrush2:END()
RETURN nil
//----------------------------------------------//
STATIC FUNCTION CambiaFondo(nKey)
DO CASE
CASE ( nKey == VK_ADD .AND. GetKeyState( VK_CONTROL ) ) // CTRL + +
CambiaBrush(">")
CASE ( nKey == VK_SUBTRACT .AND. GetKeyState( VK_CONTROL ) ) // CTRL + -
CambiaBrush("<")
CASE ( nKey == VK_MULTIPLY .AND. GetKeyState( VK_CONTROL ) ) // CTRL + *
CambiaBrush("*")
ENDCASE
Return nil
//----------------------------------------------//
FUNCTION CambiaBrush(cTipo)
LOCAL oBrush,oBru,NomFondo,cFondo,nBr,nBrush
SYSREFRESH()
IF cTipo == ">"
cFondo:= BRUSH46.JPG //Recupero el Nombre de la foto y busco la siguiente
nBr:= SUBSTR(cFondo,6,7)
nBru:= VAL(nBr)
nBrush:= INT(nBru)
nBrush:= IF( nBrush > 98, 0, ++nBrush ) //si el conteo llego al máximo de 100 fotos vuelve a reiniciar
oWndMain:oBrush:RELEASE()
oWndMain:Refresh()
ELSEIF cTipo == "<"
cFondo:= BRUSH46.ACW //Recupero el Nombre de la foto y busco la anterior
nBr:= SUBSTR(cFondo,6,7)
nBru:= VAL(nBr)
nBrush:= INT(nBru)
nBrush:= IF( nBrush < 1, 99, --nBrush ) //si el conteo llego al minimo de 1 foto vuelve a empezar
oWndMain:oBrush:RELEASE()
oWndMain:Refresh()
ELSEIF cTipo == "*"
nBru:= Random(100) //Como tengo 100 fotos tomo una aleatoriamente
nBrush:= INT(nBru)
oWndMain:oBrush:RELEASE()
oWndMain:Refresh()
ENDIF
DEFINE BRUSH oBrush FILENAME ".\FOTOS\BRUSH" + ALLTRIM(STR(nBrush)) + ".JPG" // Las fotos deben llamarse Brush mas un numero del 0 a 100 y deben de estar en una carpeta llamda "FOTOS"
// brush10.jpg, brush11.jpg, etc..
SET BRUSH OF oWndMain TO oBrush
SYSREFRESH()
oWndMain:REFRESH()
RETURN NIL
Esto esta implantado en mi sistema y funciona al 100%, espero te haya dado una ayudita, si tienes dudas al respecto comunicate conmigo para poderlo resolver..
NOTA: El cambio de imagenes en tiempo real no lo he probado en entornos MDI, pero no creo que haya mucho conflicto entre una ventana y otra, sería cuestión de hacer unas cuantas modificaciones, pero nada dificil..
Espero te sirva a ti y a toda la comunidad que lo necesite...
Soluciones y Diseño de Software
Damos Soluciones...
I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos
http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
Damos Soluciones...
I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos
http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
- cuatecatl82
- Posts: 614
- Joined: Wed Mar 14, 2007 6:49 pm
- Location: San Cristobal de las Casas, Chiapas México
- Contact:
Re: Cambiar el fondo de la ventana principal en tiempo de ejecu
Reviviendo el post a Solicitud de Jairo:
Aqui una solución más simplificada y con ejemplo funcional de como implementarlo en sus Aplicaciones...
http://forums.fivetechsupport.com/viewt ... =6&t=21878
Saludos..
Aqui una solución más simplificada y con ejemplo funcional de como implementarlo en sus Aplicaciones...
http://forums.fivetechsupport.com/viewt ... =6&t=21878
Saludos..
Soluciones y Diseño de Software
Damos Soluciones...
I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos
http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
Damos Soluciones...
I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos
http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
- Willi Quintana
- Posts: 859
- Joined: Sun Oct 09, 2005 10:41 pm
- Location: Cusco - Perú
- Contact:
Re: Cambiar el fondo de la ventana principal en tiempo de ejecu
Holas,,, No funciona en una MDI,
Salu2
Salu2
-
- Posts: 122
- Joined: Wed Oct 12, 2005 1:03 pm
- Location: Cuernacava, Morelos Mexico
Re: Cambiar el fondo de la ventana principal en tiempo de ejecu
Marco Augusto Rodriguez Manzo
fwh 2020 Xharbour 1.2.3
MySQL 5.0.19 Fastreport
PERZO SOFT
Sistemas Personalizados
fwh 2020 Xharbour 1.2.3
MySQL 5.0.19 Fastreport
PERZO SOFT
Sistemas Personalizados
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Cambiar el fondo de la ventana principal en tiempo de ejecu
Hola Willi, esto me funciona en ambiente MDI.
Function Main()
local oBmp
oBmp = TImage():Define( , GetPvProfString("Config","ImagenWnd",".\FapSoft.jpg",cIniFile) )
....
DEFINE BUTTON oBoto9 RESOURCE "MONITOR" PROMPT "Imágenes" OF oBar TOOLTIP "Seleccionar Imagen de fondo" ACTION ( CambiaImagen(oBmp,oWnd) )
.....
oWnd:bPainted := { | hDC | PongaBmp( hDC , oBmp , oWnd ) }
ACTIVATE WINDOW oWnd MAXIMIZED
00000000000000000000000000
//-----------------------------------------//
STATIC FUNCTION PongaBmp( hDC, oBmp, oWnd )
PalBmpDraw( hDC, 0, 0,oBmp:hBitmap,, oWnd:oWndClient:nWidth, oWnd:oWndClient:nHeight,, .t.)
return nil
//----------------------------------
Function CambiaImagen( oBmp, oWnd )
local cImage
if ! Empty( cImage := cGetFile( "Image File (*.bmp,jpg,png)|*.bmp;*.png;*.jpg|", ;
"Select Image file ",, ;
'..\IMAGENES' ) ) // 'c:\fwh\bitmaps\' ) )
cImage:="..\IMAGENES\"+cFileNoPath(cImage)
oBmp:LoadBmp( cImage )
oWnd:oWndClient:Refresh()
WritePProString("Config","ImagenWnd", cImage, cIniFile)
endif
Return nil
Espero te sirva.
Saludos.
Function Main()
local oBmp
oBmp = TImage():Define( , GetPvProfString("Config","ImagenWnd",".\FapSoft.jpg",cIniFile) )
....
DEFINE BUTTON oBoto9 RESOURCE "MONITOR" PROMPT "Imágenes" OF oBar TOOLTIP "Seleccionar Imagen de fondo" ACTION ( CambiaImagen(oBmp,oWnd) )
.....
oWnd:bPainted := { | hDC | PongaBmp( hDC , oBmp , oWnd ) }
ACTIVATE WINDOW oWnd MAXIMIZED
00000000000000000000000000
//-----------------------------------------//
STATIC FUNCTION PongaBmp( hDC, oBmp, oWnd )
PalBmpDraw( hDC, 0, 0,oBmp:hBitmap,, oWnd:oWndClient:nWidth, oWnd:oWndClient:nHeight,, .t.)
return nil
//----------------------------------
Function CambiaImagen( oBmp, oWnd )
local cImage
if ! Empty( cImage := cGetFile( "Image File (*.bmp,jpg,png)|*.bmp;*.png;*.jpg|", ;
"Select Image file ",, ;
'..\IMAGENES' ) ) // 'c:\fwh\bitmaps\' ) )
cImage:="..\IMAGENES\"+cFileNoPath(cImage)
oBmp:LoadBmp( cImage )
oWnd:oWndClient:Refresh()
WritePProString("Config","ImagenWnd", cImage, cIniFile)
endif
Return nil
Espero te sirva.
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql