De acordo com o exemplo do WD, ao pressionar o botão "validade", a função HModify é executada havendo ou não alteração nos campos do form. Segundo as boas práticas, deve-se consultar o usuário se deseja ou não regravar o registro, para isso devemos saber se algum campo sofreu alteração.
Descobri um modo de fazer isto:
1) Envolver todos os campos do form num "Grupo" (fig 1)
2) No botão "validade" testar se a propriedade GR_Registro..Modified = True
ScreenToFile()
IF CADCONCEITOS..NewRecord = True THEN
IF HAdd(CADCONCEITOS) = False THEN
NextTitle(csErro)
Error("Erro na inclusão deste registro.")
END
ELSE
IF GR_Registro..Modified = True THEN
NextTitle(csAtencao)
SWITCH Dialog("Você confirma a alteração deste registro?")
CASE 1 // Gravar
IF HModify(CADCONCEITOS) = False THEN
NextTitle(csErro)
Error("Erro na alteração deste registro.")
END
CASE 2 // Não gravar
CASE 3 // Retornar
ReturnToCapture(FieldFirst())
RETURN
END
END
END