Quais são as propriedades editáveis numa Struct em MVC

No artigo de hoje, vamos mostrar a lista de atributos editáveis via SetProperty numa Struct em MVC.

Algumas vezes temos dúvidas, em quais propriedades conseguimos editar via método SetProperty, em uma FWFormStruct. Existem algumas constantes na FWMVCDef.ch que podemos utilizar para fazer essa manipulação.

Abaixo então, segue o nome dos atributos editáveis, tanto na ModelDef (banco de dados) como na ViewDef (visualização da tela).

ModelDef:

  • MODEL_FIELD_TITULO – Titulo
  • MODEL_FIELD_TOOLTIP – Descrição completa do campo
  • MODEL_FIELD_IDFIELD – Nome (ID)
  • MODEL_FIELD_TIPO – Tipo
  • MODEL_FIELD_TAMANHO – Tamanho
  • MODEL_FIELD_DECIMAL – Decimais
  • MODEL_FIELD_VALID – Validação
  • MODEL_FIELD_WHEN – Modo de edição
  • MODEL_FIELD_VALUES – Lista de valores permitido do campo (combo)
  • MODEL_FIELD_OBRIGAT – Indica se o campo tem preenchimento obrigatório
  • MODEL_FIELD_INIT – Inicializador padrão
  • MODEL_FIELD_KEY – Indica se o campo é chave
  • MODEL_FIELD_NOUPD – Indica se o campo pode receber valor em uma operação de update
  • MODEL_FIELD_VIRTUAL – Indica se o campo é virtual

ViewDef:

  • MVC_VIEW_IDFIELD – Nome do Campo
  • MVC_VIEW_ORDEM – Ordem
  • MVC_VIEW_TITULO – Titulo do campo
  • MVC_VIEW_DESCR – Descrição do campo
  • MVC_VIEW_HELP – Array com Help
  • MVC_VIEW_PICT – Picture
  • MVC_VIEW_PVAR – Bloco de Picture Var
  • MVC_VIEW_LOOKUP – Consulta F3
  • MVC_VIEW_CANCHANGE – Indica se o campo é editável
  • MVC_VIEW_FOLDER_NUMBER – Pasta do campo
  • MVC_VIEW_GROUP_NUMBER – Agrupamento do campo
  • MVC_VIEW_COMBOBOX – Lista de valores permitido do campo (Combo)
  • MVC_VIEW_MAXTAMCMB – Tamanho Máximo da maior opção do combo
  • MVC_VIEW_INIBROW – Inicializador de Browse
  • MVC_VIEW_VIRTUAL – Indica se o campo é virtual
  • MVC_VIEW_PICTVAR – Picture Variável

Abaixo um trecho de exemplo:

Static Function ModelDef()
    Local oStruct := FWFormStruct(1, cNomeTabela)
    Local oModel

    /*
        Para ver a lista de propriedades acesse https://tdn.totvs.com/display/framework/AdvPl+utilizando+MVC
        No PDF do manual, vá na seção 10.3 Alteração de propriedades do campo (SetProperty)
    */
    oStruct:SetProperty('ZD1_DTFORM', MODEL_FIELD_WHEN, FwBuildFeature(STRUCT_FEATURE_WHEN,   'INCLUI')) //Modo de Edição
    oStruct:SetProperty('ZD1_DTFORM', MODEL_FIELD_INIT, FwBuildFeature(STRUCT_FEATURE_INIPAD, 'Date()')) //Inicializador Padrão
    
    /*
        Continuação da declaração do MPFormModel...
    */
    oModel := MPFormModel():New(...
    ...
Return oModel

Static Function ViewDef()
    Local oModel  := FWLoadModel("NomeDoSeuModel")
    Local oStruct := FWFormStruct(2, cNomeTabela)
    Local oView

    /*
        Para ver a lista de propriedades acesse https://tdn.totvs.com/display/framework/AdvPl+utilizando+MVC
        No PDF do manual, vá na seção 10.3 Alteração de propriedades do campo (SetProperty)
    */
    oStruct:SetProperty('ZD1_DTFORM', MVC_VIEW_TITULO, 'Data de Inclusão') //Título do campo

    /*
        Continuação da declaração do FWFormView...
    */
    oView := FWFormView():New(...
    ...
Return oView

O material para esse artigo, foi extraído do manual AdvPL utilizando MVC v2 – POR.pdf, disponível nesse link https://tdn.totvs.com/display/framework/AdvPl+utilizando+MVC , recomendamos que também estudem o conteúdo do manual (que é mais amplo). A parte das propriedades estão nas páginas 57 e 58.

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

2 Responses

  1. Mestre sabe se ja saiu alteracao no MVC para esta propriedade que nao existe : oStruZA0:SetProperty( ‘ZA0_QTDMUS’ , MODEL_FIELD_USADO) tem todos menus usado ou uma alternativa ?

    • Bom dia Geraldo, tudo joia?

      Do USADO não sei dizer se já criaram alguma coisa para tratar via fonte. Como essa parametrização, define se um campo vai ser exibido ou não em tela, o que geralmente eu vejo os analistas fazerem é na ViewDef dar um RemoveField nos campos que eles não querem que sejam visualizados.

      Abraços.

Deixe uma resposta

Terminal de Informação