Só mais uma observação:
Cell(CellRowIndex,3) corresponde a coluna 3 da Grid, onde estaria a data de vencimento, então altere a coluna conforme as colunas do seu Grid.
Abraços,
Moderador: Moderadores
#include "minigui.ch"
Function Main
Local aRows [20] [3]
Local fColor := { |val| iif( CTOD(val[3])<DATE() .AND. EMPT(CTOD(val[5])) , { 255,0,0 } , { 0,0,0 } ) }
SET DATE TO BRITISH
SET CENT ON
aRows [1] := {'001','Homer','10/11/2015','150.00',' / / '}
aRows [2] := {'002','Fox','10/10/2015','125.00',' / / '}
aRows [3] := {'003','Max','15/09/2015','170.00','10/09/2015'}
aRows [4] := {'004','Pepe','06/10/2015','134.00',' / / '}
aRows [5] := {'005','James','12/11/2015','145.00',' / / '}
aRows [6] := {'006','Carlos','10/10/2015','315.00','10/10/2015'}
aRows [7] := {'007','Ned','19/09/2015','235.00','10/09/2015'}
aRows [8] := {'008','John','30/07/2015','950.00',' / / '}
aRows [9] := {'009','Flavio','20/08/2015','760.00','20/08/2015'}
aRows [10] := {'010','Juan','15/11/2015','215.00',' / / '}
aRows [11] := {'011','Raul','18/12/2015','150.00',' / / '}
aRows [12] := {'012','Javier','12/02/2015','150.00','12/02/2015'}
aRows [13] := {'013','Alberto','17/07/2015','180.00',' / / '}
aRows [14] := {'014','Ambo','26/11/2015','560.00',' / / '}
aRows [15] := {'015','Gol','21/10/2015','500.00',' / / '}
aRows [16] := {'016','Amigo','11/05/2015','125.00','11/05/2015'}
aRows [17] := {'017','Flavio','19/03/2015','500.00','19/03/2015'}
aRows [18] := {'018','Armando','05/08/2015','180.00',' / / '}
aRows [19] := {'019','Alejandra','20/10/2015','250.00',' / / '}
aRows [20] := {'020','Monica','17/12/2015','598.00',' / / '}
DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH 640 ;
HEIGHT 400 ;
TITLE 'Demo Cor Grid' ;
MAIN
@ 10,10 GRID Grid_1 ;
WIDTH 620 ;
HEIGHT 330 ;
HEADERS {'Cod','Nome','Vencto','Valor','Pagto'} ;
WIDTHS {60,230,100,100,100} ;
JUSTIFY {2,0,2,1,2};
ITEMS aRows ;
DYNAMICFORECOLOR {fColor, fColor, fColor, fColor, fColor}
END WINDOW
CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1
Return Nil
DEFINE GRID Grid_1
ROW 140
COL 410
PARENT Form_1
WIDTH 350
HEIGHT 200
HEADERS {"Descricao","Cobrar S/N","Valor"}
WIDTHS {150,80,100}
ROWSOURCE "DB10035"
COLUMNFIELDS { "DB10035->DESCRICAO", "DB10035->SIMNAO", "DB10035->VALOR" }
// ONCHANGE MOVE_GRID_ARQUIVO () // eliminei pois QUERO QUE ALTERE OS DADOS DO BANCO DBF AUTOMATICAMENTE E TESTANDO SE COM A ROWSOURCE O DBF é atualizado...
NOLINES .F.
JUSTIFY { BROWSE_JTFY_LEFT, BROWSE_JTFY_CENTER, BROWSE_JTFY_RIGHT }
END GRID
Então, pra facilitar a ajuda dos colegas quanto ao meu problema, vou postar parte do código.
- parte que cria o botão pra SALVAR e o GRID:
DEFINE BUTTON BUTTON_4
PARENT Form_Main
ROW 365
COL 530
CAPTION 'Salvar'
TOOLTIP 'Clique aqui para Salvar alterações feitas nos valores das cobranças acima'
ACTION Form_Main.Grid_1.Save
END BUTTON
DEFINE GRID Grid_1
PARENT Form_Main
ROW 140
COL 405
WIDTH 360
HEIGHT 200
HEADERS {"Cod","Descricao","Cobrar S/N","Valor"}
COLUMNCONTROLS { {'TEXTBOX','NUMERIC','9'},{'TEXTBOX','CHARACTER','AAAAAAAAAAAAAAAAAAAA'},{'TEXTBOX','CHARACTER','A'},{'TEXTBOX','NUMERIC','9.99'} }
WIDTHS {40,200,80,55}
ITEMS aRows // se optar por usar ITEMS não pode usar ROWSOURCE e COLUMNFIELDS
// ROWSOURCE "DCI10035" // abre os campos da tabela DBF dentro do GRID automaticamente // campos da tabela DBF - se usar este tem q usar em conjunto o COLUMNFIELDS e não pode usar ITEMS aROWS
// COLUMNFIELDS { "DCI10035->DESCRICAO", "DCI10035->SIMNAO", "DCI10035->VALOR" } // campos da tabela DBF - se usar este tem q usar em conjunto o ROWSORCE e não pode usar ITEMS aROWS
CELLNAVIGATION .T.
DYNAMICFORECOLOR { fColor , fColor, fColor, fColor, fColor } // muda as cores de frente dinamicamente uma linha após a a outra
DYNAMICBACKCOLOR { bColor , bColor , bColor , bColor , bColor , bColor } // muda as cores de fundo dinamicamente uma linha após a aoutra 7/2/19w
ALLOWEDIT .T. // se estiver em .T. não funciona o ONDBLCLICK e funciona o COLUMNWHEN
// COLUMNVALID 1
// NOLINES .T. // desaparece as linhas de grade em .T.
JUSTIFY { BROWSE_JTFY_LEFT, BROWSE_JTFY_LEFT, BROWSE_JTFY_CENTER, BROWSE_JTFY_CENTER }
// COLUMNWHEN { { || This.CellValue <> nil } , Nil , Nil , Nil }
COLUMNWHEN { { || .F. } , { || .F. } , { || .T. } , { || .T. } } // trava/destrava colunas pra serem editadas. Mas, o ALLOWEDIT tem que estar em .T. pra funcionar
// LOCKCOLUMNS 2
// VALUE { 1 , 4 }
// ONDBLCLICK MOVE_GRID_ARQUIVO () // duplo click do mouse aciona esta função
// ONCHANGE MOVE_GRID_ARQUIVO () // apenas um click do mouse aciona esta função
// EDIT
// ALLOWAPPEND .T. // pra usar esse tem q usar o ROWSOURCE senão não funciona
// ALLOWDELETE .T. // pra usar esse tem q usar o ROWSOURCE senão não funciona
ONSAVE OnSaveTest()
END GRID
*******************************************************************************
Procedure OnSaveTest()
*******************************************************************************
Local i
Local s
Local cMark
Local j
* Show Edited Cells ***************************************************
msginfo(This.EditBuffer)
msginfo(valtype(This.EditBuffer))
if This.EditBuffer <> nil
For i := 1 To len( This.EditBuffer )
s := ''
nLogicalRow := This.EditBuffer [ i ] [ 1 ]
nLogicalCol := This.EditBuffer [ i ] [ 2 ]
xValue := This.EditBuffer [ i ] [ 3 ]
nPhysicalRow := This.EditBuffer [ i ] [ 4 ]
s += 'RecNo():' + Str( nPhysicalRow ) + chr(13) + chr(10)
s += 'Logical Row: ' + Str( nLogicalRow ) + chr(13) + chr(10)
s += 'Logical Col: ' + Str( nLogicalCol ) + chr(13) + chr(10)
s += 'Value: ' + xToC( xValue ) + chr(13) + chr(10)
MsgInfo ( s , 'Edited Cell #' + str(i) )
Next i
endif
* Show Deleted / Recalled Records *****************************************
msginfo(This.MarkBuffer)
msginfo(valtype(This.MarkBuffer))
if This.MarkBuffer <> nil
For i := 1 To len( This.MarkBuffer )
s := ''
nLogicalRow := This.MarkBuffer [ i ] [ 1 ]
nPhysicalRow := This.MarkBuffer [ i ] [ 2 ]
cMark := This.MarkBuffer [ i ] [ 3 ]
s += 'RecNo():' + Str( nPhysicalRow ) + chr(13) + chr(10)
s += 'Logical Row: ' + Str( nLogicalRow ) + chr(13) + chr(10)
s += 'Mark: ' + if ( cMark == 'D' , 'Delete' , 'Recall' ) + chr(13) + chr(10)
MsgInfo ( s , 'Marked Row #' + str(i) )
Next i
endif
* Show Appended Records ************************************************
msginfo(This.AppendBuffer)
msginfo(valtype(This.AppendBuffer))
if This.AppendBuffer <> nil
For i := 1 To len( This.AppendBuffer )
s := ''
s+= xToC ( This.AppendBuffer [ i ] [ 1 ] ) + ' , '
s+= xToC ( This.AppendBuffer [ i ] [ 2 ] ) + ' , '
s+= xToC ( This.AppendBuffer [ i ] [ 3 ] ) + ' , '
s+= xToC ( This.AppendBuffer [ i ] [ 4 ] ) + ' , '
s+= xToC ( This.AppendBuffer [ i ] [ 5 ] ) + ' , '
s+= xToC ( This.AppendBuffer [ i ] [ 6 ] )
MsgInfo ( s , 'Appended Record #' + str(i) )
Next i
endif
Return // OnSaveTest()
Usuários vendo este fórum: Nenhum usuário registrado online e 3 visitantes