Skip to main content
Version: v19 R8 BETA

Lista suspensa ou drop down

Drop-down lists are form objects that allow the user to select from a list. You manage the items displayed in the drop-down list using an object, an array, a choice list, or a standard action.

Em macOS, listas drop down são também chamadas de "menu pop up" Ambos os nomes referem aos mesmos objetos. Ambos os nomes referem aos mesmos objetos. Como no exemplo abaixo, a aparência desses objetos podem diferenciar levemente de acordo com a plataforma:

You can create different types of drop-down lists with different features. To define a type, select the appropriate Expression Type and Data Type values in the Property list, or use their JSON equivalent.

TipoFuncionalidadesTipo de expressãoTipo de dadosJSON definition
ObjetoBuilt upon a collectionObjetoNumeric, Text, Date, ou TimedataSourceTypeHint: object + numberFormat: <format> or textFormat: <format> or dateFormat: <format> or timeFormat: <format>
ArrayBuilt upon an arrayArrayNumeric, Text, Date, ou TimedataSourceTypeHint: arrayNumber or arrayText or arrayDate or arrayTime
Choice list saved as valueBuilt upon a choice list (standard)ListaSelected item valuedataSourceTypeHint: text + saveAs: value
Choice list saved as referenceBuilt upon a choice list. Item position is savedListaSelected item referencedataSourceTypeHint: integer + saveAs: reference
Hierarchical choice listCan display hierarchical contentsListaList referencedataSourceTypeHint: integer
Ação padrãoAutomatically built by the actionanyany except List referenceany definition + action: <action> (+ focusable: false for actions applying to other areas)

Handling drop-down lists

Utilização de um objecto

This feature is only available in 4D projects.

An object encapsulating a collection can be used as the data source of a drop-down list. The object must contain the following properties:

