diff options
Diffstat (limited to 'src/bin/pgaccess/pga-rad.html')
-rw-r--r-- | src/bin/pgaccess/pga-rad.html | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/src/bin/pgaccess/pga-rad.html b/src/bin/pgaccess/pga-rad.html new file mode 100644 index 00000000000..af4160b0c74 --- /dev/null +++ b/src/bin/pgaccess/pga-rad.html @@ -0,0 +1,198 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> +<HTML> +<HEAD> + <TITLE></TITLE> + <META NAME="GENERATOR" CONTENT="Mozilla/3.04Gold (X11; I; Linux 2.0.32 i586) [Netscape]"> +</HEAD> +<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000EF" VLINK="#51188E" ALINK="#FF0000"> + +<H1>PgAccess - Scripts and Forms +<HR WIDTH="100%"></H1> + +<P>Beginning with 0.70 version, I have introduced in PgAccess two new modules +for operating with scripts and forms.</P> + +<P> 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. <BR> + Both scripts and forms are containing in fact sources +of code written in Tcl/Tk and when the user has choose to "open" +one of them, either by double-clicking in the main window or pressing the +"Open" button PgAccess is searching for them in pga_forms or +pga_scripts table, get the code and simply "<B>eval</B>" it !<BR> + 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" would be invoked.</P> + +<P> This mechanism and the extremely versatile scripting +mode of Tcl/Tk would give PgAccess a great power for creating end user +application using PosgreSQL. The most important thing is that the user +could call procedures and functions that I have used for building up PgAccess +!</P> + +<H3>Forms</H3> + +<P> Forms are special Tcl/Tk source code that is used +for creating windows and placing widgets inside it. When Tcl/Tk is "eval" +them, a new window appears, with buttons as defined that could call "user +defined scripts", "user defined procedures" or "internal +PgAccess procedures".<BR> + For the moment, 0.70 version of PgAccess does not have +a module for designing forms. It is intended to make an interface to the +most powerful program of designing applications under Tcl/Tk , Visual Tcl +, so it could handle forms designed to be used inside PgAccess.<BR> + 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.</P> + +<H3>Scripts</H3> + +<P> 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.<BR> + The most important thing is that you have total access +to the PgAccess's core of functions and procedures used by me in building +PgAccess as an application. Just write <B><TT><FONT COLOR="#000080">open_table +"Your sample table"</FONT></TT></B> and you'll see the result.<BR> + 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 <B><TT><FONT COLOR="#000080">execute_script +"My own procedure library"</FONT></TT></B> or open a form with +<B><TT><FONT COLOR="#000080">open_form "Main window with menu buttons"</FONT></TT></B> +, and so on.</P> + +<P> +<HR WIDTH="100%"></P> + +<H2>Examples :</H2> + +<P>We would like to give you some examples for using forms and scripts. +First of all, get your PgAccess 0.70 version NOW !</P> + +<P><IMG SRC="a_right.gif" HEIGHT=20 WIDTH=20> Define your first +form. Remember, the form design module hasn't arrived yet :-( , so you +will have to define your first form using an action query :<BR> +1. Click on Query tab and press "New" button<BR> +2. Enter "<TT>Generate my first form</TT>" in Query name field<BR> +3. Copy and paste from your browser window into query definition area the +next text :<BR> +<BR> +<TT>insert into pga_forms values('My first form',' set base .pga_win_1; +if {[winfo exists $base]} { wm deiconify $base; return }; toplevel $base +-class Toplevel; wm focusmodel $base passive; wm geometry $base 395x389+325+188; +wm maxsize $base 1009 738; wm minsize $base 1 1; wm overrideredirect $base +0; wm resizable $base 1 1; wm deiconify $base; wm title $base "User +defined Form No.1"; button $base.b1 -command {execute_script "My +first script"} -text "My first button" ; button $base.bexit +-command {destroy [focus]} -padx 9 -pady 3 -text Exit ; place $base.bexit +-x 340 -y 355 -anchor nw -bordermode ignore ; place $base.b1 -x 10 -y 10 +-anchor nw;'); </TT></P> + +<P>4. Press "Save query definition button" and then "Close"<BR> +5. In the mai window, select by clicking the query "Generate my first +form" and press "Open" button.</P> + +<P>Your query must have been executed without errors! If you will check +now the "Forms" tab, you will find there your first form. Press +"Open" button and enjoy it! For the moment, if you will press +"My first button" you will get an error message. Of course : +we haven't yet defined our first script ! </P> + +<P><IMG SRC="a_right.gif" HEIGHT=20 WIDTH=20> Defining our first +script :<BR> +1. Click on Scripts tab and pres "New" button<BR> +2. Enter "My first script" in script's name field<BR> +3. Enter the body as the script the following statements :<BR> +<BR> +<TT>MsgBox "Warning" "PgAccess unleashed!"<BR> +open_table pga_scripts<BR> +<BR> +</TT>4. Press "Save" button then "Cancel"</P> + +<P>It's now the time to define our first library script. I am defining +not because I need it. I could write directly in "My first script" +the instructions for creating that warning window but I only wanted to +show you how you can mix PgAccess script execution with Tcl/Tk code and +so on.</P> + +<P><IMG SRC="a_right.gif" HEIGHT=20 WIDTH=20> Define our first +library that will contain your "user defined" Tcl/Tk procedures +and functions :<BR> +1. Click on Scripts tab and pres "New" button<BR> +2. Enter "My first library" in script's name field<BR> +3. Enter the body of the script the following statements :<BR> +<BR> +<TT>proc MsgBox {title msg} {<BR> + tk_messageBox -title $title -message +$msg<BR> +}<BR> +<BR> +</TT>4. Press "Save" button then "Cancel"</P> + +<P><IMG SRC="file:/home/teo/a_right.gif" HEIGHT=20 WIDTH=20> Define +our first autoexec script that will contain commands that will be executed +when opening database :<BR> +1. Click on Scripts tab and pres "New" button<BR> +2. Enter "Autoexec" in script's name field<BR> +3. Enter the body of the script the following statements :<BR> +<BR> +<TT>execute_script "My first library"<BR> +open_form "My first form"<BR> +<BR> +</TT>4. Press "Save" button then "Cancel"</P> + +<P>Everything is OK now! You will have to exit PgAccess and enter it again +opening the same database ! Voila , your first form will pop-up on the +screen, a message box is displayed and after clicking Ok button the table +pga_scripts will be opened in table viewer revealing what's inside ! With +this occasion I have shown how you could open in table view mode a "pga_..." +system table that is hidden by PgAccess in main view mode!</P> + +<P>I am stopping here, asking you to try this new features and sending +me as more feed-backs as you can! What do you think about this new features +? How would you like to be developed PgAccess in future ? In this +moment, I am working in recoding the main part of PgAccess in order to +give to the user more "system" functions that would help him +creating new applications very easy.<BR> +<BR> +Remember : I'm waiting your messages at <A HREF="mailto:teo@flex.ro">teo@flex.ro</A> +</P> + +<P> +<HR WIDTH="50%"></P> + +<P>You will also have the ability of hiding the main window of PgAccess +at the beginning of "Autoexec" script execution and showing it +before destroying "My first form". For this example, delete the +previously defined "My first form" and create it with another +action query with this code :<BR> +<BR> +<TT>insert into pga_forms values('My first form',' set base .pga_win_1; +if {[winfo exists $base]} { wm deiconify $base; return }; toplevel $base +-class Toplevel; wm focusmodel $base passive; wm geometry $base 395x389+325+188; +wm maxsize $base 1009 738; wm minsize $base 1 1; wm overrideredirect $base +0; wm resizable $base 1 1; wm deiconify $base; wm title $base "User +defined Form No.1"; button $base.b1 -command {execute_script "My +first script"} -text "My first button" ; button $base.bexit +-command {Window show .dw ; destroy [focus]} -padx 9 -pady 3 -text Exit +; place $base.bexit -x 340 -y 355 -anchor nw -bordermode ignore ; place +$base.b1 -x 10 -y 10 -anchor nw;'); <BR> +<BR> +</TT>This new one is just showing main window (.dw) before destroying the +"user defined window" . <BR> +Also make "Autoexec" script to show like this :<BR> +<BR> +<TT>execute_script "My first library"<BR> +Window hide .dw<BR> +open_form "My first form"</TT><BR> +</P> + +</BODY> +</HTML> |