Acción en un bitmap

Acción en un bitmap

Postby horacio » Mon Jan 12, 2015 4:00 pm

Compañeros, tengo un bitmap en un dialogo, lo implementé de la siguiente manera,

Code: Select all  Expand view

hBitmap := LoadBitmap( GetResources(), 'cerrar' )
DrawBitmap( hDc, hBitmap, 8, aRect[ 4 ] - 45, 37, 20 )
 


Me gustaría que se pudiera ejecutar una acción al hacer click en él. Existe alguna manera ? Muchísimas gracias.

Saludos
horacio
 
Posts: 1358
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Acción en un bitmap

Postby Antonio Linares » Mon Jan 12, 2015 5:07 pm

Horacio,

Lo idóneo es que uses un control TBitmap. Si lo estás mostrando sobre una ventana puedes hacer:

@ <nFila>, <nColumna> BITMAP oBmp OF oWnd RESOURCE "cerrar" ;
ON CLICK MsgInfo( "Mi acción" )

Para un diálogo definido desde recursos:

REDEFINE BITMAP oBmp ID <nId> OF oDlg RESOURCE "cerrar" ;
ON CLICK MsgInfo( "Mi acción" )

Y en el fichero RC lo defines como un control definido por el usuario de clase "TBitmap"
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Acción en un bitmap

Postby horacio » Mon Jan 12, 2015 5:24 pm

Antonio, esta rutina la utilizo en el método Paint del dialogo, si utilizo la clase me da errores cada tanto. Por eso decidí implementarlo de esta manera. Capaz que se pueda usar la clase pero no he podido dilucidar el porque de los gpf. Gracias

Saludos
horacio
 
Posts: 1358
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Acción en un bitmap

Postby antolin » Tue Jan 13, 2015 11:41 am

Horacio, te estoy contestando desde una tableta, por lo que no tengo el FWH a mano, pero con oDlg:blButtonDown o como se llame, puedes llamar a una función pasándole nRow y nCol, para saber si has pinchado sobre el Bmp o no. Eso lo hago algunas veces y va muy bien.

Un saludo.
Peaaaaaso de foro...
antolin
 
Posts: 491
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Acción en un bitmap

Postby horacio » Tue Jan 13, 2015 5:03 pm

Antolín, gracias por tu respuesta. Si pudieras postear un ejemplo te lo agradecería.

Saludos
horacio
 
Posts: 1358
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Acción en un bitmap

Postby antolin » Tue Jan 13, 2015 5:45 pm

Algo como esto::
Code: Select all  Expand view
DEFINE DIALOG ....
   DEFINE GET ....
   ...
   oDlg:bPainted  := { |hDc| ( PalbmpLoad(hDc,10,10,hBmp,hPal), .... ) }
   oDlg:bLClicked := { |nRow,nCol| AccionBmp(nRow,nCol,hBmp) }
ACTIVATE DIALOG ...

Suoponiendo que el Bitmap esta en las coordenadas 10,10 y mide 200X300 (AnchoXAlto)

FUNCTION AccionBmp(nRow,nCol,hBmp)
   IF nRow > 9 .AND. nRow < 311 .AND. nCol > 9 .AND. nCol < 211
      ...
      HE PINCHADO SOBRE EL BITMAP
      Y REALIZO LA ACCION PREVISTA
      ...
   ENDIF
   ...
RETURN NIL
Peaaaaaso de foro...
antolin
 
Posts: 491
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Acción en un bitmap

Postby horacio » Tue Jan 13, 2015 9:20 pm

Muchas gracias Antolín por tu sugerencia, pruebo y comento.

Saludos
horacio
 
Posts: 1358
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Acción en un bitmap

Postby horacio » Wed Jan 14, 2015 2:02 pm

Funcionó perfectamente. Muchas gracias Antolín.

Saludos
horacio
 
Posts: 1358
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 72 guests