# D

`+DbHint`
  `+DbHint` supplies autocomplete suggestions from the database.

          (gui 'nam '(+Var +DbHint +TextField) '*UsrNam '(nam +User) 30)

  This example shows a `+TextField` that has been extended with two classes, `+Var` and `+DbHint`. `+Var` connects the field to a variable and `+DbHint` fetches autocomplete suggestions from the database. As you can see, `+DbHint` is given the argument `'(nam +User)`. This tells it to fetch the property "nam" from the class "+User". See also +hint, +Var and +TextField.

`+Dflt`
  A prefix to specify a default value for a field. This is different from '+Init' which can be overwritten with an empty value (NIL). A '+Dflt' field will never contain NIL (unless the default value itself evaluates to NIL). See also +Init.

`(diaform 'lst prg)`
  `diaForm` is a form that has a dual nature in that it can behave both as a form and as a dialog. When called from a form, by pressing a button (POST) it shows up as a dialog. Otherwise, when called via a link (GET), it shows up as a form. `diaform` is commonly used in search dialogs, often together with an `idForm`. This way, functionality to search for, select and edit objects is combined in a single page of the application.

          (de choItem (Dst)
             (diaform '(Dst)
                (<grid> "--.-."
                   ...
                   ... )
                (gui 'query '(+QueryChart) (cho)
                   ...
                   ... )
                (<table> 'chart (choTtl ,"Items" 'nr '+Item)
                   ...
                   ... )
                (<spread>
                   ...
                   ... ) ) )

  See also form, idForm, dialog.

`(dialog Env . Prg)`
  Creates a dialog. 'Env' can contain additional css attributes, the framework adds the css class 'dialog'. 'Prg' is the content you want to populate the dialog with. See also Alerts and dialogs.

`(disable Flg)`
  This function disables a form when called with a non-`NIL` argument. It overrides the standard form enable/disable, in that it can disable the form even if it would be otherwise enabled. This affects all components in this form. The following example makes a form read-only until Christmas:

          (form NIL
             (disable (> (12 24) (cdr (date (date)))))  # Disable whole form
             (gui ..)
             .. )

  In a disabled form, individual components can be activated using the `+Rid` prefix class. See also +Rid.

`(delButton Able @Txt)`
  A delete button, marks an object as deleted. Includes a confirmation dialog. See also ask, note, , +Rid, +Able, +Tip, +Button and gui.

`+DelRowButton`
  A button used to delete one row from a chart. See also chart, +Tiny, +Rid, +JS, +Able, +Tip and +Button.

`+DnButton`
  A button used scroll a chart one row down. See also chart, +Tiny, +Rid, +JS, +Able, +GoButton, +Button and scrolling.

`+Drop`
  +Drop is a prefix class for +Button and makes the most sense in combination with +UpField, for file uploads. The following example comes from the demo app in the PicoLisp distribution, in app/item.l:

          (gui '(+Able +UpField) '(not (: home obj jpg)) 30)
          (gui '(+Drop +Button) '(field -1)
             '(if (: home obj jpg) ,"Uninstall" ,"Install")
                '(cond
                   ((: home obj jpg)
                      (ask ,"Uninstall Picture?"
                         (put!> (: home top 1 obj) 'jpg NIL) ) )
                   ((: drop) (blob! (: home obj) 'jpg @)) ) )

  Note "'(field -1)" in the example above. This part refers to the +UpField. See also +Button, field, +Able, +UpField and gui.

`+DstButton`
  `+DstButton`, Destination button, has a dual behaviour, manifesting itself as a button or a plain link. The button is always labeled as "@", but if `+DstButton` is used in a dialog which chooses an object to be stored in a field of the calling form it manifests as a button. In this case, pressing the button stores the object in the destination field. Otherwise, `+DstButton` manifests itself as a plain link and clicking the link causes a jump to that object. Typical usage is in choice (search) dialogs, which are used both for jumping to objects and for selecting objects in other forms.
  The following example uses a `+DstButton` when presenting the search result in a `QueryChart`. Since we are not about to choose an object to be stored in a field of the calling form, this `+DstButton` will manifest as a link and cause a jump to an object.
  Given the following 'put'- function:

          '((This) (list This This (: pa) (: ma) (: mate) (: job) (: dat)))

  And presenting the result in a table:

            (<table> 'chart NIL
               '((btn) (NIL "Name") (NIL "Father") (NIL "Mother") (NIL "Partner") (NIL "Occupation") (NIL "born"))
               (do (cho)
                  (<row> (alternating)
                     (gui 1 '(+DstButton) Dst)
                     (gui 2 '(+ObjView +TextField) '(: nm))
                     (gui 3 '(+ObjView +TextField) '(: nm))
                     (gui 4 '(+ObjView +TextField) '(: nm))
                     (gui 5 '(+ObjView +TextField) '(: nm))
                     (gui 6 '(+TextField))
                     (gui 7 '(+DateField)) ) ) )

  See also +Set, +Able, +Close, +PickButton.

`+DateField`
  +DateField accepts and returns a date value.

          (gui '(+DateField) 10)

  The date format displayed and accepted by the +DateField is determined by the current locale, and the field returns an error when a date not matching the locale is entered. +DateField does some extra work to handle user input, independant of locale. Entering a small number is expanded to mean day of the current month, and entering larger numbers expand to day/ month or day/month/year.
  - Entering "3" means the third day of the current month.
  - "031" or "0301" both expand to 3 January of the current year.
  - "01023" or "010203" expands to 1 February, 2003.
  See also +TextField, gui, date and Time & Date.