Campo de upload não mantém o arquivo ao editar o registro

Olá, @Patrick_Dos_Santos!

Infelizmente o campo Upload não consegue carregar um valor em arquivo de volta ao campo.

Mas, podemos atingir esse comportamento de outra forma. Imagino que deseje apresentar o nome do arquivo já enviado anteriormente, sendo o caso, pode ser feito o seguinte:

  • O que iremos usar?
    • Campo do tipo Upload.
    • Campo do tipo Label.
    • Campo do tipo Button.
    • Container do tipo Horizontal StackPanel.
    • Evento Load do Formulário.
    • Evento Click em botão.
    • Modo de abertura dos objetos.

Campos

  • Upload:
    Neste contexto iremos usá-lo como já se encontra configurado. Receber o arquivo informado pelo usuário na criação do registro.

  • Label:
    Este campo será usado quando o modo abertura for Edição e for encontrado um arquivo para carregar ao usuário. Nele iremos apresentar o nome do arquivo, para que o usuário possa identificar.

  • Button:
    Este campo será usado quando o modo de abertura for Edição e for encontrado um arquivo para carregar ao usuário. Nele iremos incluir uma operação de “remover o arquivo” - Escondendo os campos atuais (Label&Button) para apresentar novamente o campo Upload.

Modo de abertura

Quando vamos abrir uma janela no LATROMI, podemos configurar o modo de abertura, que ajuda a identificar como a tela deve tratar as informações. O modo de abertura é a sigla CRUD:

  • C: Criar
  • R: Ler
  • U: Atualizar (ingles: Update)
  • D: Deletar

*Veja mais em Modos de abertura.

Na construção deste exemplo usaremos esta configuração para construir os blocos de condição e executar o bloco de lógica correspondente.

Ajustando campos no Layout

Para nos auxiliar na ocultação dos campos iremos usar um truque com o layout do LATROMI. Adicionaremos os três campos em um container do tipo Horizontal Stack Panel. Dessa forma, a tela ajustará os campos automaticamente quando usarmos as ações Mostrar campos e Ocultar campos.

Configurando evento Load

A primeira camada que iremos adicionar é o direcionamento de comportamento, no evento Load, do formulário. Nessa parte iremos identificar o modo de abertura e decidir como apresentar e carregar os dados.

Nosso bloco de procedimento ficará algo semelhante a abaixo:

/*código acima*/
IF FORM.OpeningMode = 'U' Then
    Carrega e popula os valores capturados do banco de dados nos campos
    VAR.response = DbLoad()
    Hide(INPUT.uplExample)
    Show(INPUT.lblExample, INPUT.btnExample)
Else
    Hide(INPUT.lblExample, INPUT.btnExample)
    Show(INPUT.uplExample)
/*código abaixo*/

Configurando evento Click

Para não excluir o arquivo de imediato iremos adicionar ao evento click somente uma operação de limpeza e ocultação de campos, evitando uma exclusão acidental.

Veja um exemplo de implementação para o bloco de procedimento abaixo:

// Passa os valores dos campos uplExample, lblExample e btnExample para NULL
Populate(INPUT.uplExample, INPUT.lblExample, INPUT.btnExample)
Hide(INPUT.lblExample, INPUT.btnExample)
Show(INPUT.uplExample)

Conclusão

Com a implementação dos passos acima é possível efetuar o comportamento desejado, como ponto de preenchimento fica a lógica de gravação após o usuário concluir a edição. Ela pode efetuar tanto a Exclusão do registro antigo e Inclusão do novo, como simplesmente atualizar o registro identificado com o novo valor.

1 curtida