Olá João Batista, com certeza deve ser algum bug na função GRID. Agora, se no lugar da função GRID você usar o DEFINE GRID, o parâmetro ALLOWEDIT funciona certinho. Mas, neste caso, como será permitido a edição dos campos, é necessário definir o controle dos tipos de dados de cada coluna através do COLUMNCONTROLS.
Veja como fica o código:
Código: Selecionar todos
#include "hmg.ch"
Function Main
OpenTables()
aCtrl_1 := {'TEXTBOX','NUMERIC','9999999999'}
aCtrl_2 := {'TEXTBOX','CHARACTER'}
aCtrl_3 := {'TEXTBOX','CHARACTER'}
aCtrl_4 := {'DATEPICKER','UPDOWN'}
aCtrl_5 := { 'CHECKBOX' , 'Yes' , 'No' }
aCtrl_6 := { 'EDITBOX' }
DEFINE WINDOW Win_1 ;
AT 0,0 ;
WIDTH 640 HEIGHT 480 ;
TITLE 'Tutor 20: GRID Test' ;
MAIN NOMAXIMIZE
DEFINE MAIN MENU
POPUP 'File'
ITEM 'Set Grid RecNo' ACTION Win_1.Grid_1.Recno := Val ( InputBox ('Set Grid RecNo','') )
ITEM 'Get Grid RecNo' ACTION MsgInfo ( Str ( Win_1.Grid_1.RecNo ) )
SEPARATOR
ITEM 'Exit' ACTION Win_1.Release
END POPUP
POPUP 'Help'
ITEM 'About' ACTION MsgInfo ("Tutor 20: GRID Test")
END POPUP
END MENU
DEFINE GRID Grid_1
ROW 10
COL 10
WIDTH 610
HEIGHT 390
HEADERS { 'Code' , 'First Name' , 'Last Name', 'Birth Date', 'Married' , 'Biography' }
WIDTHS { 150 , 150 , 150 , 150 , 150 , 150 }
VALUE { 1 , 1 }
ROWSOURCE "Test"
COLUMNCONTROLS { aCtrl_1 , aCtrl_2 , aCtrl_3 , aCtrl_4 , aCtrl_5 , aCtrl_6 }
COLUMNFIELDS { 'Code' , 'First' , 'Last' , 'Birth' , 'Married' , 'Bio' }
ALLOWDELETE .T.
ALLOWEDIT .T.
END GRID
END WINDOW
Win_1.Grid_1.RecNo := Test->(RecNo())
CENTER WINDOW Win_1
ACTIVATE WINDOW Win_1
Return Nil
Procedure OpenTables()
Use Test
Return Nil
Mas se pode também usar na função GRID o parâmetro EDIT que vai ter o mesmo efeito do ALLOWEDIT no DEFINE GRID.
Veja como fica o código neste caso, usando a função GRID:
Código: Selecionar todos
#include "hmg.ch"
Function Main
OpenTables()
aCtrl_1 := {'TEXTBOX','NUMERIC','9999999999'}
aCtrl_2 := {'TEXTBOX','CHARACTER'}
aCtrl_3 := {'TEXTBOX','CHARACTER'}
aCtrl_4 := {'DATEPICKER','UPDOWN'}
aCtrl_5 := { 'CHECKBOX' , 'Yes' , 'No' }
aCtrl_6 := { 'EDITBOX' }
DEFINE WINDOW Win_1 ;
AT 0,0 ;
WIDTH 640 HEIGHT 480 ;
TITLE 'Tutor 20: GRID Test' ;
MAIN NOMAXIMIZE
DEFINE MAIN MENU
POPUP 'File'
ITEM 'Set Grid RecNo' ACTION Win_1.Grid_1.Recno := Val ( InputBox ('Set Grid RecNo','') )
ITEM 'Get Grid RecNo' ACTION MsgInfo ( Str ( Win_1.Grid_1.RecNo ) )
SEPARATOR
ITEM 'Exit' ACTION Win_1.Release
END POPUP
POPUP 'Help'
ITEM 'About' ACTION MsgInfo ("Tutor 20: GRID Test")
END POPUP
END MENU
@ 10,10 GRID Grid_1 ;
WIDTH 610 ;
HEIGHT 390 ;
HEADERS { 'Code' , 'First Name' , 'Last Name', 'Birth Date', 'Married' , 'Biography' } ;
WIDTHS { 150 , 150 , 150 , 150 , 150 , 150 } ;
VALUE { 1 , 1 } ;
ROWSOURCE "Test" ;
COLUMNCONTROLS { aCtrl_1 , aCtrl_2 , aCtrl_3 , aCtrl_4 , aCtrl_5 , aCtrl_6 } ;
COLUMNFIELDS { 'Code' , 'First' , 'Last' , 'Birth' , 'Married' , 'Bio' } ;
ALLOWDELETE ;
EDIT
END WINDOW
Win_1.Grid_1.RecNo := Test->(RecNo())
CENTER WINDOW Win_1
ACTIVATE WINDOW Win_1
Return Nil
Procedure OpenTables()
Use Test
Return Nil
Abraços,