On my editing grid I have a cell called SIZE.
What I would like to do is in my savecell function, set this cell to a different color when the SIZE > 1.
Should be easy but can not figure out.
Thanx in advance .... Franco

Moderator: Rathinagiri
Code: Select all
FUNCTION Modifica_DB( )
LOCAL nCpos := LEN( aCpos1 ), aReadOnly := ARRAY( nCpos ), afColor := ARRAY( nCpos ), aColCtrls := { }, aColWhen := ARRAY( nCpos )
LOCAL fColor := { || if ( This.CellRowIndex/2 == int(This.CellRowIndex/2) , IF( DELETED() , CLRERROR , WHITE ) , IF( DELETED() , CLRERROR , NJAPAST ) ) }
PRIVATE lDel := .F., cWinName, cCtrolName
AFILL( aReadOnly, .F. )
AFILL( aColWhen, { | | .T. } )
AFILL( afColor, fColor )
FOR i1 = 1 TO nCpos
IF aTips[ i1 ] = "N"
IF aDec[ i1 ] = 0
AADD( aColCtrls, { 'TEXTBOX', 'NUMERIC', '9,999,999' } )
ELSE
AADD( aColCtrls, { 'TEXTBOX', 'NUMERIC', '9,999,999.99' } )
ENDIF
ELSEIF aTips[ i1 ] = "D"
AADD( aColCtrls, { 'DATEPICKER', 'DROPDOWN' } )
ELSEIF aTips[ i1 ] = "L"
AADD( aColCtrls, { 'CHECKBOX' , ' Si' , ' No' } )
ELSEIF aTips[ i1 ] = "C"
AADD( aColCtrls, { 'TEXTBOX', 'CHARACTER' } )
ELSEIF aTips[ i1 ] = "M"
AADD( aColCtrls, { 'TEXTBOX', 'CHARACTER' } )
ENDIF
NEXT
DEFINE WINDOW Form_GridCtes AT 0 , 0 WIDTH 1024 HEIGHT 600 TITLE '| ABC CLIENTES |' MODAL NOSIZE ON RELEASE ( SET( _SET_DELETED, .T. ), Form_Main.Restore ) ;
BACKCOLOR { 0, 33, 38 } ON INTERACTIVECLOSE ( IF( MSGYesNo( "Desea Guardar los"+CRLF+"útimos cambios ?", "A V I S O" ), Press2Keys( VK_ALT, VK_S ), nil ) )
@ 005 , 005 LABEL LB_CodNom OF Form_GridCtes VALUE '' WIDTH 1024 HEIGHT 18 FONT "Verdana" SIZE 12 FONTCOLOR WHITE BACKCOLOR { 0, 33, 38 }
@ 005 , 870 LABEL LB_Activo OF Form_GridCtes VALUE '' WIDTH 140 HEIGHT 18 FONT "Verdana" SIZE 10 FONTCOLOR YELLOWGREEN BACKCOLOR { 0, 33, 38 } RIGHTALIGN
aColWhen[ 1 ] := { | | .F. } // El primer campo es READONLY
@ 030 , 005 GRID Grid_2 OF Form_GridCtes WIDTH 1008 HEIGHT 505 FONT "Consolas" SIZE 11 FONTCOLOR BLACK ;
ROWSOURCE "Ctes" VALUE { 1, 1 } WIDTHS aLong HEADERS aCpos1 COLUMNFIELDS aCpos2 COLUMNCONTROLS aColCtrls ;
ON HEADCLICK { { || Ctes->( DBSetOrder( 1 ), DoMethod( 'Form_GridCtes', "Grid_2", "Refresh", .T. ) ) }, ;
{ || Ctes->( DBSetOrder( 2 ), DoMethod( 'Form_GridCtes', "Grid_2", "Refresh", .T. ) ) } } ;
EDIT ALLOWAPPEND ALLOWDELETE EDITOPTION GRID_EDIT_DEFAULT ; // INSERTCHAR
COLUMNWHEN aColWhen DYNAMICBACKCOLOR afColor ON CHANGE OnChangeGrid( ) ON KEY OnDeleteGrid( ) ON SAVE OnSaveGrid( )
Code: Select all
DEFINE GRID Grid_1
ROW 10
COL 10
WIDTH 560
HEIGHT 700
HEADERS {'Col 1',"Col 2", "Col 3 ", "Col 4", "Col 5" }
WIDTHS { 120, 80, 80, 130, 130 }
JUSTIFY {GRID_JTFY_LEFT, GRID_JTFY_LEFT, GRID_JTFY_LEFT, GRID_JTFY_LEFT, GRID_JTFY_LEFT }
DYNAMICBACKCOLOR { { || BC_Grid_1()}, {||BC_Grid_1()}, {||BC_Grid_1()}, {||BC_Grid_1()}, {||BC_Grid_1()}}
ITEMS aFLD
END GRID
STATIC FUNCTION BC_Grid_1()
/*****************************/
LOCAL a
LOCAL aColors := {{ HONEYDEW, HONEYDEW, HONEYDEW, HONEYDEW, HONEYDEW } } // EQUAL TO NUMBER OF COLUMNS == 5
LOCAL aItem := Form_1.Grid_1.Item ( This.CellRowIndex )
DO CASE
CASE 'someval' $ UPPER(aItem [2]) .OR. 'anothervalue' $ UPPER(aItem [1])
FOR a = 1 TO 4
aColors [1] [a] := PaleTurquoise
NEXT a
CASE 'zzzzz' $ UPPER(aItem [2])
FOR a = 1 TO 3
aColors [1] [a] := RosyBrown
NEXT a
CASE 'y1' $ UPPER(aItem [2]) .OR. 'y2' $ UPPER(aItem [2]) .OR. 'y3' $ UPPER(aItem [2])
aColors [1] [2] := Gold
CASE 'z1' $ UPPER(aItem [1]) .and. 'z2' $ UPPER(aItem [2])
aColors [1] [2] := Gold
aColors [1] [4] := Gold
OTHERWISE
RETURN Greenish
ENDCASE
Code: Select all
#include "hmg.ch"
Function Main
PRIVATE BCOLOR
FILS()
set century on
bColor := { || if ( This.CellRowIndex/2 == int(This.CellRowIndex/2) ,(BLUE), (PURPLE))}
*IF .NOT. ISWINDOWACTIVE(FORM_2)
DEFINE WINDOW Form_2 ;
AT 110, 10 ;
WIDTH 1250 ;
HEIGHT 700 ;
TITLE 'Sales Report Screen' ;
MAIN ;
NOSIZE ;
ON RELEASE {||{Closer2fils()}}
DEFINE TEXTBOX TEXT_1
ROW 150
COL 280
WIDTH 200
HEIGHT 20
UPPERCASE .T.
FIELD TEMP5->DESC
END TEXTBOX
DEFINE GRID Grid_2
ROW 200
COL 30 //140
WIDTH 1190 //1100
HEIGHT 200 //370
*//BACKCOLOR { 180, 180, 200}
FONTCOLOR { 0, 0, 0 }
HEADERS {"Invoice", "Item" ,"Sellprice","Desc"}
COLUMNCONTROLS { {'TEXTBOX','CHARACTER',"!!!!!!!!"},{'TEXTBOX','CHARACTER',"!!!!!!!!!!!!!!!"},;
{'TEXTBOX','NUMERIC','9999999.99'},{'TEXTBOX','CHARACTER',"!!!!!!!!!!!!!!!!!!!!!!!!!!"}}
WIDTHS {80, 95, 100 ,150}
JUSTIFY {0,0,1,0}
COLUMNWHEN { { || .T. },{ || .T. }, { || .T. }, { || .T. }}
ROWSOURCE 'temp5'
COLUMNFIELDS { 'INV_NO' , 'ITEM_NO','UNIT_PRICE','DESC'}
VALUE {1,1}
ONCHANGE BC_Grid_1()
DYNAMICBACKCOLOR {BCOLOR,BCOLOR,BCOLOR,BCOLOR}
DYNAMICFORECOLOR { { || BLACK}, {|| BLACK}, {|| BLACK}, {|| BLACK}}
ALLOWEDIT .T.
CELLNAVIGATION .T.
TABSTOP .F.
*ON CHANGE CH()
END GRID
END WINDOW
Form_2.Activate
RETURN //NIL
*********************************************************
Function Fils
Local CF1 := {}
CF1 := {}
aADD(CF1,{'INV_no' , 'C' , 8,0})
AADD(CF1,{'ITEM_NO', 'C' , 15,0})
Aadd(CF1,{'DESC', 'C', 26,0})
Aadd(CF1,{'UNIT_PRICE', 'N' , 10,2})
if ! hb_dbcreatetemp("temp5", cf1)
msgbox("Cannot create temporary table: Item")
RELEASE WINDOW ALL
return nil
endif
if select("temp5") = 0
use temp5 new
endif
select temp5
index on inv_no to temp5
temp := 1
do while temp < 51
append blank
replace inv_no with 'IN'+alltrim(str(temp+1000))
replace item_no with 'IT'+alltrim(str(temp+100))
replace unit_price with temp*100
replace desc with 'DESC '+STR(TEMP)
temp:=temp+1
loop
enddo
return
Function CloseR2fils
close temp5
release temp5
return
STATIC FUNCTION BC_Grid_1()
*****************************
**** ??????????????? i AM LOST HERE
IF UNIT_PRICE = 0
*????????MAKE ONLY IT`S IT`S BACKCOLOR GREEN ?????????
ENDIF
RETURN
Code: Select all
#include "hmg.ch"
Function Main
bColor4 := { || if ( unit_price < 1000, RED, WHITE ) }
fColor4 := { || if ( unit_price < 1000, YELLOW, BLACK ) }
use temp5
DEFINE WINDOW Win_1 ;
WIDTH 1000 ;
HEIGHT 700 ;
TITLE 'Sales Report Screen' ;
MAIN
@ 90, 10 BROWSE Browse_1 ;
OF Win_1 ;
WIDTH 800 ;
HEIGHT 400 ;
FONT "Arial" ;
SIZE 10 ;
HEADERS { "INV_NO","ITEM_NO","DESC","UNIT_PRICE" } ;
WIDTHS { 90,160,270,110 } ;
WORKAREA TEMP5 ;
FIELDS { "INV_NO","ITEM_NO","DESC","UNIT_PRICE" } ;
DYNAMICBACKCOLOR { ,,, bColor4 } ;
DYNAMICFORECOLOR { ,,, fColor4 } ;
JUSTIFY { , , , BROWSE_JTFY_RIGHT, }
END WINDOW
Win_1.Center
Win_1.Activate
RETURN