Page 2 of 2

Re: Spinner in grid

Posted: Sat Jan 09, 2021 5:19 pm
by andyglezl
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)




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

IMAGE FROM CLIPBOAR 9-00.42.06.JPG
IMAGE FROM CLIPBOAR 9-00.42.06.JPG (136.84 KiB) Viewed 724 times