This page describes formula events specific to Advanced Memo, Edit and EditDuration controls. The normal Edit events use the shared DBForm component executor, which populates Argument_EventName, Argument_SenderName and Argument_SenderID. Advanced Memo and desktop EditDuration use their own executors and do not populate these common arguments.
Runs when the Advanced Memo editor is double-clicked. It is available on desktop and for the plain-text web editor. The web RichText/TinyMCE class contains a handler method, but that method is not assigned to a TinyMCE event, so the formula does not run in web RichText mode.
Arguments and Result: It has no reliable event-specific arguments. The declared common EventName and Sender variables are not populated by the component's executor. NeedResult=False and the Result is ignored.
Example: Record the last Advanced Memo double-click.
CIP_SetRuntimeVariable("AdvMemoDoubleClick", Now());Runs while the component Hint is resolved, after active alarm/warning text and an already assigned ScriptHint have been checked. The text form of the formula Result becomes the Hint and NeedResult=True.
The formula metadata incorrectly declares every global REF_<EntryName> variable, but this execution path does not populate those reference values. On web, one refresh requests the Hint separately for the edit control and its information label, so the formula can run twice.
Example: Display a fixed editing instruction.
Result := "Enter a value";Runs when the Edit wizard button is activated. Argument_Left and Argument_Top contain the screen position. A valid formula replaces the standard wizard on both desktop and web.
Result: The metadata says NeedResult=False. Desktop nevertheless uses the Result as the component's new value; web ignores it. A cross-platform formula should perform its required action explicitly and must not depend on Result-based value replacement.
Example: On desktop, replace the value with a fixed selection.
Result := "Selected by custom wizard";Platform model: Desktop uses TDBFormEditDuration and its component-specific executor. Web has no separate Duration class and creates a normal TIWDBFormEdit, which uses the shared executor.
Despite its name, the formula runs after the new duration has been written, other components notified and the DBForm marked as changed. It precedes only recalculation and OnChange. Its Result is ignored, NeedResult=False, and it cannot block the modification.
Desktop does not populate the common EventName and Sender arguments. The web Edit executor does populate them.
Example: Record entry into the duration change sequence.
CIP_SetRuntimeVariable("DurationBeforeChange", Now());Runs after the first recalculation; a successful execution is followed by a second recalculation. The Result is ignored and does not control the value change. Desktop marks execution successful before calculation and does not clear that flag on error, so a failed formula is still followed by the second recalculation. Web reports the failure and skips that recalculation.
As with OnBeforeChange, common EventName and Sender arguments are missing on desktop but populated by the normal Edit executor on web.
Example: Record completion of the duration formula.
CIP_SetRuntimeVariable("DurationChanged", Now());