Page 1 of 1
Cambiar puntero mouse
Posted: Fri Jan 12, 2018 2:18 pm
by Xevi
Bien, en una ventana veo que se puede cambiar el puntero (CURSOR) del mouse, definiendo un CURSOR previamente...
Code: Select all
DEFINE CURSOR oCursor WAIT//HAND
DEFINE WINDOW oWnd FROM 1,0 TO 300,500 PIXEL;
CURSOR oCursor
Pero lo que pretendo es cambiar ese puntero (CURSOR) de un objeto... IMAGE, BUTTON, PANEL, etc...
¿Como lo hago???
He mirado la clase TButton y no tienen ninguna propiedad que vea que se le corresponde al CURSOR
Tampoco la clase TControl, que es de la que se hereda.
Gracias.
Re: Cambiar puntero mouse
Posted: Sat Jan 13, 2018 8:09 am
by Antonio Linares
Xevi,
La Clase TControl deriva de la Clase TWindow, por lo que tiene también la propiedad oCursor
Re: Cambiar puntero mouse
Posted: Sat Jan 13, 2018 10:19 am
by Xevi
Antonio,
Pues algo está fallando...
CURSOR oCursor no lo traga al compilar...
Y...
oImage:oCursor := oCursor
No cambia de cursor
Code: Select all
#include "FiveWin.ch"
//----------------------------------------------------------------------------//
function Main()
local oWnd, oChild1, oImage, oCursor
DEFINE CURSOR oCursor HAND
DEFINE WINDOW oWnd VSCROLL HSCROLL
@ 0, 0 XIMAGE oImage SIZE 32, 32 FILENAME "C:\fwh\bitmaps\32x32\App.bmp" NOBORDER /*CURSOR oCursor*/ OF oWnd
oImage:oCursor := oCursor
DEFINE WINDOW oChild1 CURSOR oCursor OF oWnd
oChild1:Show()
ACTIVATE WINDOW oWnd
return nil
Aquí SOLO cambia el cursor cuando pasas el mouse por encima de la Ventana2, y no por la imagen
Re: Cambiar puntero mouse
Posted: Sun Jan 14, 2018 6:28 am
by Antonio Linares
Xevi,
Tu ejemplo funciona correctamente aquí
La claúsula ... CURSOR oCursor ... no está implementada para el comando XIMAGE ... por eso el usar:
oImage:oCursor := oCursor
Re: Cambiar puntero mouse
Posted: Sun Jan 14, 2018 9:24 pm
by Xevi
Pues yo no tengo nada raro... y no me funciona
Code: Select all
#include "FiveWin.ch"
//----------------------------------------------------------------------------//
function Main()
local oWnd, oChild1, oImage, oImage2, oCursor
DEFINE CURSOR oCursor HAND
DEFINE WINDOW oWnd FROM 1,0 TO 500,800 PIXEL
@ 0, 0 IMAGE oImage SIZE 32, 32 FILENAME "C:\fwh\bitmaps\32x32\App.bmp" NOBORDER CURSOR oCursor OF oWnd
@ 0, 50 XIMAGE oImage2 SIZE 32, 32 FILENAME "C:\fwh\bitmaps\32x32\App.bmp" NOBORDER OF oWnd
oImage:oCursor := oCursor
DEFINE WINDOW oChild1 OF oWnd
oChild1:Center( oWnd )
oChild1:Show()
ACTIVATE WINDOW oWnd
return nil
El IMAGE si que cambia el CURSOR, el XIMAGE no!!!
Aquí, el centrado se ve que no funciona el cálculo del alto, si lo centra en el ancho, pero no en el alto
Re: Cambiar puntero mouse
Posted: Mon Jan 15, 2018 5:59 am
by Antonio Linares
Xevi,
Tienes un pequeño error en tu código:
@ 0, 50 XIMAGE oImage2 SIZE 32, 32 FILENAME "C:\fwh\bitmaps\32x32\App.bmp" NOBORDER OF oWnd
oImage2:oCursor := oCursor
En la función WndCenter() en FWH/source/winapi/wndcente.c hay que hacer esta modificación:
Code: Select all
if( hParent && IsWindow( hParent ) )
GetClientRect( hParent, &rctDesktop );
else
GetWindowRect( GetDesktopWindow(), &rctDesktop );
Se incluye este cambio en FWH 18.01, gracias
Re: Cambiar puntero mouse
Posted: Mon Jan 15, 2018 8:51 am
by Xevi
Antonio, es verdad, tengo un pequeño error, pero salvando el error
oImage2:oCursor := oCursor
El CURSOR no cambia en XIMAGE
por cierto, he probado el tooltip y tampoco funciona en XIMAGE
Code: Select all
#include "FiveWin.ch"
//----------------------------------------------------------------------------//
function Main()
local oWnd, oChild1, oImage, oImage2, oCursor
DEFINE CURSOR oCursor HAND
DEFINE WINDOW oWnd FROM 1,0 TO 500,800 PIXEL
@ 0, 0 IMAGE oImage SIZE 32, 32 FILENAME "C:\fwh\bitmaps\32x32\App.bmp" NOBORDER CURSOR oCursor OF oWnd
oImage:cTooltip := "Mensaje Tooltip"
@ 0, 50 XIMAGE oImage2 SIZE 32, 32 FILENAME "C:\fwh\bitmaps\32x32\App.bmp" NOBORDER OF oWnd
oImage2:oCursor := oCursor
oImage2:cTooltip := "Mensaje Tooltip2"
DEFINE WINDOW oChild1 OF oWnd
oChild1:Center( oWnd )
oChild1:Show()
ACTIVATE WINDOW oWnd
return nil
Re: Cambiar puntero mouse
Posted: Mon Jan 15, 2018 11:35 am
by Antonio Linares
Xevi,
Aquí funciona correctamente y posiblemente se deba a _ que hemos introducido para FWH 18.01 que esperamos publicar en breve
Que compilador de C usas ?
Re: Cambiar puntero mouse
Posted: Mon Jan 15, 2018 12:47 pm
by Xevi
Borland BCC7
Re: Cambiar puntero mouse
Posted: Mon Jan 15, 2018 1:09 pm
by karinha
Code: Select all
#include "FiveWin.ch"
#include "Image.ch"
function Main()
local oWnd, oChild1, oImage, oImage2, oCursor, oBrush
DEFINE BRUSH oBrush COLOR nRGB(210,210,255) // ,nRGB(255,255,255)
DEFINE CURSOR oCursor HAND
DEFINE WINDOW oWnd FROM 1,0 TO 500,800 PIXEL ;
CURSOR oCursor BRUSH oBrush
@ 0, 0 IMAGE oImage SIZE 32, 32 FILENAME "C:\fwh1701\bitmaps\32x32\App.bmp" NOBORDER CURSOR oCursor OF oWnd
oImage:cTooltip := "Mensaje Tooltip"
// XIMAGE??
@ 0, 50 IMAGE oImage2 SIZE 32, 32 FILENAME "C:\fwh1701\bitmaps\32x32\App.bmp" NOBORDER OF oWnd
oImage2:oCursor := oCursor
oImage2:cTooltip := "Mensaje Tooltip2"
DEFINE WINDOW oChild1 OF oWnd
oChild1:Center( oWnd )
oChild1:Show()
ACTIVATE WINDOW oWnd CENTER
return nil
Saludos.