Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
bb01e98d
Commit
bb01e98d
authored
Mar 02, 1998
by
Marc G. Fournier
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bring pgaccess up to 0.82 - last update before release
parent
77ac40d7
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
211 additions
and
343 deletions
+211
-343
src/bin/pgaccess/README.pga
src/bin/pgaccess/README.pga
+1
-1
src/bin/pgaccess/forms.html
src/bin/pgaccess/forms.html
+60
-59
src/bin/pgaccess/index.html
src/bin/pgaccess/index.html
+79
-85
src/bin/pgaccess/pga-rad.html
src/bin/pgaccess/pga-rad.html
+49
-182
src/bin/pgaccess/pgaccess.tcl
src/bin/pgaccess/pgaccess.tcl
+22
-16
No files found.
src/bin/pgaccess/README.pga
View file @
bb01e98d
...
@@ -24,7 +24,7 @@ PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
...
@@ -24,7 +24,7 @@ PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
PGACCESS 0.8
1
1 March 1998
PGACCESS 0.8
2
1 March 1998
================================
================================
I dedicate this program to my little 4 year daughter Ana-Maria and my wife
I dedicate this program to my little 4 year daughter Ana-Maria and my wife
for their understanding. I hope they will forgive me for spending so many
for their understanding. I hope they will forgive me for spending so many
...
...
src/bin/pgaccess/forms.html
View file @
bb01e98d
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HTML>
<HEAD>
<HEAD>
<
TITLE></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]"
>
<META
NAME=
"GENERATOR"
CONTENT=
"Mozilla/
4.04 [en]
(X11; I; Linux 2.0.32 i586) [Netscape]"
>
</HEAD>
</HEAD>
<BODY
TEXT=
"#000000"
BGCOLOR=
"#FFEBCD"
LINK=
"#0000EF"
VLINK=
"#51188E"
ALINK=
"#FF0000"
>
<BODY
TEXT=
"#000000"
BGCOLOR=
"#FFEBCD"
LINK=
"#0000EF"
VLINK=
"#51188E"
ALINK=
"#FF0000"
>
<H1>
FORMS
</H1>
<H1>
FORMS
</H1>
<P>
<HR
WIDTH=
"100%"
>
<HR
WIDTH=
"100%"
></P>
<P>
This version (0.8
1) of PgAccess introduce the visual form builder.
</P>
<P>
This version (0.8
2) of PgAccess introduce the visual form builder.
<P>
For the moment, it has only some basic widgets : labels, entries, buttons
<P>
For the moment, it has only some basic widgets : labels, entries, buttons
, listboxes , checkboxes and radiobuttons.
</P>
, listboxes , checkboxes and radiobuttons.
<P>
Also there is a query widget that allows you yo have access to a query
<P>
Also there is a query widget that allows you yo have access to a query
results.
</P>
results.
<P>
In a manner very similar with Visual Tcl or Visual Basic, the user must
<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
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
that would define the widget. It can also specify some attributes in a
separate window. Renaming, resizing items are possible modifying parameters
separate window. Renaming, resizing items are possible modifying parameters
in attribute window. Do not forget to press Enter in the edit field after
in attribute window. Do not forget to press Enter in the edit field after
changing a value in order to be accepted.
</P>
changing a value in order to be accepted.
<P>
You can also move items by dragging them or delete them by pressing
<P>
You can also move items by dragging them or delete them by pressing
Del key.
</P>
Del key.
<P>
In attribute window, there are some fields named
<B><TT><FONT
SIZE=
+1
>
Command
<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>
</FONT></TT></B>
and
<B><TT><FONT
SIZE=
+1
>
Variable
</FONT></TT></B>
.
<P>
The field
<B><TT><FONT
SIZE=
+1
>
Command
</FONT></TT></B>
have meaning
<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
only for Button widgets and holds the command that will be invoked when
the button is pressed.
</P>
the button is pressed.
<P>
The field
<B><TT><FONT
SIZE=
+1
>
Variable
</FONT></TT></B>
have meaning
<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
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 global variable that will hold the value for that widget. For checkboxes
the values are 1 or 0.
</P>
the values are 1 or 0.
<P>
In order to make a simple test, put an entry field and set it's variable
<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
to
<B>
v1
</B>
and a button who's command is "set v1 whisky". Press the button
the button
"
Test form
"
and click on the button. In that entry
"Test form" and click on the button. In that entry should appear whisky.
should appear whisky.
<BR>
<BR>
Another test is defining in Script module a script called "My first
Another test is defining in Script module a script called
"
My first
script" having the following commands:
script
"
having the following commands:
<BR>
<BR><TT><FONT
SIZE=
+1
>
tk_messageBox -title Warning -message "This is my
<TT><FONT
SIZE=
+1
>
tk_messageBox -title Warning -message
"
This is my
first message!"
</FONT></TT>
first message!
"
<BR>
<BR>
and then define a button who's command is
<B><TT><FONT
SIZE=
+1
>
execute_script
</FONT></TT>
and then define a button who's command is
<B><TT><FONT
SIZE=
+1
>
execute_script
"My first script"
</FONT></TT></B>
.
"
My first script
"
</FONT></TT></B>
.
</P>
<H2>
Database manipulation
</H2>
<H2>
Database manipulation
</H2>
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
</TT></B>
<P>
Let's presume that our form have the internal name
<B><TT>
mf
</TT></B>
(my
<BR>
If you want to close the form in run-time you have to issue the command
form). He wil be referred inside the Tcl/Tk source as
<B><TT>
.mf
<BR>
<B><TT>
destroy .mf
</TT></B>
</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>
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
<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>
name will be
<B><TT>
.mf.qry
</TT></B>
then.
The
<B><TT>
Command
</TT></B>
property of the query widget must contain the
<BR>
The
<B><TT>
Command
</TT></B>
property of the query widget must contain
SQL command that will be executed.
<BR>
the SQL command that will be executed.
When the form will be in run-time, automatically you will have acces to
<BR>
When the form will be in run-time, automatically you will have acces
t
he following methods :
</P>
t
o the following methods :
<P><TT>
.mf.qry:execute
</TT>
- opens the connection and execute the query
<P><TT>
.mf.qry:execute
</TT>
- opens the connection and execute the query
(returns nothing)
<BR>
(returns nothing)
<TT>
.mf.qry:nrecords
</TT>
- returns the number of records in the selected
<BR><TT>
.mf.qry:nrecords
</TT>
- returns the number of records in the selected
query
<BR>
query
<TT>
.mf.qry:fields
</TT>
- returns a list of the fields in the result set
<BR>
<BR><TT>
.mf.qry:fields
</TT>
- returns a list of the fields in the result
<TT>
.mf.qry:movefirst
</TT>
- move the cursor to the first record in the
set
recordset
<BR>
<BR><TT>
.mf.qry:movefirst
</TT>
- move the cursor to the first record in
<TT>
.mf.qry:movelast , .mf.qry:movenext , .mf.qry:moveprevious
</TT>
- moves
the recordset
the cursor
<BR>
<BR><TT>
.mf.qry:movelast , .mf.qry:movenext , .mf.qry:moveprevious
</TT>
-
<TT>
.mf.qry:updatecontrols
</TT>
- update the variables inside the designed
moves the cursor
form that have a particular name (I'll explain later)
<BR>
<BR><TT>
.mf.qry:updatecontrols
</TT>
- update the variables inside the designed
<TT>
.mf.qry:close
</TT>
- close the connection (
<B><FONT
COLOR=
"#FF0000"
>
if
form that have a particular name (I'll explain later)
you don't close the query result, you will loose memory
</FONT></B>
)
</P>
<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>
If you want to bound some controls to the fields of the recordset, you
<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>
will have to name their associate variable like that :
<P><TT>
.mf.qry.salary
</TT>
to get the
"
salary
"
field , or
<TT>
.mf.qry.name
</TT>
<P><TT>
.mf.qry.salary
</TT>
to get the
"salary"
field , or
<TT>
.mf.qry.name
</TT>
to get the
"
name
"
field.
</P>
to get the
"name" field.
<P>
It's simple, isn't it ? It's just like a new widget that have some properties
<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>
and methods that can be accesed.
Also, the name convention is just like in Tcl/Tk.
</P>
<BR>
Also, the name convention is just like in Tcl/Tk.
<P>
In order to avoid naming user defined forms with
a particular
name of another PgAccess form, I would recommend naming them as udf0, udf1
(user defined form 0 , 1 )
<P>
<P>
<HR
WIDTH=
"25%"
>
</P>
<HR
WIDTH=
"25%"
>
<P>
Please feel free to send me your oppinion at
<B>
teo@flex.ro
</B>
on forms
<P>
Please feel free to send me your oppinion at
<B>
teo@flex.ro
</B>
on forms
designing and usage.
<BR>
designing and usage.
</P>
</BODY>
</BODY>
</HTML>
</HTML>
src/bin/pgaccess/index.html
View file @
bb01e98d
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HTML>
<HEAD>
<HEAD>
<TITLE>
PgAccess - a Tcl/Tk PostgreSQL interface
</TITLE>
<META
HTTP-EQUIV=
"Content-Type"
CONTENT=
"text/html; charset=iso-8859-1"
>
<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]"
>
<META
NAME=
"GENERATOR"
CONTENT=
"Mozilla/4.04 [en] (X11; I; Linux 2.0.32 i586) [Netscape]"
>
<TITLE>
PgAccess - a Tcl/Tk PostgreSQL interface
</TITLE>
</HEAD>
</HEAD>
<BODY
BGCOLOR=
"#FFFFFF"
>
<BODY
BGCOLOR=
"#FFFFFF"
>
<H1>
PgAccess - a database management tool for
<A
HREF=
"http://www.postgreSQL.org"
>
PostgreSQL
</A></H1>
<H1>
PgAccess - a database management tool for
<A
HREF=
"http://www.postgreSQL.org"
>
PostgreSQL
</A></H1>
<P>
<HR>
<HR></P>
<P>
This program is protected by the following
<A
HREF=
"copyright.html"
>
copyright
</A>
<P>
This program is protected by the following
<A
HREF=
"copyright.html"
>
copyright
</A>
</P>
<LI>
<A
HREF=
"pgaccess-0.82.tar.gz"
>
Download the last version of Pgaccess (press
<LI><A
HREF=
"pgaccess-0.81.tar.gz"
>
Download the last version of Pgaccess
shift and click this link)
</A>
.
</LI>
(press shift and click this link)
</A>
.
</LI>
<P>
Latest version of PgAccess is 0.81 , 1 March 1998 !
</P>
<P>
Latest version of PgAccess is 0.82 , 1 March 1998 !
<BR>
<CENTER><TABLE
BORDER=
3
CELLSPACING=
0
CELLPADDING=
0
WIDTH=
"100%"
BGCOLOR=
"#FFB6C1"
>
<CENTER><TABLE
BORDER=
3
CELLSPACING=
0
CELLPADDING=
0
WIDTH=
"100%"
BGCOLOR=
"#FFB6C1"
>
<TR>
<TR>
<TD>
<TD>
<CENTER><P><BR>
<CENTER></CENTER>
<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>
<CENTER><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></CENTER>
</TD>
</TD>
</TR>
</TR>
</TABLE></CENTER>
</TABLE></CENTER>
I think that there were some problems loading libpgtcl library.
<P>
I think that there were some problems loading libpgtcl library.
<BR>
<BR>
I invite you to read a
<A
HREF=
"index.html#libpgtcl"
>
special section
I invite you to read a
<A
HREF=
"index.html#libpgtcl"
>
special section concerning
concerning
<B>
libpgtcl
</B></A>
<B>
libpgtcl
</B></A>
</P>
<H3>
<FONT
COLOR=
"#191970"
>
What does PgAccess now!
</FONT></H3>
<H3><FONT
COLOR=
"#191970"
>
What does PgAccess now!
</FONT></H3>
Here are some images from PgAccess windows :
<A
HREF=
"pic-pga-1.gif"
>
Main
<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)
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>
view
</A>
,
<A
HREF=
"pic-pga-3.gif"
>
visual query builder
</A>
.
<P><B>
Tables
</B>
<BR>
<P><B>
Tables
</B>
- opening tables for viewing, max 200 records (changed by preferences menu)
<BR>
- opening tables for viewing, max 200 records (changed by preferences
<BR>
menu)
- column resizing, dragging the vertical grid line (better in table spac
e
<BR>
- column resizing, dragging the vertical grid line (better in tabl
e
rather than in the table header)
<BR>
space rather than in the table header)
- text wrap in cells - layout saved for every table
<BR>
<BR>
- text wrap in cells - layout saved for every table
- import/export to external files (SDF,CSV)
<BR>
<BR>
- import/export to external files (SDF,CSV)
- filter capabilities (enter filter like (price
>
3.14)
<BR>
<BR>
- filter capabilities (enter filter like (price>3.14)
- sort order capabilities (enter manually the sort field(s))
<BR>
<BR>
- sort order capabilities (enter manually the sort field(s))
- editing in place
<BR>
<BR>
- editing in place
- improved table generator assistant
<BR>
<BR>
- improved table generator assistant
- improved field editing
<BR>
<BR>
- improved field editing
<B
>
Queries
</B>
<BR
>
<B
R><B>
Queries
</B
>
- define , edit and stores
"
user defined queries
"
<BR>
<BR>
- define , edit and stores "user defined queries"
- store queries as views
<BR>
<BR>
- store queries as views
- execution of queries
<BR>
<BR>
- execution of queries
- viewing of select type queries result
<BR>
<BR>
- viewing of select type queries result
- query deleting and renaming
<BR>
<BR>
- query deleting and renaming
-
<B><BLINK><FONT
COLOR=
"#FF0000"
>
NEW !!!
</FONT></BLINK></B>
Visual query
<BR>
-
<B><BLINK><FONT
COLOR=
"#FF0000"
>
NEW !!!
</FONT></BLINK></B>
Visual
builder with drag
&
drop capabilities. For any of you who had installe
d
query builder with drag
&
drop capabilities. For any of you who ha
d
the Tcl/Tk plugin for Netscape Navigator, you can see it at work
<A
HREF=
"qbtclet.html"
>
clicking
installed the Tcl/Tk plugin for Netscape Navigator, you can see it at work
here
</A>
<BR
>
<A
HREF=
"qbtclet.html"
>
clicking here
</A
>
<B
>
Sequences
</B>
<BR
>
<B
R><B>
Sequences
</B
>
- defines sequences, delete them and inspect them
<BR>
<BR>
- defines sequences, delete them and inspect them
<B
>
Functions
</B>
<BR
>
<B
R><B>
Functions
</B
>
- define, inspect and delete functions in SQL language
<BR>
<BR>
- define, inspect and delete functions in SQL language
<B
>
Reports
<BR
>
<B
R><B>
Reports
</B
>
<
/B>
- design and display simple reports from tables
<BR>
<
BR>
- design and display simple reports from tables
- fields and labels, font changing, style and size
<BR>
<BR>
- fields and labels, font changing, style and size
- saves and loads report description from database
<BR>
<BR>
- saves and loads report description from database
- show report previews, sample postscript output file
<BR>
<BR>
- show report previews, sample postscript output file
<B
>
Forms
<BR
>
<B
R><B>
Forms
</B
>
<
/B>
- open user defined forms
<BR>
<
BR>
- open user defined forms
- form design module available
<BR>
<BR>
- form design module available
- query widget available, controls bound to query results
<BR>
<BR>
- query widget available, controls bound to query results
-
<A
HREF=
"forms.html"
>
click here
</A>
for a description of forms and how
<BR>
-
<A
HREF=
"forms.html"
>
click here
</A>
for a description of forms and
they can be used
<BR>
how they can be used
<B
>
Scripts
<BR
>
<B
R><B>
Scripts
</B
>
<
/B>
- define, modify and call user defined scripts
<BR>
<
BR>
- define, modify and call user defined scripts
Here is
<A
HREF=
"pga-rad.html"
>
a special section concerning forms and scripts
</A>
<BR>
Here is
<A
HREF=
"pga-rad.html"
>
a special section concerning forms and
.
</P>
scripts
</A>
.
<P>
On the TODO list!
<BR>
<P>
On the TODO list!
- table design (add new fields, renaming, etc.)
<BR>
<BR>
- table design (add new fields, renaming, etc.)
<BR>
</P>
<P>
<P>
If you have any comment, suggestion for improvements, please feel free
<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>
to e-mail to :
<A
HREF=
"mailto:teo@flex.ro"
>
teo@flex.ro
</A>
</P>
<P><B><FONT
COLOR=
"#FF1493"
><FONT
SIZE=
+2
>
Mailing list for PgAccess
</FONT></FONT></B><A
HREF=
"maillist.html"
>
Here
<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>
you will find how to subscribe to this mailing list
</A>
.
<P>
<P>
<HR></P>
<HR>
<H1>
<H1>
More information about libgtcl
</H1>
More information about libgtcl
</H1>
Also, you will need the PostgreSQL to Tcl interface library, lined as a
<P>
Also, you will need the PostgreSQL to Tcl interface library, lined as
Tcl/Tk 'load'-able module. It is called libpgtcl and the source is located
a Tcl/Tk 'load'-able module. It is called libpgtcl and the source is located
in the PostgreSQL directory /src/interfaces/libpgtcl. Specifically, you
in the PostgreSQL directory /src/interfaces/libpgtcl. Specifically, you
will need a libpgtcl library that is 'load'-able from Tcl/Tk. This is technically
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
different from an ordinary PostgreSQL loadable object file, because libpgtcl
is a collection of object files. Under Linux, this is called libpgtcl.so.
is a collection of object files. Under Linux, this is called libpgtcl.so.
<BR>
<BR>
You can download
<A
HREF=
"libpgtcl.so"
>
from here
</A>
a version already
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
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
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
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
pgaccess.tcl not with wish, but with pgwish (or wishpg) that wish that
was linked with libpgtcl library!
</P>
was linked with libpgtcl library!
<P>
If you have installed RedHat 5.0, you should get the last distribution
<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
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
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>
least
<B>
libpq
</B>
and
<B><TT>
libpgtcl
</TT></B>
libraries.
<P>
However, the application should work without problems!
</P>
<P>
However, the application should work without problems!
</BODY>
</BODY>
</HTML>
</HTML>
src/bin/pgaccess/pga-rad.html
View file @
bb01e98d
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HTML>
<HEAD>
<HEAD>
<
TITLE></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]"
>
<META
NAME=
"GENERATOR"
CONTENT=
"Mozilla/
4.04 [en]
(X11; I; Linux 2.0.32 i586) [Netscape]"
>
</HEAD>
</HEAD>
<BODY
TEXT=
"#000000"
BGCOLOR=
"#FFFFFF"
LINK=
"#0000EF"
VLINK=
"#51188E"
ALINK=
"#FF0000"
>
<BODY
TEXT=
"#000000"
BGCOLOR=
"#FFFFFF"
LINK=
"#0000EF"
VLINK=
"#51188E"
ALINK=
"#FF0000"
>
<H1>
PgAccess - Scripts and Forms
<H1>
PgAccess - Scripts and Forms
<HR
WIDTH=
"100%"
></H1>
<HR
WIDTH=
"100%"
></H1>
Beginning with 0.70 version, I have introduced in PgAccess two new modules
<P>
Beginning with 0.70 version, I have introduced in PgAccess two new modules
for operating with scripts and forms.
for operating with scripts and forms.
</P>
<P>
This would give to PgAccess the power of creating application
<P>
This would give to PgAccess the power of creating
directly into PgAccess, defining new modules, procedures, forms and possibly
application directly into PgAccess, defining new modules, procedures, forms
making it a rapid development tool for PostgreSQL. The "scripts" and "forms"
and possibly making it a rapid development tool for PostgreSQL. The
"
scripts
"
modules are using two new tables called pga_forms and pga_scripts. PgAccess
and
"
forms
"
modules are using two new tables called pga_forms
take care of creating them if user is opening a new database and grant
and pga_scripts. PgAccess take care of creating them if user is opening
ALL permissions on them to PUBLIC.
a new database and grant ALL permissions on them to PUBLIC.
<BR>
<BR>
Both scripts and forms are containing in fact sources
<BR>
Of course, when Designing a script, a simple text editor
of code written in Tcl/Tk and when the user has choose to
"
open
"
is opened and text is saved as is in pga_scripts table. When "designing"
one of them, either by double-clicking in the main window or pressing the
a form, a "form editor" that would be very similar with "Visual Tcl" is
"
Open
"
button PgAccess is searching for them in pga_forms or
invoked.
pga_scripts table, get the code and simply
"
<B>
eval
</B>
"
it !
<BR>
Of course, when Designing a script, a simple text editor
<P>
This mechanism and the extremely versatile scripting mode
is opened and text is saved as is in pga_scripts table. When
"
designing
"
of Tcl/Tk would give PgAccess a great power for creating end user application
a form, a
"
form editor
"
that would be very similar with
"
Visual
using PosgreSQL. The most important thing is that the user could call procedures
Tcl
"
would be invoked.
</P>
and functions that I have used for building up PgAccess !
<H3>
<P>
This mechanism and the extremely versatile scripting
Forms
</H3>
mode of Tcl/Tk would give PgAccess a great power for creating end user
Forms are used for creating windows and placing widgets inside
application using PosgreSQL. The most important thing is that the user
it. When PgAccess interpreet them, a new window appear, with buttons as
could call procedures and functions that I have used for building up PgAccess
defined that could call "user defined scripts", "user defined procedures"
!
</P>
or "internal PgAccess procedures".
<BR>
Forms can hold all the widgets allowed in Tcl/Tk , buttons,
<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
check-boxes, radio-buttons, list-boxes, frames, canvases, etc. With these
forms, you can control your application so PgAccess would become just a
forms, you can control your application so PgAccess would become just a
"
shell
"
, a startup point for you applications.
</P>
"shell", a startup point for you applications. See the
<A
HREF=
"forms.html"
>
special
section concerning forms.
</A>
<H3>
Scripts
</H3>
<H3>
Scripts
</H3>
<P>
Scripts are normal Tcl/Tk code that is interpreted
Scripts are normal Tcl/Tk code that is interpreted by Tcl/Tk.
by Tcl/Tk. You can define your own procedures inside a script called
"
Library
"
You can define your own procedures inside a script called "Library" for
for
example. You can call your procedures from within another script, from
example. You can call your procedures from within another script, from
another procedure.
<BR>
another procedure.
The most important thing is that you have total access
<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
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
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>
"Your sample table"
</FONT></TT></B>
and you'll see the result.
If you are writing a script called
"
Autoexec
"
<BR>
If you are writing a script called "Autoexec" then it
then it will be executed every time the database is opened. You can put
will be executed every time the database is opened. You can put inside
inside different commands that you want to be executed such as : running
different commands that you want to be executed such as : running scripts
scripts that would define your own procedures such as
<B><TT><FONT
COLOR=
"#000080"
>
execute_script
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
"My own procedure library"
</FONT></TT></B>
or open a form with
<B><TT><FONT
COLOR=
"#000080"
>
open_form
<B><TT><FONT
COLOR=
"#000080"
>
open_form
"
Main window with menu buttons
"
</FONT></TT></B>
"Main window with menu buttons"
</FONT></TT></B>
, and so on.
, and so on.
</P>
<P>
<P>
<HR
WIDTH=
"100%"
></P>
<HR
WIDTH=
"100%"
>
<BR>
Remember : I'm waiting your messages at
<A
HREF=
"mailto:teo@flex.ro"
>
teo@flex.ro
</A>
<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>
<P>
<HR
WIDTH=
"50%"
></P>
<HR
WIDTH=
"50%"
>
<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>
</BODY>
</HTML>
</HTML>
src/bin/pgaccess/pgaccess.tcl
View file @
bb01e98d
...
@@ -671,6 +671,7 @@ foreach objinfo [lrange $info 4 end] {
...
@@ -671,6 +671,7 @@ foreach objinfo [lrange $info 4 end] {
if
{
$mode
==
"design"
}
{
fd_draw_object $i
}
if
{
$mode
==
"design"
}
{
fd_draw_object $i
}
incr j
incr j
}
}
if
{
$mode
==
"design"
}
{
wm geometry .fd $fdvar
(
geometry
)}
}
}
proc
{
fd_mouse_down
}
{
x y
}
{
proc
{
fd_mouse_down
}
{
x y
}
{
...
@@ -870,7 +871,12 @@ switch $fdobj($item,t) {
...
@@ -870,7 +871,12 @@ switch $fdobj($item,t) {
entry $base.$name -bo 1 -ba white -selectborderwidth 0 -highlightthickness 0
entry $base.$name -bo 1 -ba white -selectborderwidth 0 -highlightthickness 0
if
{
$var
!=
""
}
{
$base.$name
configure -textvar $var
}
if
{
$var
!=
""
}
{
$base.$name
configure -textvar $var
}
}
}
label
{
set wh
{}
;
label $base.$name -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -anchor nw -padx 0 -pady 0 -text $fdobj
(
$item
,l
)}
label
{
set wh
{}
label $base.$name -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -anchor nw -padx 0 -pady 0 -text $fdobj
(
$item
,l
)
set var
{}
;
catch
{
set var $fdobj
(
$item
,v
)}
if
{
$var
!=
""
}
{
$base.$name
configure -textvar $var
}
}
listbox
{
listbox $base.$name -borderwidth 1 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*
}
listbox
{
listbox $base.$name -borderwidth 1 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*
}
}
}
if $visual
{
eval
[
subst
"place
$base.$name
-x
[
expr
[
lindex $coord 0
]
-1
]
-y
[
expr
[
lindex $coord 1
]
-1
]
-anchor nw
$wh
-bordermode ignore"
]}
if $visual
{
eval
[
subst
"place
$base.$name
-x
[
expr
[
lindex $coord 0
]
-1
]
-y
[
expr
[
lindex $coord 1
]
-1
]
-anchor nw
$wh
-bordermode ignore"
]}
...
@@ -2559,7 +2565,7 @@ proc vTclWindow.about {base} {
...
@@ -2559,7 +2565,7 @@ proc vTclWindow.about {base} {
label $base.l2 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief groove -text
{
A Tcl/Tk interface to
label $base.l2 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief groove -text
{
A Tcl/Tk interface to
PostgreSQL
PostgreSQL
by Constantin Teodorescu
}
by Constantin Teodorescu
}
label $base.l3 -borderwidth 0 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief sunken -text
{
vers 0.8
1
}
label $base.l3 -borderwidth 0 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief sunken -text
{
vers 0.8
2
}
label $base.l4 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief groove -text
{
You will always get the latest version at:
label $base.l4 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief groove -text
{
You will always get the latest version at:
http://www.flex.ro/pgaccess
http://www.flex.ro/pgaccess
...
@@ -2782,7 +2788,7 @@ proc vTclWindow.fw {base} {
...
@@ -2782,7 +2788,7 @@ proc vTclWindow.fw {base} {
###################
###################
toplevel $base -class Toplevel
toplevel $base -class Toplevel
wm focusmodel $base passive
wm focusmodel $base passive
wm geometry $base 306x288+2
98+29
0
wm geometry $base 306x288+2
33+13
0
wm maxsize $base 1009 738
wm maxsize $base 1009 738
wm minsize $base 1 1
wm minsize $base 1 1
wm overrideredirect $base 0
wm overrideredirect $base 0
...
@@ -2907,7 +2913,7 @@ proc vTclWindow.mw {base} {
...
@@ -2907,7 +2913,7 @@ proc vTclWindow.mw {base} {
###################
###################
toplevel $base -class Toplevel
toplevel $base -class Toplevel
wm focusmodel $base passive
wm focusmodel $base passive
wm geometry $base 550x400+
189+228
wm geometry $base 550x400+
5+5
wm maxsize $base 1009 738
wm maxsize $base 1009 738
wm minsize $base 550 400
wm minsize $base 550 400
wm overrideredirect $base 0
wm overrideredirect $base 0
...
@@ -2993,7 +2999,7 @@ proc vTclWindow.nt {base} {
...
@@ -2993,7 +2999,7 @@ proc vTclWindow.nt {base} {
###################
###################
toplevel $base -class Toplevel
toplevel $base -class Toplevel
wm focusmodel $base passive
wm focusmodel $base passive
wm geometry $base 630x312+1
48+315
wm geometry $base 630x312+1
00+40
wm maxsize $base 1009 738
wm maxsize $base 1009 738
wm minsize $base 1 1
wm minsize $base 1 1
wm overrideredirect $base 0
wm overrideredirect $base 0
...
@@ -3316,7 +3322,7 @@ proc vTclWindow.qb {base} {
...
@@ -3316,7 +3322,7 @@ proc vTclWindow.qb {base} {
###################
###################
toplevel $base -class Toplevel -cursor top_left_arrow
toplevel $base -class Toplevel -cursor top_left_arrow
wm focusmodel $base passive
wm focusmodel $base passive
wm geometry $base 442x344+
282+299
wm geometry $base 442x344+
150+150
wm maxsize $base 1009 738
wm maxsize $base 1009 738
wm minsize $base 1 1
wm minsize $base 1 1
wm overrideredirect $base 0
wm overrideredirect $base 0
...
@@ -3412,7 +3418,7 @@ proc vTclWindow.ql {base} {
...
@@ -3412,7 +3418,7 @@ proc vTclWindow.ql {base} {
###################
###################
toplevel $base -class Toplevel -cursor top_left_arrow
toplevel $base -class Toplevel -cursor top_left_arrow
wm focusmodel $base passive
wm focusmodel $base passive
wm geometry $base 759x530+
233+177
wm geometry $base 759x530+
10+13
wm maxsize $base 1009 738
wm maxsize $base 1009 738
wm minsize $base 1 1
wm minsize $base 1 1
wm overrideredirect $base 0
wm overrideredirect $base 0
...
@@ -3548,7 +3554,7 @@ proc vTclWindow.rb {base} {
...
@@ -3548,7 +3554,7 @@ proc vTclWindow.rb {base} {
###################
###################
toplevel $base -class Toplevel
toplevel $base -class Toplevel
wm focusmodel $base passive
wm focusmodel $base passive
wm geometry $base 652x426+96+1
6
0
wm geometry $base 652x426+96+1
2
0
wm maxsize $base 1009 738
wm maxsize $base 1009 738
wm minsize $base 1 1
wm minsize $base 1 1
wm overrideredirect $base 0
wm overrideredirect $base 0
...
@@ -3786,7 +3792,7 @@ proc vTclWindow.rpv {base} {
...
@@ -3786,7 +3792,7 @@ proc vTclWindow.rpv {base} {
###################
###################
toplevel $base -class Toplevel
toplevel $base -class Toplevel
wm focusmodel $base passive
wm focusmodel $base passive
wm geometry $base 495x500+23
9+165
wm geometry $base 495x500+23
0+50
wm maxsize $base 1009 738
wm maxsize $base 1009 738
wm minsize $base 1 1
wm minsize $base 1 1
wm overrideredirect $base 0
wm overrideredirect $base 0
...
@@ -3910,7 +3916,7 @@ proc vTclWindow.sw {base} {
...
@@ -3910,7 +3916,7 @@ proc vTclWindow.sw {base} {
###################
###################
toplevel $base -class Toplevel
toplevel $base -class Toplevel
wm focusmodel $base passive
wm focusmodel $base passive
wm geometry $base 594x416+
248+217
wm geometry $base 594x416+
192+152
wm maxsize $base 1009 738
wm maxsize $base 1009 738
wm minsize $base 300 300
wm minsize $base 300 300
wm overrideredirect $base 0
wm overrideredirect $base 0
...
@@ -3955,7 +3961,7 @@ proc vTclWindow.tiw {base} {
...
@@ -3955,7 +3961,7 @@ proc vTclWindow.tiw {base} {
###################
###################
toplevel $base -class Toplevel
toplevel $base -class Toplevel
wm focusmodel $base passive
wm focusmodel $base passive
wm geometry $base 390x460+243+
1
20
wm geometry $base 390x460+243+20
wm maxsize $base 1009 738
wm maxsize $base 1009 738
wm minsize $base 1 1
wm minsize $base 1 1
wm overrideredirect $base 0
wm overrideredirect $base 0
...
@@ -4023,7 +4029,7 @@ proc vTclWindow.fd {base} {
...
@@ -4023,7 +4029,7 @@ proc vTclWindow.fd {base} {
###################
###################
toplevel $base -class Toplevel
toplevel $base -class Toplevel
wm focusmodel $base passive
wm focusmodel $base passive
wm geometry $base 377x315+1
85+234
wm geometry $base 377x315+1
03+101
wm maxsize $base 785 570
wm maxsize $base 785 570
wm minsize $base 1 1
wm minsize $base 1 1
wm overrideredirect $base 0
wm overrideredirect $base 0
...
@@ -4064,7 +4070,7 @@ proc vTclWindow.fda {base} {
...
@@ -4064,7 +4070,7 @@ proc vTclWindow.fda {base} {
###################
###################
toplevel $base -class Toplevel
toplevel $base -class Toplevel
wm focusmodel $base passive
wm focusmodel $base passive
wm geometry $base 225x197+5
89+29
wm geometry $base 225x197+5
61+0
wm maxsize $base 785 570
wm maxsize $base 785 570
wm minsize $base 1 1
wm minsize $base 1 1
wm overrideredirect $base 0
wm overrideredirect $base 0
...
@@ -4214,7 +4220,7 @@ proc vTclWindow.fdcmd {base} {
...
@@ -4214,7 +4220,7 @@ proc vTclWindow.fdcmd {base} {
###################
###################
toplevel $base -class Toplevel
toplevel $base -class Toplevel
wm focusmodel $base passive
wm focusmodel $base passive
wm geometry $base 282x274+
616+367
wm geometry $base 282x274+
504+229
wm maxsize $base 785 570
wm maxsize $base 785 570
wm minsize $base 1 19
wm minsize $base 1 19
wm overrideredirect $base 0
wm overrideredirect $base 0
...
@@ -4269,7 +4275,7 @@ proc vTclWindow.fdmenu {base} {
...
@@ -4269,7 +4275,7 @@ proc vTclWindow.fdmenu {base} {
###################
###################
toplevel $base -class Toplevel
toplevel $base -class Toplevel
wm focusmodel $base passive
wm focusmodel $base passive
wm geometry $base 288x70+1
93+129
wm geometry $base 288x70+1
03+0
wm maxsize $base 785 570
wm maxsize $base 785 570
wm minsize $base 1 1
wm minsize $base 1 1
wm overrideredirect $base 0
wm overrideredirect $base 0
...
@@ -4361,7 +4367,7 @@ proc vTclWindow.fdtb {base} {
...
@@ -4361,7 +4367,7 @@ proc vTclWindow.fdtb {base} {
###################
###################
toplevel $base -class Toplevel
toplevel $base -class Toplevel
wm focusmodel $base passive
wm focusmodel $base passive
wm geometry $base 90x152+
65+18
0
wm geometry $base 90x152+
0+
0
wm maxsize $base 785 570
wm maxsize $base 785 570
wm minsize $base 1 1
wm minsize $base 1 1
wm overrideredirect $base 0
wm overrideredirect $base 0
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment