parte da GRID q está dentro do form_main:
@ 140,405 GRID Grid_1 ;
PARENT FORM_MAIN ;
WIDTH 400 ;
HEIGHT 200 ;
HEADERS {"Cod","Descricao","Cobrar S/N","Valor"};
WIDTHS {40,200,80,65};
VIRTUAL ;
ITEMCOUNT Len(aData) ;
ON QUERYDATA QueryTest(aData) ;
CELLNAVIGATION ;
DYNAMICFORECOLOR { fColor , fColor , fColor , fColor } ;
DYNAMICBACKCOLOR { bColor , bColor , bColor , bColor } ;
JUSTIFY { BROWSE_JTFY_LEFT, BROWSE_JTFY_LEFT, BROWSE_JTFY_CENTER, BROWSE_JTFY_CENTER } ;
COLUMNWHEN { { || .F. } , { || .F. } , { || .T. } , { || iif( Form_Main.Grid_1.Cell(GetProperty("Form_Main","Grid_1",'Value')[1], GetProperty("Form_Main","Grid_1",'Value')[2]-1)='S' , .t. , .f. ) } } ;
EDIT ;
INPLACE { ;
{'TEXTBOX','NUMERIC','9'} , ;
{'TEXTBOX','CHARACTER','AAAAAAAAAAAAAAAAAAAA'} , ;
{'TEXTBOX','CHARACTER','A'} , ;
{'TEXTBOX','NUMERIC','9.99'} }
obs.: 1- no INPLACE, não sei como definir que terceiro textbox se aceite apenas S ou N
2- no columnwhen as 2 primeiras colunas estão bloqueadas para edição. a terceira aceita alteração. já a quarta só aceita se a terceira estiver com S
3 - os dados são pegos de uma tabela comum dbfntx através do on querydata
4 - como se faz para salvar de volta no dbf? tenho feito mas tem algo estranho que salva no arquivo todas os conteúdos com o mesmo... fica tudo igual.
5 - criei um botão abaixo para clicar e salvar de volta na tabela mas penso que não é assim que o Marcelo tentou passar:
DEFINE BUTTON BUTTON_4
PARENT Form_Main
ROW 365
COL 530
CAPTION 'Salvar'
TOOLTIP 'Clique aqui para Salvar'
ACTION SalvaGrid (aData)
END BUTTON
ao clicar no botão a função SalvaGrid é acionada:
static function SalvaGrid (aRows)
local mARQ := select() , I , N
for N = 1 to len (aRows)
MsgInfo (aRows[N,1])
MsgInfo (aRows[N,2])
MsgInfo (aRows[N,3])
MsgInfo (aRows[N,4])
next N
sele dTabela3
go top
do while .t.
if rlock()
for I = 1 to len (aRows)
replace COD with aRows[I,1] ,;
DESCRICAO with aRows[I,2] ,;
SIMNAO with aRows[I,3] ,;
VALOR with aRows[I,4]
next I
unlock
commit
exit
else
MsgInfo ('Nao deu certo! Tente novamente!')
endif
enddo
select (mARQ)
return
obs.:
1- o for/next N esta temporariamente presente para observacao
2- talvez a falta de um skip resolva nao sei.
os outros codigos q n postei sao dos exemplos da pasta samples