Kbase 16129: Error 293 "File not found" with persistent triggers
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  10/05/1998 |
|
Error 293 "File not found" with persistent triggers
Ch 15 of the Version 8 Programming Handbook documents how Persistent
Triggers will last as long as a widget exists. For example, if
you create a dynamic button with triggers within an internal
procedure then the triggers will only exist as long as the internal
procedure exists. Once the internal procedure is done, the triggers
'go away'. In a smartObject scenario, you may often define triggers
in an internal procedure such as a local-initialize() routine. In
order to ensure that these triggers will exist as long as the widget
exists, you must define the triggers as PERSISTENT TRIGGERS.
For instance, let's say you want to define a dynamic button with a
choose trigger in the local-initialize of your smartViewer. You can
define the button in the following way:
create button newbut
...
triggers:
on choose persistent run but-proc in this-procedure.
end triggers.
end.
Note: You may encounter error 293 'procedure but-proc not found' if
you do not use the IN THIS-PROCEDURE phrase in the trigger
definition. The current procedure context is almost never the same as
the one that defined the persistent trigger especially in the
smartObject scenario. This means that, in the above example, the
smartViewer may not be the current procedure context and therefore
the 'run but-proc' requires the IN THIS-PROCEDURE qualification. Most
likely, the current procedure context will be that of the smartWindow
that contains the smartViewer.
Here is how Progress searches for that 'but-proc' routine:
1. If the IN proc-hdl is specified, find an internal procedure
with that handle and run it
2. If proc-hdl is NOT specified, look in the list of internal
procedures that belong to the current procedure context (it may or
may not be the smartViewer in the above example). If found, then run
it.
3. If still not found, then look in the PROPATH for external .p's or
.r`s etc.
4. If still not found, then generate the error 293.
For more information on persistent triggers see the Knowledgebase
Entry 16421
'Dynamic widget triggers in internal procedures won't fire'.
Progress Software Technical Support Note # 16129