PropriedadeTipoDescrição
valuesCollectionMandatory - Collection of scalar values. All values must be of the same type. Supported types:
  • strings
  • números
  • datas
  • horas
  • If empty or not defined, the drop-down list is empty
    indexnumberIndex of the currently selected item (value between 0 and collection.length-1). If you set -1, currentValue is displayed as a placeholder string
    currentValuesame as CollectionCurrently selected item (used as placeholder value if set by code)

    If the object contains other properties, they are ignored.

    To initialize the object associated to the drop-down list, you can:

    • Enter a list of default values in the object properties by selecting \&#060;Static List&#062; in the Data Source theme of the Property List. The default values are loaded into an object automatically.

    • Execute code that creates the object and its properties. For example, if "myList" is the variable associated to the drop-down list, you can write in the On Load form event:

    // Form.myDrop is the datasource of the form object Form.myDrop:=New object Form.myDrop.values:=New collection("apples"; "nuts"; "pears"; "oranges"; "carrots")
    Form.myDrop.index:=-1 //currentValue is a placeholder Form.myDrop.currentValue:="Select a fruit"

    The drop-down list is displayed with the placeholder string:

    After the user selects a value:

    Form.myDrop.values // ["apples","nuts","pears","oranges","carrots"]
    Form.myDrop.currentValue //"oranges" Form.myDrop.index //3

    Usar um array

    Um array é uma lista de valores na memória que são referenciados pelo nome do array. A drop-down list can display an array as a list of values when you click on it.

    To initialize the array associated to the drop-down list, you can:

    • Enter a list of default values in the object properties by selecting \&#060;Static List&#062; in the Data Source theme of the Property List. Os valores padrão são carregados em um array automático. Pode fazer uma referência ao array usando o nome da variável associado com o objeto.

    • Antes que o objeto seja exibido, execute um código que atribua valores aos elementos do array. Por exemplo:

      ARRAY TEXT(aCities;6) 
    aCities{1}:="Philadelphia"
    aCities{2}:="Pittsburg"
    aCities{3}:="Grand Blanc"
    aCities{4}:="Bad Axe"
    aCities{5}:="Frostbite Falls"
    aCities{6}:="Green Bay"

    In this case, the name of the variable associated with the object in the form must be aCities. Esse código pode ser colocado no método formulário e executado quando o evento de formulário On Load acontecer.

    • Antes que o objeto seja exibido, carregue os valores para uma lista em um array usando o comando LIST TO ARRAY. Por exemplo:
       LIST TO ARRAY("Cities";aCities)

    In this case also, the name of the variable associated with the object in the form must be aCities. Este código pode ser executado ao invés das sentenças de atribuição mostradas anteriormente.

    Se precisar salvar as escolhas do usuário em um campo, precisa usar uma declaração de atribuição que rode depois que o registro seja aceito. O código poderia ser assim:

      Case of
    :(Form event=On Load)
    LIST TO ARRAY("Cities";aCities)
    If(Record number([People])<0) `new record
    aCities:=3 `display a default value
    Else `existing record, display stored value
    aCities:=Find in array(aCities;City)
    End if
    :(Form event=On Clicked) `user modified selection
    City:=aCities{aCities} `field gets new value
    :(Form event=On Validate)
    City:=aCities{aCities}
    :(Form event=On Unload)
    CLEAR VARIABLE(aCities)
    End case

    Deve selecionar cada event que teste nas estruturas Case. Os arrays sempre contém um número finito de elementos. A lista de elementos é dinâmica e pode ser modificada por um método. Itens em um array podem ser modificados, ordenados e terem itens adicionados.

    Utilizar uma lista de seleção

    If you want to use a drop-down list to manage the values of an input area (listed field or variable), 4D lets you reference the field or variable directly as the drop-down list's data source. Isso facilita gerenciar variáveis/campos listados.

    For example, in the case of a "Color" field that can only contain the values "White", "Blue", "Green" or "Red", it is possible to create a list containing these values and associate it with a drop-down list that references the 4D "Color" field. 4D então se encarrega automaticamente de gerenciar o input e exibir os valores atuais no formulário.

    Se usar uma lista hierárquica, só o primeiro nível é mostrado e pode ser selecionado. If you use a hierarchical list, only the first level is displayed and can be selected.

    To associate a drop-down list with a field or variable, enter the name of the field or variable directly as the Variable or Expression field of the drop-down list in the Property List.

    It is not possible to use this feature with an object or an array drop-down list. If you enter a field name in the "Variable or Expression" area, then you must use a choice list.

    When the form is executed, 4D automatically manages the drop-down list during input or display: when a user chooses a value, it is saved in the field; this field value is shown in the drop-down list when the form is displayed:

    Selected item value or Selected item reference

    When you have associated a drop-down list with a choice list and with a field or a variable, you can set the Data Type property to Selected item value or Selected item reference. Essa opção permite otimizar o tamanho dos dados salvos.

    Using a hierarchical choice list

    A hierarchical drop-down list has a sublist associated with each item in the list. Here is an example of a hierarchical drop-down list:

    In forms, hierarchical drop-down lists are limited to two levels.

    You can assign the hierarchical choice list to the drop-down list object using the Choice List field of the Property List.

    You manage hierarchical drop-down lists using the Hierarchical Lists commands of the 4D Language. All commands that support the (*; "name") syntax can be used with hierarchical drop-down lists, e.g. List item parent.

    Usar uma ação padrão

    You can build automatically a drop-down list using a standard action. This feature is supported in the following contexts:

    • Use of the gotoPage standard action. In this case, 4D will automatically display the page of the form that corresponds to the number of the item that is selected. For example, if the user selects the 3rd item, 4D will display the third page of the current form (if it exists). At runtime, by default the drop-down list displays the page numbers (1, 2...).

    • Use of a standard action that displays a sublist of items, for example backgroundColor. This feature requires that:

      • a styled text area (4D Write Pro area or input with multistyle property) is present in the form as the standard action target.
      • the focusable property is not set to the drop-down list. At runtime the drop-down list will display an automatic list of values, e.g. background colors. You can override this automatic list by assigning in addition a choice list in which each item has been assigned a custom standard action.

    This feature cannot be used with a hierarchical drop-down list.

    Propriedades compatíveis

    Alpha Format - Bold - Bottom - Button Style - Choice List - Class - Data Type (expression type) - Data Type (list) - Date Format - Expression Type - Focusable - Font - Font Color - Font Size - Height - Help Tip - Horizontal Sizing - Italic - Left - Not rendered - Object Name - Right - Standard action - Save value - Time Format - Top - Type - Underline - Variable or Expression - Vertical Sizing - Visibility - Width