Header Web
Logo_PHC_Software
Manuais
Opções De Ecrã

Esta opção permite ao utilizador acrescentar opções quer na barra de ferramentas, quer noutros locais dos ecrãs, tal como se poderá verificar.

 

Informação
Apenas está disponível no menu aplicacional da Framework, se o parâmetro Usa Opções de ecrã estiver ativo em pelo menos num dos módulos da Intranet, Extranet e/ou Portal.

 


Dos campos que o utilizador dispõe para introduzir/alterar uma Opção de Ecrã, existem separadores dedicados à configuração do mesmo em:

  • Se colocado em mainform;
  • Se colocado em monitor;
  • Se colocado em item de monitor.


Dispõe também do separador Acessos, onde, para além de definir acessos seleciona o(s)package(s) onde se poderá usufruir da Opção de Ecrã.
Quando o utilizador consulta um registo de Opções de Ecrã, tem à sua disposição as opções base dos registos.

No final da explicação das opções para a criação de uma Opção de Ecrã, serão dados como exemplos, a criação de uma Opção de Ecrã na consulta de artigos e outra na funcionalidade de "Próximas ações".


Ecrã em modo de introdução/alteração

  • Para introduzir, alterar e/ou configurar uma Opção de Ecrã o utilizador dispõe dos seguintes campos:

    Nome do ecrã onde será colocado
    Neste local é indicado o nome do ecrã onde a Opção de Ecrã será colocada (sem a parte .ASPX).
    Por exemplo, o ecrã é stview.
    Na eventualidade da Opção de Ecrã se destinar a um monitor ou a um item de monitor, deve ser colocado mon.

    Resumo da opção
    Pequeno resumo da opção criada.

    Inativa
    Esta configuração permite que a Opção de Ecrã deixe de aparecer.

    Texto da opção
    Qual o texto que vai aparecer no botão para o utilizador.
    Exemplo: Stock por Armazém 2.
    Se usado em monitor pode colocar variáveis globais com o texto #G1#, por exemplo para a variável com o número 1.

    Classe de CSS
    Deve ser indicado qual a classe de CSS a utilizar. Pode ser utilizada classes de botões "bootstrap", como por exemplo "btn btn-danger btn-xs". Pode ainda usar outros formatos de botões das classes "btn-primary", "btn-warning" ou "btn-default". Se pretender alinhar a direita pode ainda adicionar a classe "pull-right". Se o campo estiver vazio, irá utilizar a classe por defeito.

    Tooltip da opção
    Neste local define-se o texto que aparece quando o utilizador coloca o rato em cima da opção criada.

    Ordem
    Este campo serve para ordenar as diversas opções de ecrã que possam existir por exemplo, num ecrã comum às mesmas.
    Exemplo: 2.

    Programa com a reação a executar quando a opção é selecionada
    É possível construir um programa em VB.Net. Este campo tem intellisense, ou seja, quando é colocada uma letra na caixa de texto é aberta uma caixa com todas as sugestões de código disponíveis para completar aquela palavra, à medida que se vai escrevendo as opções mostradas começadas pelas letras introduzidas vão reduzindo e aproximando do que se pretende. Também se pode pressionar as teclas ctrl + espaço ou ctrl + seta baixo para aparecer essa mesma caixa mas com todas as opções de código disponíveis, sendo que ao escrever texto as opções na caixa vão sendo filtradas.
    Nota:
    • Se usar em Mainform pode usar a variável STAMP para o stamp do registo em que está e o dataset MAINFORMDATASET para os dados do registo.
      Se em Monitor ou Item de monitor o texto #STAMP# tem o stamp da coluna 1 e o texto #STAMP3# tem o stamp da coluna 3, o dataset MAINFORMDATASET tem os dados do Monitor em análise. Quando utilizado em monitor pode colocar variáveis globais com o texto #G1#, por exemplo para a variável com o número 1.

    Caso o utilizador pretenda, ao clicar no botão  pode aceder ao <%= TopicLink([Editor de Código],[Editor de Código]) %>. Após o preenchimento deste campo, o utilizador poderá .

    Posição para monitores e itens
    Caso a opção seja definida para um monitor ou item de monitor, ela pode ser colocada em uma das seguintes posições:
    • - Topo e Fundo;
      - Topo do Ecrã;
      - Fundo do Ecrã.


    Posição se num mainform
    Caso a opção seja definida para um ecrã, ela pode ser colocada em uma das seguintes posições:
    • - Zona de ecrã nas opções;
      - Zona de registo isolado;
      - Zona de registo nas opções;
      - Zona de próximas ações.


    Número sequencial interno
    O número sequencial interno é atribuído pela aplicação e este campo é apenas de leitura.




    Invisível na edição, consulta e/ou no fim de ficheiro
    Configurando estas opções define-se se a opção de ecrã criada está invisível na edição (introdução e alteração), na consulta e no fim de ficheiro, esta última opção é quando ainda não estão dados selecionados (no ecrã).

    Número interno da série do documento 
    Permite indicar os números internos de séries de documentos de faturação, dossiers internos, recibos c/c e recibos de adiantamento onde, de forma exclusiva, apareceram os objetos de ecrã. Ou seja, com o preenchimento deste campo podemos controlar a visibilidade tendo em conta as séries preenchidas. Se o campo estiver vazio, o objeto de ecrã aparece em todas as séries mas caso coloque uma ou mais séries, apenas irá aparecer nessas séries. Em ecrãs onde não possua a série mencionada o valor é ignorado e por isso não aparece.
    Notas
    • O campo Número interno da série do documento apenas está disponível se o objeto for do tipo Campo.
    • Pode colocar mais do que uma série no campo Número interno da série do documento. As séries devem estar separadas por vírgula (“,”).
    • O campo Número interno da série do documento não tem qualquer controlo sobre o valor do campo, portanto, não irá controlar se o utilizador coloca texto ou caracteres especiais no campo




    Pode introduzir o nome de um monitor ou seleciona-lo através do botão  ou introduzir um ou mais carateres diretamente no campo, assim irá surgir uma lista com todos os resultados da procura iniciados pelo caractere introduzido e conforme é introduzido mais carateres esta procura vai sendo refinada.

    Disponível no monitor quando
    • - Sempre
      - Apenas quando algo selecionado na coluna 1




    Neste local é necessário indicar qual o item de monitor em que a opção de ecrã irá ser colocada. Pode efetuar uma procura através do botão  ou introduzir um ou mais carateres diretamente no campo, assim irá surgir uma lista com todos os resultados da procura iniciados pelo carater introduzido e conforme é introduzido mais carateres esta procura vai sendo refinada.

    Disponível no monitor quando
    A opção do ecrã pode estar disponível em um item de monitor nas seguintes situações:
    • - Apenas quando algo selecionado na coluna 1
      - Apenas quando algo selecionado na coluna 2




    Se pretender limitar o acesso dos utilizadores à Opção de Ecrã criada, pode ativar a opção Tem que possuir um determinado acesso à tabela:, indicar qual a tabela e indicar o <%= TopicLink([acesso],[Acessos]) %> que o utilizador deverá ter.


    A Opção de Ecrã pode estar disponível nos diversos packages que o cliente tiver instalado, pode neste local definir onde aparecerá o menu criado.
    Exemplo:


    Pode também definir se terá acesso à Opção de Ecrã:
    • - Apenas a quem tem acesso ao módulo Gestão web
      - Apenas a quem tem acesso ao módulo Colaborador web
      - Apenas a quem tem acesso ao módulo Contabilidade web
      - Apenas a quem tem acesso ao módulo Suporte web
      - Apenas a quem tem acesso ao módulo Crm web
      - Apenas a quem tem acesso ao módulo Equipa web




