Boa noite, Rodrigo!
Usando o MsNewGetDados
Apesar de estar depreciada, ela irá lhe atender para essa customização.
Para funcionar, você deve definir um campo virtual do tipo @BMP como primeiro item do aHeader do GetDados, exemplo:
aAdd(_aHeader,{'Status','STATUS','@BMP', 2, 0, '.F.' , '', 'C', '', 'V', '', '', '', 'V'})
Ao instanciar a classe, informe o atributo blDblClick igual o exemplo abaixo, onde você irá editar a celula clicada (caso ela permitir a edição) através do método EditCell() e em seguida irá preencher o campo de marcação com a marcação correspondente. Nesse atributo, você pode criar uma função que valide de forma mais completa a marcação ou não, conforme a sua demanda.
oNewGet := MsNewGetDados():New(001, 001, 001, 001, GD_UPDATE, 'AllwaysTrue', 'AllwaysTrue', , {'ZMK_CODRAM'}, , 999, 'AllwaysTrue', , 'AllwaysTrue', oPanel, _aHeader, _aCols)
oNewGet:oBrowse:blDblClick := { || oNewGet:EditCell(), oNewGet:aCols[oNewGet:nAt,1] := IIf(oNewGet:aCols[oNewGet:nAt,1] == 'WFCHK','WFUNCHK','WFCHK') }
Por último, você também pode validar o preenchimento do combobox declarando uma User Function para o atributo cFieldOk da classe. Validando o campo editado e se a edição deve ou não ocorrer dependendo do registro e/ou ação.
Usando o MVC
Você também pode fazer esse procedimento usando o MVC do Protheus, criando as validações de marcação e edição pelos atributos bLinePre ou bLinePost do método AddGrid da classe MpFormModel. Nesse caso, o campo de marcação deve ser lógico ao invés de @BMP.
Usando o MVC, não consegui desenvolver de maneira satisfatória uma tela que só possua o grid, pois a classe MpFormModel depende da criação de um formulário onde esse grid será relacionado.
Boa tarde Rodrigo, o grid do MVC já tem esse comportamento que você deseja, quando o campo é um combo, ele exibe o combo durante a alteração e quando trata-se de um campo lógico (boolean), ele exibe um checkbox. Você tem uma tabela que será utilizada para esse grid?
— Daniel Mendes 21 de Aug de 2019Daniel Eu irei utilizar uma tabela temporária. No MVC eu consigo usar uma grid, sem necessidade de um formulário (pai x filho)?
— Rodrigo de Oliveira 22 de Aug de 2019