# PgAccess - Scripts and Forms

Beginning with 0.70 version, I have introduced in PgAccess two new modules for operating with scripts and forms.

This would give to PgAccess the power of creating application directly into PgAccess, defining new modules, procedures, forms and possibly making it a rapid development tool for PostgreSQL. The "scripts" and "forms" modules are using two new tables called pga_forms and pga_scripts. PgAccess take care of creating them if user is opening a new database and grant ALL permissions on them to PUBLIC.
Of course, when Designing a script, a simple text editor is opened and text is saved as is in pga_scripts table. When "designing" a form, a "form editor" that would be very similar with "Visual Tcl" is invoked.

This mechanism and the extremely versatile scripting mode of Tcl/Tk would give PgAccess a great power for creating end user application using PostgreSQL. The most important thing is that the user could call procedures and functions that I have used for building up PgAccess !

### Forms

Forms are used for creating windows and placing widgets inside it. When PgAccess interpret them, a new window appear, with buttons as defined that could call "user defined scripts", "user defined procedures" or "internal PgAccess procedures".
Forms can hold all the widgets allowed in Tcl/Tk , buttons, check-boxes, radio-buttons, list-boxes, frames, canvases, etc. With these forms, you can control your application so PgAccess would become just a "shell", a startup point for you applications. See the special section concerning forms.

### Scripts

Scripts are normal Tcl/Tk code that is interpreted by Tcl/Tk. You can define your own procedures inside a script called "Library" for example. You can call your procedures from within another script, from another procedure.
The most important thing is that you have total access to the PgAccess core of functions and procedures used by me in building PgAccess as an application. Just write `open_table "Your sample table"` and you'll see the result.
If you are writing a script called "Autoexec" then it will be executed every time the database is opened. You can put inside different commands that you want to be executed such as : running scripts that would define your own procedures such as `execute_script "My own procedure library"` or open a form with `open_form "Main window with menu buttons"` , and so on.

Remember : I'm waiting your messages at teo@flex.ro