Generic Function | Package: cg | ToC | DocOverview | CGDoc | RelNotes | FAQ | Index | PermutedIndex
| Allegro CL version 9.0 This page is new in 9.0.

## validate-edited-slot-value

Arguments: window standard-object slot-name value

This generic function is called whenever a user attempts to enter a new slot value in an `object-editor` dialog or a `class-grid` widget. If it returns true then the new value is accepted, and if it returns `nil` then the value is rejected and the object-editor widget or the class-grid cell will continue to show the pre-edited slot value.

The default method simply returns `t` to allow any edit. An application could define one or more methods that override the default method to check whether the user has entered an invalid value, returning `nil` if so. A method could also show an error dialog explaining why the value was rejected, for example.

window will be either an `object-editor` dialog or the parent window that a `class-grid` is on. This is a suitable window to serve as the owner of an error dialog.

standard-object will be the object that is currently displayed in an `object-editor` dialog, or in the selected row of a `class-grid` widget.

slot-name will be the symbol that names the slot that is edited by the particular `object-editor` widget or `class-grid` column in which the user is currently editing a value.

value will be the newly edited value that the user is attempting to write into the slot.

Here is a simple example that allows a particular slot to contain only a string where every character is a letter. (The class does not need to be a persistent AllegroCache class, but that is typical when using an `object-editor` or `class-grid`.)

    (defclass my-thing ()
      ((foo :accessor foo :initform "" :initarg :foo))
      (:metaclass db.ac:persistent-class))

    (defmethod validate-edited-slot-value
        ((window basic-pane)(my-thing my-thing)(slot-name (eql 'foo)) value)
      (cond ((and (stringp value)
                  (every #'alpha-char-p value))
             t)
            (t (pop-up-message-dialog
                window "Invalid Value"
    	    #.(format nil "The value of the foo slot must be ~
                               a string that contains only letters.")
                warning-icon "~OK")
               nil)))

Copyright (c) 1998-2019, Franz Inc. Oakland, CA., USA. All rights reserved.
This page is new in the 9.0 release.
Created 2019.8.20.

|  | ToC | DocOverview | CGDoc | RelNotes | FAQ | Index | PermutedIndex
| Allegro CL version 9.0 This page is new in 9.0.