Acción en un bitmap

Post Reply
horacio
Posts: 1270
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Acción en un bitmap

Post by horacio »

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

Code: Select all

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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Acción en un bitmap

Post by Antonio Linares »

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
horacio
Posts: 1270
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Acción en un bitmap

Post by horacio »

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
antolin
Posts: 475
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Acción en un bitmap

Post by antolin »

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...
horacio
Posts: 1270
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Acción en un bitmap

Post by horacio »

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

Saludos
antolin
Posts: 475
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Acción en un bitmap

Post by antolin »

Algo como esto::

Code: Select all

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...
horacio
Posts: 1270
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Acción en un bitmap

Post by horacio »

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

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

Re: Acción en un bitmap

Post by horacio »

Funcionó perfectamente. Muchas gracias Antolín.

Saludos
Post Reply