In the meaning of the original poster, first of all: Calling an event is a wrong idea. calling it from a PRG even more so a strange need.
If the code does something that should be done upon request by the user (through a click) and programmatically, too, then it belongs into a form method or even better into a seperate class the form uses.
Actually I do have nonvisual business classes using data access classes and also encapsulating functionality you do on that data, indeed ideally it encapsualtes all functionality done on a certain group of tables.
This way such a "domain" of the application handling several tables is one module I can add to many forms of that domain.
Sometimes each form will have it's own instance of such a class. But for collaboration forms can also share one instance of that business layer class (obviously also shareing a datasession).
By the way: The dataenvironment class and cursoradapters are nice base classes for this.
And these business classes could also be used from without GUI, so all the form does is display data and enable editing to the user on the one side, and calling methods of that business classes on the other side.
GUI methods should rather only care for GUI, not for anything you need to call from outside of the form.
A save method, like Tamar gives as an example, is ok. It's a bit in the gray zone, but it's very fine to make some checks and move control values eg of unbound controls into cursors. Next step is calling save of the business object, which forwards this to the individual data access objects.
It's asked much to change to this kind of class design, but take the idea of encapsulation and seperation of concerns. More seperate code means more maintainance, but independant maintainance and more concrete tasks. And you can generically solve things, so there is few things to do for each table.
Bye, Olaf.