Re: Spinner in grid
Posted: Sat Jan 09, 2021 5:19 pm
Bueno, tomando lo anterior, aquĆ otro ejemplo... Gracias a todos.
( Como que hay un Bug en el "This.CellRowIndex" ya que en ocasiones resultaba un valor erroneo )
*-------------------------------------------------------------
Well, taking the above, here's another example ... Thank you all.
(As there is a Bug in the "This.CellRowIndex" since sometimes it was a wrong value)
( Como que hay un Bug en el "This.CellRowIndex" ya que en ocasiones resultaba un valor erroneo )
*-------------------------------------------------------------
Well, taking the above, here's another example ... Thank you all.
(As there is a Bug in the "This.CellRowIndex" since sometimes it was a wrong value)
Code: Select all
/*
* HMG Grid Demo
* (c) 2005 Roberto Lopez
*/
#include "hmg.ch"
#define MY_RED { 255, 091, 091 }
#define aCol1 {173,216,230}
#define aCol2 {224,255,255}
#define bckColor { || SET_BGColor() }
#define bckFore { || SET_FGColor() }
#define LVIS_FOCUSED 0x1
#define LVIS_SELECTED 0x2
Function Main
aItems := {}
AADD (aItems, {"Carrot" , 1 })
AADD (aItems, {"Cauliflower", 1 })
AADD (aItems, {"Corn" , 1 })
AADD (aItems, {"Tomato" , 1 })
AADD (aItems, {"Zucchini" , 1 })
DEFINE WINDOW Form_1 AT 0,0 WIDTH 640 HEIGHT 400 TITLE 'Spinner Grid Test' MAIN ON INIT ( Actualiza( 1,1 ) , Form_1.nTotalArt.setfocus )
DEFINE GRID Grid_1
ROW 5
COL 5
WIDTH 615
HEIGHT 200
VALUE 1
HEADERS {'vegetables' , 'quantity ' }
WIDTHS {160 , 140 }
FONTNAME "Segoe UI"
FONTSIZE 12
JUSTIFY { GRID_JTFY_RIGHT, GRID_JTFY_RIGHT }
ITEMS aItems
COLUMNCONTROLS { {'TEXTBOX','CHARACTER' }, {'SPINNER' , 1 , 24 } }
columnwhen { {|| .f. }, {|| .t. } }
COLUMNVALID { Nil, {|| Actualiza( This.CellRowIndex, This.CellValue ) } }
DYNAMICBACKCOLOR { {|| IF( This.CellRowIndex/2 == int( This.CellRowIndex/2 ), aCol1 , aCol2 ) }, bckColor }
ON GOTFOCUS Form_1.nTotalArt.setfocus
SHOWHEADERS .T.
ALLOWEDIT .T.
ITEMCOUNT 5
END GRID
DEFINE TEXTBOX nTotalArt
ROW 220
COL 240
WIDTH 60
HEIGHT 40
FONTNAME "Arial"
FONTSIZE 14
TOOLTIP "Total "
FONTBOLD .T.
TABSTOP .T.
VISIBLE .T.
RIGHTALIGN .T.
FONTCOLOR {255,0,0}
NUMERIC .T.
VALUE 0
END TEXTBOX
DEFINE LABEL Label_1
ROW 230
COL 150
WIDTH 100
HEIGHT 95
VALUE "Total :"
FONTNAME "Arial"
FONTSIZE 18
TOOLTIP "Total"
VISIBLE .T.
END LABEL
END WINDOW
CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1
RETURN
*----------------------------------------------------------------------------*
*----------------------------------------------------------------------------*
Procedure Actualiza( nCellRowIndex, nCellValue )
SetProperty( "Form_1", "Grid_1", 'CellEx', nCellRowIndex, 2, nCellValue )
DoMethod( "Form_1", "Grid_1", "Refresh", .T. )
Form_1.nTotalArt.Value := 0
For nFor := 1 to Form_1.Grid_1.ItemCount
Form_1.nTotalArt.Value := Form_1.nTotalArt.Value + Form_1.Grid_1.item(nFor)[2]
Next
// de-lite Item
LISTVIEW_SETITEMSTATE( GetControlHandle("Grid_1", "Form_1" ), Form_1.Grid_1.Value, 0, hb_BitOr( LVIS_SELECTED, LVIS_FOCUSED ) )
RETURN Nil
*----------------------------------------------------------------------------*
*----------------------------------------------------------------------------*
FUNCTION SET_BGColor( )
cVal1 := GetProperty( "Form_1", "Grid_1", 'Cell', This.CellRowIndex, 1 )
cVal2 := GetProperty( "Form_1", "Grid_1", 'Cell', This.CellRowIndex, 2 )
DO CASE
CASE cVal1 = "Tomato"
aCol := GREEN
CASE ( cVal2 >= 2 .AND. cVal2 <= 5 )
aCol := MY_RED
CASE ( cVal2 = 1 )
aCol := WHITE
OTHERWISE
aCol := CYAN
ENDCASE
RETURN aCol
FUNCTION SET_FGColor( )
RETURN WHITE