Ecrã em modo de consulta

  • Em modo de consulta o utilizador tem a possibilidade de usufruir das opções de registo, bem como alterar o registo e/ou apagar o mesmo.




Exemplos práticos

Exemplo de uma opção de ecrã presente na zona de próxima ações:


  • Ecrã onde este objeto será colocado: ftform
    Resumo da opção: Notificar
    Texto da opção: Notificar o cliente
    Programa com a reação a executar quando a opção é selecionada
     

    dim txtemail as webcontrollib.nossocampotextbox
    ´ Constrói uma string que vai ser o corpo do email
    txtemail =mpage.master.findcontrol("conteudo").findcontrol("campos").findcontrol("no")
    dim email as string = cdata.getumvalorstring("email", "cl", "cl.no=´" & txtemail.value & "´")
    dim mform as mainform=mpage
    xcutil.GenEmail(xcuser.useremail, email, "", "", "Assunto", xcutil.formatnotification(txtemail))



Posição para monitores e itens: Topo do ecrã
Package: Intranet e Extranet
 


Na v02402 foram implementadas melhorias às funcionalidades da Browlist, com o objetivo de aumentar o leque de opções na Browlist.

Novas funcionalidades:

  • fieldWidth - permite ao utilizador decidir se um campo ocupa ou não uma linha inteira na Browlist.
  • additionalClasses - permite ao utilizador adicionar classes de CSS aos campos da Browlist.
  • addLargeMargin - por defeito dá uma margem às variáveis booleanas (checkboxes).
  • Método SetIsVisible - permite definir a visibilidade do campo com uma condição que retorna um valor booleano ou colocando diretamente True ou False. Por defeito a visibilidade está a True.

 

