Poner BMP en Ventana principal (RESUELTO)
Poner BMP en Ventana principal (RESUELTO)
Hola a todos
Hay alguna forma de poner una imagen, bmp o jpg, en la ventana principal después de haberla creado?
Me explico
Creo la ventana principal, después elijo un área de trabajo y, en esa elección tengo que buscar un fichero que apunta a una imagen, la cual será la que ponga en la ventana principal, algo así como una especie de logotipo de la empresa sobre la que se trabaja.
Lo curioso es que de la forma que lo he intentado, sólo me aparece la imagen después de haber entrado y salido de alguna opción del menú de la ventana, antes no sale.
Alguna idea de como hacerlo?
Hay alguna forma de poner una imagen, bmp o jpg, en la ventana principal después de haberla creado?
Me explico
Creo la ventana principal, después elijo un área de trabajo y, en esa elección tengo que buscar un fichero que apunta a una imagen, la cual será la que ponga en la ventana principal, algo así como una especie de logotipo de la empresa sobre la que se trabaja.
Lo curioso es que de la forma que lo he intentado, sólo me aparece la imagen después de haber entrado y salido de alguna opción del menú de la ventana, antes no sale.
Alguna idea de como hacerlo?
Last edited by Pedro on Thu Feb 02, 2012 5:44 pm, edited 2 times in total.
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
- ruben Dario
- Posts: 986
- Joined: Thu Sep 27, 2007 3:47 pm
- Location: Colombia
Re: Poner BMP en Ventana principal
Pedro
Te refieres cambiar el fondo del escritorio de windows y que coloque el fond0 definido ejemplo como el de la empresa,
si se puede atrvez de la red, lo he hecho con windows 2003 server y estaciones XP.
Esto se hace en el servidor
No se si eso es lo que quieres.
Te refieres cambiar el fondo del escritorio de windows y que coloque el fond0 definido ejemplo como el de la empresa,
si se puede atrvez de la red, lo he hecho con windows 2003 server y estaciones XP.
Esto se hace en el servidor
No se si eso es lo que quieres.
- JavierVital
- Posts: 105
- Joined: Thu Feb 26, 2009 4:08 pm
- Contact:
Re: Poner BMP en Ventana principal
Pedro yo lo tengo asi :
DEFINE BitMap oBmp RESOURCE "LOGO_EMP"
DEFINE WINDOW oWin Title "Sistema Empresarial" Icon "AAsesores" NOICONIZE //Menu MenuG()
oWin:bPainted := {|hDC| ABmpTiled(hDC,oWin,oBmp)}
FUNCTION ABmpTiled( hDC, oWnd, oBmp )
local nWidth := oWnd:nWidth(), nHeight := oWnd:nHeight()
local nBmpWidth := oBmp:nWidth(), nBmpHeight := oBmp:nHeight()
local nCol := (nWidth-nBmpWidth)-20, nRow := (nHeight-nBmpHeight)-90
IF oBmp:hBitMap == 0
RETURN nil
ENDIF
PalBmpDraw( hDC, nRow, nCol, oBmp:hBitMap )
RETURN nil
DEFINE BitMap oBmp RESOURCE "LOGO_EMP"
DEFINE WINDOW oWin Title "Sistema Empresarial" Icon "AAsesores" NOICONIZE //Menu MenuG()
oWin:bPainted := {|hDC| ABmpTiled(hDC,oWin,oBmp)}
FUNCTION ABmpTiled( hDC, oWnd, oBmp )
local nWidth := oWnd:nWidth(), nHeight := oWnd:nHeight()
local nBmpWidth := oBmp:nWidth(), nBmpHeight := oBmp:nHeight()
local nCol := (nWidth-nBmpWidth)-20, nRow := (nHeight-nBmpHeight)-90
IF oBmp:hBitMap == 0
RETURN nil
ENDIF
PalBmpDraw( hDC, nRow, nCol, oBmp:hBitMap )
RETURN nil
Re: Poner BMP en Ventana principal
Hola Ruben
No me refiero al cambio del escritorio de windows, si no a la imagen que ponemos como fondo de nuestra aplicación.
Javier, por lo visto en tu código, oWin:bPainted := {|hDC| ABmpTiled(hDC,oWin,oBmp)} esto es antes de hacer activar la ventana y aparte de eso tu defines la imagen antes. En mi caso no sé cual es la imagen elegida para poner como logotipo de la empresa. Tengo que esperar a la activación de la ventana, y en el evento ON INI es donde voy a saber que imagen BMP voy a tener que poner en la ventana.
Más o menos así :
El tema es, ¿qué debo enviar a la función para que me pinte la nueva imagen?
Ahora tengo este código, pero sólo me funciona después de entrar y salir de alguna opción de la barra del menú.
No me refiero al cambio del escritorio de windows, si no a la imagen que ponemos como fondo de nuestra aplicación.
Javier, por lo visto en tu código, oWin:bPainted := {|hDC| ABmpTiled(hDC,oWin,oBmp)} esto es antes de hacer activar la ventana y aparte de eso tu defines la imagen antes. En mi caso no sé cual es la imagen elegida para poner como logotipo de la empresa. Tengo que esperar a la activación de la ventana, y en el evento ON INI es donde voy a saber que imagen BMP voy a tener que poner en la ventana.
Más o menos así :
Code: Select all
ACTIVATE WINDOW oWMain MAXIMIZED ;
ON INIT (EscogeArea(),; // aquí escogemos el área de trabajo y es donde averiguamos que imagen es la deseada por el usuario
PonFondo(),; // se supone que aquí deberíamos poner el nuevo fondo a la ventana principal
OtrasOpciones()) ; // bueno resto de cosas por hacer........
ON PAINT(DrawBitmap( hDC, oBmp:hBitmap, ;
( oWMain:nHeight() / 2 ) - ( oBmp:nHeight() / 2 ), ;
( oWMain:nWidth() / 2 ) - ( oBmp:nWidth() / 2 ),0,0 ));
VALID MsgYesNo( "Finalizar sesion?","Elija" )
Ahora tengo este código, pero sólo me funciona después de entrar y salir de alguna opción de la barra del menú.
Code: Select all
DEFINE BITMAP oBmp
DEFINE WINDOW oWMain MDI .........
ACTIVATE WINDOW oWMain MAXIMIZED ;
ON INIT (EscogeArea(),PonFondo(),VerificaConfig()) ;
ON PAINT(DrawBitmap( hDC, oBmp:hBitmap, ;
( oWMain:nHeight() / 2 ) - ( oBmp:nHeight() / 2 ), ;
( oWMain:nWidth() / 2 ) - ( oBmp:nWidth() / 2 ),0,0 ));
VALID MsgYesNo( "Finalizar sesion?","Elija" )
//----------------------------------------------------------------------------//
FUNCTION PonFondo()
//----------------------------------------------------------------------------//
Local cBmpFile := Alltrim(aDatEmp[15]) //aquí traemos el path y el nombre del fichero imagen
oBmp:LoadBmp(cBmpFile)
oBmp:Refresh()
oWMain:Refresh()
Sysrefresh()
Return(nil)
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
- JavierVital
- Posts: 105
- Joined: Thu Feb 26, 2009 4:08 pm
- Contact:
Re: Poner BMP en Ventana principal
Como le haces para cargar la imagen en "Ponefondo()"
Re: Poner BMP en Ventana principal
oBmp:LoadBmp(cBmpFile)
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
- JavierVital
- Posts: 105
- Joined: Thu Feb 26, 2009 4:08 pm
- Contact:
Re: Poner BMP en Ventana principal
Perdo, ya lo cambie
oWin:bPainted := {|hDC| ABmpTiled(hDC,oWin,oBmp)} // Este lo quite
y lo puse al
ACTIVATE WINDOW oWin Maximized ON INIT PoneUsua() ON PAINT ABmpTiled(hDC,oWin,oBmp) VALID Cerrar()
y lo hace correctamente
Yo solo tengo 2 logos por 2 empresas y los selecciono asi :
IF lCorona
DEFINE BitMap oBmp RESOURCE "LOGO_EMP"
ELSE
DEFINE BitMap oBmp RESOURCE "LOGO_EMPH"
ENDIF
oWin:bPainted := {|hDC| ABmpTiled(hDC,oWin,oBmp)} // Este lo quite
y lo puse al
ACTIVATE WINDOW oWin Maximized ON INIT PoneUsua() ON PAINT ABmpTiled(hDC,oWin,oBmp) VALID Cerrar()
y lo hace correctamente
Yo solo tengo 2 logos por 2 empresas y los selecciono asi :
IF lCorona
DEFINE BitMap oBmp RESOURCE "LOGO_EMP"
ELSE
DEFINE BitMap oBmp RESOURCE "LOGO_EMPH"
ENDIF
Re: Poner BMP en Ventana principal
Unas preguntas, Javier
¿Cuando tú activas la ventana, ya tienes el objeto BMP con su imagen? . Inténtalo sin tener la imagen
¿Qué se hace antes en la clase Windows, el Paint, o el Init ? . Esto es porque creo que en la clase se activa antes el PAINT que el INIT, por eso se pinta primero la imagen y luego hará lo que le digas en el INIT.
¿Has probado a hacer ON PAINT ABmpTiled(hDC,oWin,oBmp) sin tener todavía la imagen definida en el objeto oBmp?, ¿te funcionaría?
Esto viene a cuento de la primera pregunta
Estas preguntas son para que comprendas que el objeto imagen oBmp, se tendría que cargar después de crear la ventana principal, cuando ésta ya tiene su barra de botones y su menú. A mí me funciona lo que tengo, con la salvedad de que la imagen SOLO se activa una vez escogida alguna de las opciones del menú.
A ver si Antonio, o Daniel, o alguien podría decirme el motivo por el cual se activa la imagen de esta manera.
¿Cuando tú activas la ventana, ya tienes el objeto BMP con su imagen? . Inténtalo sin tener la imagen
¿Qué se hace antes en la clase Windows, el Paint, o el Init ? . Esto es porque creo que en la clase se activa antes el PAINT que el INIT, por eso se pinta primero la imagen y luego hará lo que le digas en el INIT.
¿Has probado a hacer ON PAINT ABmpTiled(hDC,oWin,oBmp) sin tener todavía la imagen definida en el objeto oBmp?, ¿te funcionaría?
Esto viene a cuento de la primera pregunta
Estas preguntas son para que comprendas que el objeto imagen oBmp, se tendría que cargar después de crear la ventana principal, cuando ésta ya tiene su barra de botones y su menú. A mí me funciona lo que tengo, con la salvedad de que la imagen SOLO se activa una vez escogida alguna de las opciones del menú.
A ver si Antonio, o Daniel, o alguien podría decirme el motivo por el cual se activa la imagen de esta manera.
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Poner BMP en Ventana principal
Hola Pedro.
Veo que usas entorno MDI, por lo tanto, creo que te funcionaría así:
FUNCTION PonFondo()
//----------------------------------------------------------------------------//
Local cBmpFile := Alltrim(aDatEmp[15]) //aquí traemos el path y el nombre del fichero imagen
oBmp:LoadBmp(cBmpFile)
// oBmp:Refresh()
oWMain:oWMainClient:Refresh()
Sysrefresh()
Return(nil)
Saludos
Veo que usas entorno MDI, por lo tanto, creo que te funcionaría así:
FUNCTION PonFondo()
//----------------------------------------------------------------------------//
Local cBmpFile := Alltrim(aDatEmp[15]) //aquí traemos el path y el nombre del fichero imagen
oBmp:LoadBmp(cBmpFile)
// oBmp:Refresh()
oWMain:oWMainClient:Refresh()
Sysrefresh()
Return(nil)
Saludos
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Re: Poner BMP en Ventana principal
Muchas gracias Francisco
Funcionó a las mil maravillas, con esto puedo poner a cada área de trabajo el logotipo que elija el usuario.
Una vez escogido el área , ya sea de primera vez o si durante la ejecución del programa _ de área de trabajo se pone su logotipo.
Funcionó a las mil maravillas, con esto puedo poner a cada área de trabajo el logotipo que elija el usuario.
Una vez escogido el área , ya sea de primera vez o si durante la ejecución del programa _ de área de trabajo se pone su logotipo.
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO