mirror of https://github.com/postgres/postgres
parent
2fb643758d
commit
09b187598c
@ -0,0 +1,104 @@ |
|||||||
|
<!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="#FFEBCD" LINK="#0000EF" VLINK="#51188E" ALINK="#FF0000"> |
||||||
|
|
||||||
|
<H1>FORMS</H1> |
||||||
|
|
||||||
|
<P> |
||||||
|
<HR WIDTH="100%"></P> |
||||||
|
|
||||||
|
<P>This version (0.81) of PgAccess introduce the visual form builder.</P> |
||||||
|
|
||||||
|
<P>For the moment, it has only some basic widgets : labels, entries, buttons |
||||||
|
, listboxes , checkboxes and radiobuttons.</P> |
||||||
|
|
||||||
|
<P>Also there is a query widget that allows you yo have access to a query |
||||||
|
results.</P> |
||||||
|
|
||||||
|
<P>In a manner very similar with Visual Tcl or Visual Basic, the user must |
||||||
|
select a widget from the toolbar and drags on the canvas the rectangle |
||||||
|
that would define the widget. It can also specify some attributes in a |
||||||
|
separate window. Renaming, resizing items are possible modifying parameters |
||||||
|
in attribute window. Do not forget to press Enter in the edit field after |
||||||
|
changing a value in order to be accepted.</P> |
||||||
|
|
||||||
|
<P>You can also move items by dragging them or delete them by pressing |
||||||
|
Del key.</P> |
||||||
|
|
||||||
|
<P>In attribute window, there are some fields named <B><TT><FONT SIZE=+1>Command |
||||||
|
</FONT></TT></B>and <B><TT><FONT SIZE=+1>Variable</FONT></TT></B>.</P> |
||||||
|
|
||||||
|
<P>The field <B><TT><FONT SIZE=+1>Command </FONT></TT></B>have meaning |
||||||
|
only for Button widgets and holds the command that will be invoked when |
||||||
|
the button is pressed.</P> |
||||||
|
|
||||||
|
<P>The field <B><TT><FONT SIZE=+1>Variable </FONT></TT></B>have meaning |
||||||
|
only for EditField , Label widgets and checkboxes and it is the name of |
||||||
|
the global variable that will hold the value for that widget. For checkboxes |
||||||
|
the values are 1 or 0.</P> |
||||||
|
|
||||||
|
<P>In order to make a simple test, put an entry field and set it's variable |
||||||
|
to <B>v1</B> and a button who's command is "set v1 whisky". Press |
||||||
|
the button "Test form" and click on the button. In that entry |
||||||
|
should appear whisky. <BR> |
||||||
|
Another test is defining in Script module a script called "My first |
||||||
|
script" having the following commands:<BR> |
||||||
|
<TT><FONT SIZE=+1>tk_messageBox -title Warning -message "This is my |
||||||
|
first message!"<BR> |
||||||
|
</FONT></TT>and then define a button who's command is <B><TT><FONT SIZE=+1>execute_script |
||||||
|
"My first script"</FONT></TT></B>.</P> |
||||||
|
|
||||||
|
<H2>Database manipulation</H2> |
||||||
|
|
||||||
|
<P>Let's presume that our form have the internal name <B><TT>mf </TT></B>(my |
||||||
|
form). He wil be referred inside the Tcl/Tk source as <B><TT>.mf<BR> |
||||||
|
</TT></B>If you want to close the form in run-time you have to issue the |
||||||
|
command <B><TT>destroy .mf</TT></B></P> |
||||||
|
|
||||||
|
<P>Also, any widget will have the name prefixed by <B><TT>.mf </TT></B> We |
||||||
|
will have <B><TT>.mf.button1</TT></B> or <B><TT>.mf.listbox1</TT></B> .</P> |
||||||
|
|
||||||
|
<P>We can name the query widget <B><TT>qry</TT></B> for example. The complete |
||||||
|
name will be <B><TT>.mf.qry</TT></B> then.<BR> |
||||||
|
The <B><TT>Command </TT></B>property of the query widget must contain the |
||||||
|
SQL command that will be executed.<BR> |
||||||
|
When the form will be in run-time, automatically you will have acces to |
||||||
|
the following methods :</P> |
||||||
|
|
||||||
|
<P><TT>.mf.qry:execute</TT> - opens the connection and execute the query |
||||||
|
(returns nothing)<BR> |
||||||
|
<TT>.mf.qry:nrecords</TT> - returns the number of records in the selected |
||||||
|
query<BR> |
||||||
|
<TT>.mf.qry:fields</TT> - returns a list of the fields in the result set<BR> |
||||||
|
<TT>.mf.qry:movefirst</TT> - move the cursor to the first record in the |
||||||
|
recordset<BR> |
||||||
|
<TT>.mf.qry:movelast , .mf.qry:movenext , .mf.qry:moveprevious </TT>- moves |
||||||
|
the cursor <BR> |
||||||
|
<TT>.mf.qry:updatecontrols</TT> - update the variables inside the designed |
||||||
|
form that have a particular name (I'll explain later)<BR> |
||||||
|
<TT>.mf.qry:close</TT> - close the connection (<B><FONT COLOR="#FF0000">if |
||||||
|
you don't close the query result, you will loose memory</FONT></B>)</P> |
||||||
|
|
||||||
|
<P>If you want to bound some controls to the fields of the recordset, you |
||||||
|
will have to name their associate variable like that :</P> |
||||||
|
|
||||||
|
<P><TT>.mf.qry.salary</TT> to get the "salary" field , or <TT>.mf.qry.name</TT> |
||||||
|
to get the "name" field.</P> |
||||||
|
|
||||||
|
<P>It's simple, isn't it ? It's just like a new widget that have some properties |
||||||
|
and methods that can be accesed.<BR> |
||||||
|
Also, the name convention is just like in Tcl/Tk.</P> |
||||||
|
|
||||||
|
<P> |
||||||
|
<HR WIDTH="25%"></P> |
||||||
|
|
||||||
|
<P>Please feel free to send me your oppinion at <B>teo@flex.ro</B> on forms |
||||||
|
designing and usage.<BR> |
||||||
|
</P> |
||||||
|
|
||||||
|
</BODY> |
||||||
|
</HTML> |
@ -0,0 +1,124 @@ |
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> |
||||||
|
<HTML> |
||||||
|
<HEAD> |
||||||
|
<TITLE>PgAccess - a Tcl/Tk PostgreSQL interface</TITLE> |
||||||
|
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> |
||||||
|
<META NAME="GENERATOR" CONTENT="Mozilla/3.04Gold (X11; I; Linux 2.0.32 i586) [Netscape]"> |
||||||
|
</HEAD> |
||||||
|
<BODY BGCOLOR="#FFFFFF"> |
||||||
|
|
||||||
|
<H1>PgAccess - a database management tool for <A HREF="http://www.postgreSQL.org">PostgreSQL</A></H1> |
||||||
|
|
||||||
|
<P> |
||||||
|
<HR></P> |
||||||
|
|
||||||
|
<P>This program is protected by the following <A HREF="copyright.html">copyright</A> |
||||||
|
</P> |
||||||
|
|
||||||
|
<LI><A HREF="pgaccess-0.81.tar.gz">Download the last version of Pgaccess |
||||||
|
(press shift and click this link)</A>.</LI> |
||||||
|
|
||||||
|
<P>Latest version of PgAccess is 0.81 , 1 March 1998 ! </P> |
||||||
|
|
||||||
|
<CENTER><TABLE BORDER=3 CELLSPACING=0 CELLPADDING=0 WIDTH="100%" BGCOLOR="#FFB6C1" > |
||||||
|
<TR> |
||||||
|
<TD> |
||||||
|
<CENTER><P><BR> |
||||||
|
<B><FONT SIZE=+2>PgAccess can now design <A HREF="forms.html">Forms</A></FONT></B>, |
||||||
|
<B><FONT SIZE=+2><A HREF="pga-rad.html">Reports and Scripts</A></FONT></B></P></CENTER> |
||||||
|
</TD> |
||||||
|
</TR> |
||||||
|
</TABLE></CENTER> |
||||||
|
|
||||||
|
<P>I think that there were some problems loading libpgtcl library. <BR> |
||||||
|
I invite you to read a <A HREF="index.html#libpgtcl">special section concerning |
||||||
|
<B>libpgtcl</B></A> </P> |
||||||
|
|
||||||
|
<H3><FONT COLOR="#191970">What does PgAccess now!</FONT></H3> |
||||||
|
|
||||||
|
<P>Here are some images from PgAccess windows : <A HREF="pic-pga-1.gif">Main |
||||||
|
window </A>, <A HREF="pic-pga-2.gif">table builder </A>, <A HREF="pic-pga-4.gif">table(query) |
||||||
|
view </A>, <A HREF="pic-pga-3.gif">visual query builder </A>. </P> |
||||||
|
|
||||||
|
<P><B>Tables</B> <BR> |
||||||
|
- opening tables for viewing, max 200 records (changed by preferences menu) |
||||||
|
<BR> |
||||||
|
- column resizing, dragging the vertical grid line (better in table space |
||||||
|
rather than in the table header) <BR> |
||||||
|
- text wrap in cells - layout saved for every table <BR> |
||||||
|
- import/export to external files (SDF,CSV) <BR> |
||||||
|
- filter capabilities (enter filter like (price>3.14) <BR> |
||||||
|
- sort order capabilities (enter manually the sort field(s)) <BR> |
||||||
|
- editing in place <BR> |
||||||
|
- improved table generator assistant <BR> |
||||||
|
- improved field editing <BR> |
||||||
|
<B>Queries</B> <BR> |
||||||
|
- define , edit and stores "user defined queries" <BR> |
||||||
|
- store queries as views <BR> |
||||||
|
- execution of queries <BR> |
||||||
|
- viewing of select type queries result <BR> |
||||||
|
- query deleting and renaming <BR> |
||||||
|
- <B><BLINK><FONT COLOR="#FF0000">NEW !!!</FONT></BLINK></B> Visual query |
||||||
|
builder with drag & drop capabilities. For any of you who had installed |
||||||
|
the Tcl/Tk plugin for Netscape Navigator, you can see it at work <A HREF="qbtclet.html">clicking |
||||||
|
here</A> <BR> |
||||||
|
<B>Sequences</B> <BR> |
||||||
|
- defines sequences, delete them and inspect them <BR> |
||||||
|
<B>Functions</B> <BR> |
||||||
|
- define, inspect and delete functions in SQL language <BR> |
||||||
|
<B>Reports<BR> |
||||||
|
</B>- design and display simple reports from tables<BR> |
||||||
|
- fields and labels, font changing, style and size<BR> |
||||||
|
- saves and loads report description from database<BR> |
||||||
|
- show report previews, sample postscript output file<BR> |
||||||
|
<B>Forms<BR> |
||||||
|
</B>- open user defined forms<BR> |
||||||
|
- form design module available<BR> |
||||||
|
- query widget available, controls bound to query results<BR> |
||||||
|
- <A HREF="forms.html">click here</A> for a description of forms and how |
||||||
|
they can be used<BR> |
||||||
|
<B>Scripts<BR> |
||||||
|
</B>- define, modify and call user defined scripts<BR> |
||||||
|
Here is <A HREF="pga-rad.html">a special section concerning forms and scripts</A> |
||||||
|
.</P> |
||||||
|
|
||||||
|
<P>On the TODO list! <BR> |
||||||
|
- table design (add new fields, renaming, etc.) <BR> |
||||||
|
<BR> |
||||||
|
</P> |
||||||
|
|
||||||
|
<P>If you have any comment, suggestion for improvements, please feel free |
||||||
|
to e-mail to : <A HREF="mailto:teo@flex.ro">teo@flex.ro </A> <BR> |
||||||
|
</P> |
||||||
|
|
||||||
|
<P><B><FONT COLOR="#FF1493"><FONT SIZE=+2>Mailing list for PgAccess </FONT></FONT></B><A HREF="maillist.html">Here |
||||||
|
you will find how to subscribe to this mailing list</A>.</P> |
||||||
|
|
||||||
|
<P> |
||||||
|
<HR></P> |
||||||
|
|
||||||
|
<H1>More information about libgtcl</H1> |
||||||
|
|
||||||
|
<P>Also, you will need the PostgreSQL to Tcl interface library, lined as |
||||||
|
a Tcl/Tk 'load'-able module. It is called libpgtcl and the source is located |
||||||
|
in the PostgreSQL directory /src/interfaces/libpgtcl. Specifically, you |
||||||
|
will need a libpgtcl library that is 'load'-able from Tcl/Tk. This is technically |
||||||
|
different from an ordinary PostgreSQL loadable object file, because libpgtcl |
||||||
|
is a collection of object files. Under Linux, this is called libpgtcl.so. |
||||||
|
<BR> |
||||||
|
You can download <A HREF="libpgtcl.so">from here </A>a version already |
||||||
|
compiled for Linux i386 systems. Just copy libpgtcl.so into your system |
||||||
|
library director (/usr/lib) and go for it. One of the solutions is to remove |
||||||
|
from the source the line containing <B>load libpgtcl.so </B>and to load |
||||||
|
pgaccess.tcl not with wish, but with pgwish (or wishpg) that wish that |
||||||
|
was linked with libpgtcl library! </P> |
||||||
|
|
||||||
|
<P>If you have installed RedHat 5.0, you should get the last distribution |
||||||
|
kit of postgreSQL and compile it from scratch. RedHat 5.0 is using some |
||||||
|
new versions of libraries and you have to compile and install again at |
||||||
|
least <B>libpq </B>and <B><TT>libpgtcl </TT></B>libraries.</P> |
||||||
|
|
||||||
|
<P>However, the application should work without problems! </P> |
||||||
|
|
||||||
|
</BODY> |
||||||
|
</HTML> |
@ -0,0 +1,43 @@ |
|||||||
|
<!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"> |
||||||
|
|
||||||
|
<P>The mailing list for PgAccess is : <B><TT>pgsql-interfaces@postgresql.org</TT></B></P> |
||||||
|
|
||||||
|
<P>If you have some questions regarding PgAccess you should mail to this |
||||||
|
address. I will also answer to messages addresed directly to me but it |
||||||
|
would be better to post your messages here because it might be possible |
||||||
|
to get an answer quickly from another user of PgAccess.</P> |
||||||
|
|
||||||
|
<P> |
||||||
|
<HR WIDTH="100%"></P> |
||||||
|
|
||||||
|
<P>To subscribe please send a mail message to :</P> |
||||||
|
|
||||||
|
<P> <B><TT><FONT SIZE=+1>pgsql-interfaces-request@postgresql.org |
||||||
|
</FONT></TT></B> </P> |
||||||
|
|
||||||
|
<P>having a single line in the body message : <B><TT><FONT SIZE=+1>subscribe</FONT></TT></B></P> |
||||||
|
|
||||||
|
<P>In a couple of minutes , if everything is ok, you must receive something |
||||||
|
like that :</P> |
||||||
|
|
||||||
|
<P> |
||||||
|
<HR WIDTH="100%"></P> |
||||||
|
|
||||||
|
<P><TT>Welcome to the pgsql-interfaces mailing list!</TT></P> |
||||||
|
|
||||||
|
<P><TT>Please save this message for future reference. Thank you.</TT></P> |
||||||
|
|
||||||
|
<P><TT>If you ever want to remove yourself from this mailing list, you |
||||||
|
can send mail to <Majordomo@hub.org> with the following command in |
||||||
|
the body of your email message:</TT></P> |
||||||
|
|
||||||
|
<P><TT>unsubscribe pgsql-interfaces yourname@yourdomain</TT></P> |
||||||
|
<TT></TT> |
||||||
|
</BODY> |
||||||
|
</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> |
@ -0,0 +1,45 @@ |
|||||||
|
<html> |
||||||
|
|
||||||
|
<title> Visual Query Builder in Tcl/Tk </title> |
||||||
|
<body bgcolor=white> |
||||||
|
<h1> Visual Query Builder</h1> |
||||||
|
<hr> |
||||||
|
This visual query builder is included in <a href='http://www.flex.ro/pgaccess'> |
||||||
|
PgAccess</a>, a visual interface to |
||||||
|
<a href='http://www.postgreSQL.org'> PostgreSQL</a> written entirely in |
||||||
|
vTcl , (Visual Tcl). |
||||||
|
|
||||||
|
|
||||||
|
<p align="center"> |
||||||
|
|
||||||
|
<embed src="qbtclet.tcl" width=590 height=485> |
||||||
|
|
||||||
|
</p> |
||||||
|
|
||||||
|
<br> |
||||||
|
|
||||||
|
|
||||||
|
Visual Query Designer demo<br> |
||||||
|
Click <a href='qbtclet.tar.gz'>here</a> to download the source </a> |
||||||
|
created by Constantin Teodorescu with vTcl (visual Tcl), teo@flex.ro |
||||||
|
<hr> |
||||||
|
Facitilies<br> |
||||||
|
- drag and drop selection of fields<br> |
||||||
|
- drag and drop fields from a table to another do create links<br> |
||||||
|
- move table position by dragging<br> |
||||||
|
- point and click any link or table then press delete to delete them<br> |
||||||
|
- modify sort order by clicking on (unsorted)<br> |
||||||
|
- enter filter conditions as criteria (>2000 , ='item')<br> |
||||||
|
- easy panning of table and result panels<br> |
||||||
|
- show SQL command<br> |
||||||
|
<br> |
||||||
|
If you want to use it for your database, modify ql_read_struct in order to read |
||||||
|
your table structure. |
||||||
|
<br> |
||||||
|
Feel free to use, modify or copy this software for non-commercial purposes.<br> |
||||||
|
In any other case, please contact me. |
||||||
|
<br> |
||||||
|
FLEX Consulting Braila, ROMANIA is able to deliver high end interfaces |
||||||
|
and any other commercial products written in Tcl/Tk just like that you have seen. |
||||||
|
</body> |
||||||
|
</html> |
Loading…
Reference in new issue