Exemplo de uma opção de ecrã com várias variáveis que pode estar presente no ecrã de Clientes (CLFORM):


  • Ecrã onde este objeto será colocado: clform
    Resumo da opção: Browlist Grelha C/ Variáveis
    Texto da opção: Browlist Grelha C/ Variáveis
    Programa com a reação a executar quando a opção é selecionada
     

    Dim clList As New BrowList With {
    .ID = "listaclem",
    .Title = "Procurar por clientes ou contactos",
    .Type = BrowListTypeEnum.GridWithVariables 'Se tem variáveis
    }

    With clList.Grid
    .FieldId = "stamp"
    .MultiSelectRows = True
    .ShowColumnToSelect = True
    .AddGridColumn("nome", "Nome")
    .AddGridColumn("ncont", "Contribuinte")
    End With

    'Obter a definição das variáveis
    clList.ListContext.GetVariablesFunction = Function(args)
    Dim variables As New BrowListVariables

    'Valores para escolher na combo
    Dim values As New Dictionary(Of String, String) From {
    {"cl", "Clientes"},
    {"em", "Contactos"}
    }

    'Define uma variável do tipo combo e um valor por defeito. São também adicionadas as classes de CSS ´marginbottom40PX´ (que coloca 40px de margem inferior ao campo), ´bg-primary´ (coloca o fundo a azul) e ´padding5´ (coloca um padding de 5px):
    variables.AddComboVariable(BrowlistDataTypeEnum.Text, "tipo", "Tabela", values, "cl", additionalClasses:="marginbottom40PX bg-primary padding5")

    'Define uma variável do tipo texto. É adicionada a propriedade fieldWidth com o valor AllLine, que indica que este campo ocupa a linha inteira. É também adicionada uma classe de CSS que coloca 40px de margem inferior ao campo:
    variables.AddTextVariable("nome", "Nome", "", fieldWidth:=BrowlistFieldWidthEnum.AllLine, additionalClasses:="marginbottom40PX")

    'Define uma variável do tipo inteiro. É também adicionada uma classe de CSS que coloca 40px de margem inferior ao campo:
    variables.AddIntegerVariable("no", "Número", 0, additionalClasses:="marginbottom40PX")

    'Define uma variável do tipo data. É adicionada a propriedade fieldWidth com o valor AllLine, que indica que este campo ocupa a linha inteira. É também adicionada uma classe de CSS que coloca 40px de margem inferior ao campo:
    variables.AddDateVariable("data", "Data", fieldWidth:=BrowlistFieldWidthEnum.AllLine, additionalClasses:="marginbottom40PX")

    'Define uma variável do tipo boleana. É adicionada a propriedade fieldWidth com o valor AllLine, que indica que este campo ocupa a linha inteira. É também adicionada uma classe de CSS que coloca 40px de margem inferior ao campo. Por fim, é adicionado o ´addLargeMargin´ (exclusivo de variáveis Boolean) que dá uma margem superior de 35px e 5.64px de margem inferior:
    variables.AddBooleanVariable("boleano", "Boleano", False, fieldWidth:=BrowlistFieldWidthEnum.AllLine, additionalClasses:="marginbottom40PX", addLargeMargin:=False)

    'Define uma variável do tipo texto. Utiliza o método SetIsVisible para definir se o campo é visível. Por defeito, é sempre visível:
    variables.AddTextVariable("InfoTabela", "Sou informação com um valor que irá ser utilizado, mas não quero que o utilizador altere ou veja esse valor", "valor").SetIsVisible(False)

    'Define o objecto para envio das variáveis e retorna-o
    Return args.GetVariablesObj(variables)
    End Function

    clList.ListContext.GetModelFunctionAsync = Async Function(args)
    Dim vars = args.Variables
    Dim filters As New PhcTableFilter

    'Obtém o valor da variável
    Dim stringValue As String = vars.GetValueString("nome")
    If stringValue.IsNotNullOrEmpty Then
    filters.AddFilter("nome like @nome")
    filters.AddSqlStringParameter("nome", $"%{stringValue}%")
    End If

    Dim query As PhcCommandBuilder
    Dim title As String
    stringValue = vars.GetValueString("tipo")
    If stringValue = "cl" Then
    title = "Clientes"
    query = PhcCommandBuilder.CreateSelect("clstamp as stamp,nome,ncont").From("cl")
    Else
    title = "Contactos"
    query = PhcCommandBuilder.CreateSelect("emstamp as stamp,nome,ncont").From("em")
    End If

    'Obtém o objecto para envio dos valores e retorna-o
    With args.GetDataObj(Await query.Where(filters).GetSqlResultAsync)
    .SetValue("title", title)
    Return .ThisObject
    End With
    End Function

    clList.ListContext.SetSelectRowsFunction = Function(args)
    Dim result As New PhcDynamicObject
    Return New JsonMessage(Of PhcDynamicObject)(result)
    End Function

    clList.AddToForm(mpage.tonormalform)
    mpage.RegisterClientScriptForAjax("testeBrowlist", clList.GetShowBroListJavascriptFunction()