1º) Ao carregar o Form:
Código: Selecionar todos
LOAD WINDOW Form_1
ON KEY ESCAPE OF Form_1 ACTION Form_1.Release // Esta linha é para funcionar a tecla ESC para sair do Form
_HMG_SYSDATA[ 40 ][ GetControlIndex( "Grid_1", "Form_1" ) ][ 46 ] := {|| minhaProcedure1_OnCheckBoxClicked() } // Define o CodeBlock, "procedure" que será invocada ao clicar ou desclicar o CheckBox da grade (antes da primeira coluna da grid)
_HMG_SYSDATA[ 40 ][ GetControlIndex( "Grid_2", "Form_1" ) ][ 46 ] := {|| minhaProcedure2_OnCheckBoxClicked() } // Voce pode ter outra Grid com CheckBoxEnabled, define a procedure para a grid2
Form_1.CENTER
Form_1.ACTIVATE
Código: Selecionar todos
Form_1.Grid_1.CheckBoxEnabled := .T. // Seta para usar o CheckBox na Grid
Form_1.Grid_2.CheckBoxEnabled := .T. // Idem
Código: Selecionar todos
Procedure minhaProcedure1_OnCheckBoxClicked()
Local var....
Form_1.Grid_1.Value := This.CellRowClicked // Seta/Seleciona a linha da grade clicada
// Form_1.Grid_1.Value := { This.CellRowClicked, 3} // Seta a linha e a coluna desejada na grade da linha clicada caso CELLNAVIGATION for .T.
/* Verifica se o usuário clicou ou desclicou o CheckBox da linha na grade */
if Form_1.Grid_1.CheckBoxItem(This.CellRowClicked)
...codigo
else
...codigo
endif
Return
Código: Selecionar todos
Procedure form_1_CarregaGrid_1()
Local i, ....
....codigo para carregar registros de uma query ou outro data base
....
Form_1.Grid_1.DeleteAllItems()
for i:=1 to query:LastRec()
Form_1.Grid_1.AddItem( {....registro n da query:FieldGet('coluna_1'), query:FieldGet('coluna_n') } )
Form_1.Grid_1.CheckBoxItem(i) := ( query:FieldGet('coluna_x') == <condição> )
query:Skip()
next i
Form_1.Grid_1.Refresh
...
Return
