| Allegro CL version 10.0 Unrevised from 9.0 to 10.0. 9.0 version |
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 was not revised from the 9.0 page.
Created 2015.5.21.
| Allegro CL version 10.0 Unrevised from 9.0 to 10.0. 9.0 version |