Re: How to catch mouse event in a grid ?
Posted: Mon Mar 09, 2015 2:07 pm
Muy bueno !!!! ,,
gracias por compartir
gracias por compartir
Exclusive forum for HMG, a Free / Open Source xBase WIN32/64 Bits / GUI Development System
http://hmgforum.com/
I did not do it before, but I made this code especially for you :
Code: Select all
#include "hmg.ch"
Function Main
Local aRows [20] [3]
DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH 800 ;
HEIGHT 550 ;
TITLE 'Hello World!' ;
MAIN
aRows [1] := {'Simpson','Homer','555-5555'}
aRows [2] := {'Mulder','Fox','324-6432'}
aRows [3] := {'Smart','Max','432-5892'}
aRows [4] := {'Grillo','Pepe','894-2332'}
aRows [5] := {'Kirk','James','346-9873'}
aRows [6] := {'Barriga','Carlos','394-9654'}
aRows [7] := {'Flanders','Ned','435-3211'}
aRows [8] := {'Smith','John','123-1234'}
aRows [9] := {'Pedemonti','Flavio','000-0000'}
aRows [10] := {'Gomez','Juan','583-4832'}
aRows [11] := {'Fernandez','Raul','321-4332'}
aRows [12] := {'Borges','Javier','326-9430'}
aRows [13] := {'Alvarez','Alberto','543-7898'}
aRows [14] := {'Gonzalez','Ambo','437-8473'}
aRows [15] := {'Batistuta','Gol','485-2843'}
aRows [16] := {'Vinazzi','Amigo','394-5983'}
aRows [17] := {'Pedemonti','Flavio','534-7984'}
aRows [18] := {'Samarbide','Armando','854-7873'}
aRows [19] := {'Pradon','Alejandra','???-????'}
aRows [20] := {'Reyes','Monica','432-5836'}
@ 10,10 GRID Grid_1 ;
WIDTH 760 ;
HEIGHT 240 ;
HEADERS {'Last Name','First Name','Phone'} ;
WIDTHS {140,140,140};
ITEMS aRows ;
VALUE {1,1} ;
TOOLTIP 'Editable Grid Control' ;
EDIT ;
JUSTIFY { GRID_JTFY_CENTER,GRID_JTFY_RIGHT, GRID_JTFY_RIGHT } ;
CELLNAVIGATION
@ 250,10 GRID Grid_2 ;
WIDTH 760 ;
HEIGHT 240 ;
HEADERS {'Last Name','First Name','Phone'} ;
WIDTHS {140,140,140};
ITEMS aRows ;
VALUE 1 EDIT ;
TOOLTIP 'Editable Grid Control' ;
ON HEADCLICK { {||MsgInfo('Click 1')} , {||MsgInfo('Click 2')} , {||MsgInfo('Click 3')} } ;
JUSTIFY { GRID_JTFY_LEFT,GRID_JTFY_CENTER, GRID_JTFY_CENTER }
CREATE EVENT PROCNAME Grid_ToolTip()
END WINDOW
CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1
Return
FUNCTION Grid_ToolTip()
LOCAL nHWnd := EventHWND(), aCellMouseOver, cCtrlName:="", cFormName:=""
LOCAL nIndex := GetControlIndexByHandle ( nHWnd )
LOCAL cCtrlType := IF( nIndex > 0, GetControlTypeByIndex (nIndex) , "")
STATIC aTT := {0,0}
IF cCtrlType == 'GRID'
GetControlNameByHandle (nHWnd, @cCtrlName, @cFormName)
aCellMouseOver := ListView_HitTest ( nHWnd , GetCursorRow() - GetWindowRow ( nHWnd ) , GetCursorCol() - GetWindowCol ( nHWnd ) )
IF aTT [1] # aCellMouseOver [1] .OR. aTT [2] # aCellMouseOver [2]
aTT [1] := aCellMouseOver [1]
aTT [2] := aCellMouseOver [2]
IF aCellMouseOver [1] = 0 .AND. aCellMouseOver [2] = 0
SetProperty( cFormName, cCtrlName, "ToolTip", "")
ELSE
SetProperty( cFormName, cCtrlName, "ToolTip", "ToolTip for Row=" + Alltrim(HB_ValToStr( aCellMouseOver [1] )) + " Col=" + Alltrim(HB_ValToStr( aCellMouseOver [2] )) + " Value=" + GetProperty (cFormName, cCtrlName, "CellEx", aCellMouseOver [1], aCellMouseOver [2] ) )
ENDIF
ENDIF
ENDIF
RETURN Nil
Code: Select all
aFontWeather:= ARRAY FONT "Weather" SIZE 28
SET TOOLTIPCUSTOMDRAW CONTROL GRID_Utargi OF FORM_Utarg FORECOLOR {0,0,128} ARRAYFONT aFontWeather BALLOON .T. TITLE "WEATHER"
Code: Select all
#include "hmg.ch"
Function Main
Local aRows [20] [3]
SET TOOLTIPCUSTOMDRAW ON
DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH 800 ;
HEIGHT 550 ;
TITLE 'Hello World!' ;
MAIN
aRows [1] := {'Simpson','Homer','555-5555'}
aRows [2] := {'Mulder','Fox','324-6432'}
aRows [3] := {'Smart','Max','432-5892'}
aRows [4] := {'Grillo','Pepe','894-2332'}
aRows [5] := {'Kirk','James','346-9873'}
aRows [6] := {'Barriga','Carlos','394-9654'}
aRows [7] := {'Flanders','Ned','435-3211'}
aRows [8] := {'Smith','John','123-1234'}
aRows [9] := {'Pedemonti','Flavio','000-0000'}
aRows [10] := {'Gomez','Juan','583-4832'}
aRows [11] := {'Fernandez','Raul','321-4332'}
aRows [12] := {'Borges','Javier','326-9430'}
aRows [13] := {'Alvarez','Alberto','543-7898'}
aRows [14] := {'Gonzalez','Ambo','437-8473'}
aRows [15] := {'Batistuta','Gol','485-2843'}
aRows [16] := {'Vinazzi','Amigo','394-5983'}
aRows [17] := {'Pedemonti','Flavio','534-7984'}
aRows [18] := {'Samarbide','Armando','854-7873'}
aRows [19] := {'Pradon','Alejandra','???-????'}
aRows [20] := {'Reyes','Monica','432-5836'}
@ 10,10 GRID Grid_1 ;
WIDTH 760 ;
HEIGHT 240 ;
HEADERS {'Last Name','First Name','Phone'} ;
WIDTHS {140,140,140};
ITEMS aRows ;
VALUE {1,1} ;
TOOLTIP 'Editable Grid Control' ;
EDIT ;
JUSTIFY { GRID_JTFY_CENTER,GRID_JTFY_RIGHT, GRID_JTFY_RIGHT } ;
CELLNAVIGATION
@ 250,10 GRID Grid_2 ;
WIDTH 760 ;
HEIGHT 240 ;
HEADERS {'Last Name','First Name','Phone'} ;
WIDTHS {140,140,140};
ITEMS aRows ;
VALUE 1 EDIT ;
TOOLTIP 'Editable Grid Control' ;
ON HEADCLICK { {||MsgInfo('Click 1')} , {||MsgInfo('Click 2')} , {||MsgInfo('Click 3')} } ;
JUSTIFY { GRID_JTFY_LEFT,GRID_JTFY_CENTER, GRID_JTFY_CENTER }
CREATE EVENT PROCNAME Grid_ToolTip()
END WINDOW
CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1
Return
FUNCTION Grid_ToolTip()
LOCAL nHWnd := EventHWND(), aCellMouseOver, cCtrlName:="", cFormName:=""
LOCAL nIndex := GetControlIndexByHandle ( nHWnd )
LOCAL cCtrlType := IF( nIndex > 0, GetControlTypeByIndex (nIndex) , "")
LOCAL aFontList := { "Arial", "Juice ITC", "Webdings" }
LOCAL aFontWeather, aForeColor
STATIC aTT := {0,0}
IF cCtrlType == 'GRID'
GetControlNameByHandle (nHWnd, @cCtrlName, @cFormName)
aCellMouseOver := ListView_HitTest ( nHWnd , GetCursorRow() - GetWindowRow ( nHWnd ) , GetCursorCol() - GetWindowCol ( nHWnd ) )
IF aTT [1] # aCellMouseOver [1] .OR. aTT [2] # aCellMouseOver [2]
aTT [1] := aCellMouseOver [1]
aTT [2] := aCellMouseOver [2]
IF aCellMouseOver [1] = 0 .AND. aCellMouseOver [2] = 0
SetProperty( cFormName, cCtrlName, "ToolTip", "")
ELSE
aFontWeather:= ARRAY FONT aFontList [ aCellMouseOver [2] ] SIZE aCellMouseOver [1] * 5
//aForeColor := { 0, aCellMouseOver [1] * 8, aCellMouseOver [2] * 64 }
aForeColor := { 128, 0, 0 }
SET TOOLTIPCUSTOMDRAW CONTROL &cCtrlName OF &cFormName FORECOLOR aForeColor ARRAYFONT aFontWeather BALLOON .T. TITLE "WEATHER" ICON aCellMouseOver [2]
SetProperty( cFormName, cCtrlName, "ToolTip", "ToolTip for Row=" + Alltrim(HB_ValToStr( aCellMouseOver [1] )) + " Col=" + Alltrim(HB_ValToStr( aCellMouseOver [2] )) + " Value=" + GetProperty (cFormName, cCtrlName, "CellEx", aCellMouseOver [1], aCellMouseOver [2] ) )
ENDIF
ENDIF
ENDIF
RETURN Nil
Code: Select all
if aKomorkaPodMysza [2] == GetProperty (cFormName, cCtrlName, "ColumnCount")-1 // uwagi
SET TOOLTIPCUSTOMDRAW CONTROL G_Utargi OF OknoUtarg FORECOLOR {0,128,0} ARRAYFONT aFontUwagi BALLOON .T. TITLE "" //ICON TOOLTIPICON_WARNING_LARGE
SetProperty( cFormName, cCtrlName, "ToolTip",;
GetProperty (cFormName, cCtrlName, "CellEx", aKomorkaPodMysza [1],;
GetProperty (cFormName, cCtrlName, "ColumnCount")-1))
elseif aKomorkaPodMysza [2] == GetProperty (cFormName, cCtrlName, "ColumnCount") // pogoda
SET TOOLTIPCUSTOMDRAW CONTROL G_Utargi OF OknoUtarg FORECOLOR {255,0,0} ARRAYFONT aFontPogoda BALLOON .T. TITLE ""//POGODA" // ICON TOOLTIPICON_WARNING_LARGE
SetProperty( cFormName, cCtrlName, "ToolTip",;
GetProperty (cFormName, cCtrlName, "CellEx", aKomorkaPodMysza [1],;
GetProperty (cFormName, cCtrlName, "ColumnCount")))
else
SetProperty( cFormName, cCtrlName, "ToolTip","")
endif
Code: Select all
if aKomorkaPodMysza [2] == GetProperty (cFormName, cCtrlName, "ColumnCount")-1 // uwagi
SET TOOLTIPCUSTOMDRAW CONTROL G_Utargi OF OknoUtarg FORECOLOR {0,128,0} ARRAYFONT aFontUwagi BALLOON .T. //TITLE "" //ICON TOOLTIPICON_WARNING_LARGE
SetProperty( cFormName, cCtrlName, "ToolTip",;
GetProperty (cFormName, cCtrlName, "CellEx", aKomorkaPodMysza [1],;
GetProperty (cFormName, cCtrlName, "ColumnCount")-1))
elseif aKomorkaPodMysza [2] == GetProperty (cFormName, cCtrlName, "ColumnCount") // pogoda
SET TOOLTIPCUSTOMDRAW CONTROL G_Utargi OF OknoUtarg FORECOLOR {255,0,0} ARRAYFONT aFontPogoda BALLOON .T. //TITLE ""//POGODA" // ICON TOOLTIPICON_WARNING_LARGE
SetProperty( cFormName, cCtrlName, "ToolTip",;
GetProperty (cFormName, cCtrlName, "CellEx", aKomorkaPodMysza [1],;
GetProperty (cFormName, cCtrlName, "ColumnCount")))
else
SetProperty( cFormName, cCtrlName, "ToolTip","")
endif
Code: Select all
#include "hmg.ch"
Function Main
Local aRows [20] [3]
SET TOOLTIPCUSTOMDRAW ON
DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH 800 ;
HEIGHT 550 ;
TITLE 'Hello World!' ;
MAIN
aRows [1] := {'Simpson','Homer','555-5555'}
aRows [2] := {'Mulder','Fox','324-6432'}
aRows [3] := {'Smart','Max','432-5892'}
aRows [4] := {'Grillo','Pepe','894-2332'}
aRows [5] := {'Kirk','James','346-9873'}
aRows [6] := {'Barriga','Carlos','394-9654'}
aRows [7] := {'Flanders','Ned','435-3211'}
aRows [8] := {'Smith','John','123-1234'}
aRows [9] := {'Pedemonti','Flavio','000-0000'}
aRows [10] := {'Gomez','Juan','583-4832'}
aRows [11] := {'Fernandez','Raul','321-4332'}
aRows [12] := {'Borges','Javier','326-9430'}
aRows [13] := {'Alvarez','Alberto','543-7898'}
aRows [14] := {'Gonzalez','Ambo','437-8473'}
aRows [15] := {'Batistuta','Gol','485-2843'}
aRows [16] := {'Vinazzi','Amigo','394-5983'}
aRows [17] := {'Pedemonti','Flavio','534-7984'}
aRows [18] := {'Samarbide','Armando','854-7873'}
aRows [19] := {'Pradon','Alejandra','???-????'}
aRows [20] := {'Reyes','Monica','432-5836'}
@ 10,10 GRID Grid_1 ;
WIDTH 760 ;
HEIGHT 240 ;
HEADERS {'Last Name','First Name','Phone'} ;
WIDTHS {140,140,140};
ITEMS aRows ;
VALUE {1,1} ;
TOOLTIP 'Editable Grid Control' ;
EDIT ;
JUSTIFY { GRID_JTFY_CENTER,GRID_JTFY_RIGHT, GRID_JTFY_RIGHT } ;
CELLNAVIGATION
@ 250,10 GRID Grid_2 ;
WIDTH 760 ;
HEIGHT 240 ;
HEADERS {'Last Name','First Name','Phone'} ;
WIDTHS {140,140,140};
ITEMS aRows ;
VALUE 1 EDIT ;
TOOLTIP 'Editable Grid Control' ;
ON HEADCLICK { {||MsgInfo('Click 1')} , {||MsgInfo('Click 2')} , {||MsgInfo('Click 3')} } ;
JUSTIFY { GRID_JTFY_LEFT,GRID_JTFY_CENTER, GRID_JTFY_CENTER }
CREATE EVENT PROCNAME Grid_ToolTip()
END WINDOW
CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1
Return
FUNCTION Grid_ToolTip()
LOCAL nHWnd := EventHWND(), aCellMouseOver, cCtrlName:="", cFormName:=""
LOCAL nIndex := GetControlIndexByHandle ( nHWnd )
LOCAL cCtrlType := IF( nIndex > 0, GetControlTypeByIndex (nIndex) , "")
LOCAL aFontList := { "Arial", "Juice ITC", "Webdings" }
LOCAL aFontWeather, aForeColor
STATIC aTT := {0,0}
IF cCtrlType == 'GRID'
GetControlNameByHandle (nHWnd, @cCtrlName, @cFormName)
aCellMouseOver := ListView_HitTest ( nHWnd , GetCursorRow() - GetWindowRow ( nHWnd ) , GetCursorCol() - GetWindowCol ( nHWnd ) )
IF aTT [1] # aCellMouseOver [1] .OR. aTT [2] # aCellMouseOver [2]
aTT [1] := aCellMouseOver [1]
aTT [2] := aCellMouseOver [2]
IF aCellMouseOver [1] = 0 .AND. aCellMouseOver [2] = 0
SetProperty( cFormName, cCtrlName, "ToolTip", "")
ELSE
aFontWeather:= ARRAY FONT aFontList [ aCellMouseOver [2] ] SIZE aCellMouseOver [1] * 5
aForeColor := { if (aCellMouseOver [2] = 1, 244, 0) , if (aCellMouseOver [2] = 2, 244, 0), if (aCellMouseOver [2] = 3, 244, 0) }
SET TOOLTIPCUSTOMDRAW CONTROL &cCtrlName OF &cFormName FORECOLOR aForeColor ARRAYFONT aFontWeather BALLOON .T.
SetProperty( cFormName, cCtrlName, "ToolTip", "ToolTip for Row=" + Alltrim(HB_ValToStr( aCellMouseOver [1] )) + " Col=" + Alltrim(HB_ValToStr( aCellMouseOver [2] )) + " Value=" + GetProperty (cFormName, cCtrlName, "CellEx", aCellMouseOver [1], aCellMouseOver [2] ) )
ENDIF
ENDIF
ENDIF
RETURN Nil