/**
  * Mostrar o formulário de inclusão e edição do registro
  *
  * @param int|null  $md  ID do módulo dessa funcionalidade
  * @param bool|null $mst Nome da página mestra a ser carregada
  * @param int|null  $pk  Valor da PK do registro a ser selecionado
  */
 protected function mostrarForm($pk = null, $md = null, $mst = null)
 {
     $inc = $this->formPadrao('func', 'modulos/funcionalidades/salvar', 'modulos/funcionalidades/salvar', null, $pk);
     # Visão
     $this->carregarHTML('comum/visoes/titulo_h2');
     $this->carregarHTML('form_funcs', $mst);
     $this->visao->setTitulo($inc ? sprintf(TXT_PAGINA_TITULO_CADASTRAR_NOVA, $this->nome) : sprintf(TXT_PAGINA_TITULO_EDITAR_ESSA, $this->nome));
     # Grupos de usuários
     $mgu = new AdminM\GrupoUsuario();
     $lgu = $mgu->carregarSelect('grupo_usuario_publicar = 1', false);
     # Parâmetros
     $this->visao->adParam('grupos', $lgu);
     $this->visao->adParam('modulo', $md);
     if ($inc) {
         # Módulos
         $mf = new DevM\Modulo($md);
         $this->modelo->setClasse($mf->nomeClasse());
         $this->visao->adParam('modulo-classe', $this->modelo->getClasse());
     }
     // Fim if
     $classe = $this->modelo->getClasse();
     /*
      * Obter a lista completa de todos os métodos existentes na classe especificada
      */
     if (class_exists($classe)) {
         $rfx = new \ReflectionClass($classe);
         $metodos = preg_grep('~^_{2}~', array_column(array_map(function ($m) use($classe) {
             if ($m->class === $classe) {
                 return (array) $m;
             }
             // Fim if
         }, (array) $rfx->getMethods(\ReflectionMethod::IS_PROTECTED)), 'name'), PREG_GREP_INVERT);
         sort($metodos);
         $this->visao->adParam('lista-metodos', $metodos);
     }
     // Fim if
 }