---------------------------------------------------------------------------- PROJECT: USER v1.0 - 04/24/93 FILENAME: USER.TXT Last Date: April 24, 1993 AUTHOR: Daniel Ambrose * CIS 71062,523 COMPANY: Ambrose & Muckerman 1386 South Fifth Street St. Charles, MO 63301 Tel 314 946-6222 Fax 314 946-8717 ---------------------------------------------------------------------------- 1 DESCRIPTION User is a Turbo Vision and Paradox Engine User Interface Demo program. User is a true multi-user example program that teaches how to integrate the Paradox engine with Turbo Vision. 2 COPYRIGHT NOTICE You may use this material freely and, hopefully, post any comments/corrections/enhancements to me at the above address. If you DO modify or enhance any of this code, please send any such changes to me for incorporation into a future version. Any such enhancements will be DONATED, without expectation of compensation or incorporation into future versions. 3 LIST OF ALL OTHER FILES DEBUG CPP 1216 4-24-93 3:32p DEBUG H 862 4-24-93 3:32p EVENTCMD H 158 4-24-93 3:32p LISTVIEW CPP 1685 4-24-93 3:32p LISTVIEW H 360 4-24-93 3:32p PX H 749 4-24-93 3:32p PX1 CPP 3628 4-24-93 3:32p TDE CPP 27936 4-24-93 3:32p TDE H 15046 4-24-93 3:32p TDECLUST CPP 8329 4-24-93 3:32p TDEDATE CPP 6639 4-24-93 3:32p TDEFLAGS H 4224 4-24-93 3:32p TDENUMS CPP 4673 4-24-93 3:32p TDEPHONE CPP 6315 4-24-93 3:32p TTYWIN CPP 1108 4-24-93 3:32p TTYWIN H 533 4-24-93 3:32p USER CPP 5821 4-24-93 3:32p USER DSK 66 4-24-93 3:33p USER PRJ 11025 4-24-93 3:32p USER1 CPP 16510 4-24-93 3:32p USER1 H 1614 4-24-93 3:32p 4 VIRTUAL LIST-VIEWER 4.1 User includes a derived TListViewer view which teaches the concept of a "virtual" view into a database. For more than 65535 records all that is needed is to modify TListViewer from ints to longs. In the past, I did try to upload the described TListViewer (long int) modification but it was rejected by a Borland SYSOP because it contained Borland modified source code. So, this demo uses the stock TListViewer. 4.2 If your concerned about the 65535 record limitation it is important that you realize how very easy it is to over come the 65535 limitation. All that is required is for one to modify TListViewer and TScrollBar from short integers to long integers. This modification should only take an hour or two if you've never done it before. WARNING: Watch out for the min() and max() macros which take short integer arguments. Since they are macros they are NOT TYPE CHECKED so you WILL NOT get a compiler error and will probably pull your hair out trouble shooting. Don't ask me if I made this mistake or how long it took me to figure it out! 5 REFRESH Yes, this demo does use the Paradox refresh system call to refresh the data in real time. Thus, you can run multiple copies and watch other persons modify the data via User or Paradox Interactive and you will see the data refresh in real time from User. How is refresh done ? User over rides TProgram::idle() and once a second, function User->idle() sends a Broadcast message cmRefresh. The derived TListViewer handleEvent function sees this event and causes a call to PXNetRefresh and then drawView. 6 MULTI USER RECORD LOCKING Yes this demo does lock the record when you are editing or waiting for delete confirmation. Try it! Create a record and then edit it. Now, from another workstation run a 2nd copy of User. Try to edit the same record. You can't because the record locking is used. 7 GETTING STARTED 7.1 From the BC++ IDE you need to configure the user project (USER.PRJ) include and library directories. I use a different directory structure then that of the Borland default. 7.2 User was compile and tested with Paradox Engine 3.01. Ver 3.01 was released just a few weeks ago. I don't know if User works with Paradox engine versions prior to 3.01! 7.3 Be sure to compile and/or include PXMSG.CPP in the User project file. User module PX1.CPP makes a call to Paradox engine function PXOopErrMsg(int errCode) located in module PXMSG.CPP (default \PXENG30\C\SOURCE\PXMSG.CPP) 7.4 User includes portions from TDE.ZIP from BCPPDOS LIB 11. TDD.ZIP is a Turbo Vision field validation user input library uploaded by Jeff Penrose, CIS 71043,3727. For an original copy of TDE.ZIP search the BCPPDOS Turbo Vision library. 7.5 PROBLEMS WITH COMPILATION If you have any problems compiling User than feel free to ask me any questions via Email - Dan Ambrose - 71062,513 8 PARADOX TABLE At successful Paradox engine initialization User will attempt to create a table called USER. You can run both User and Paradox interactive simultaneously to examine the data in real time. 9 COMMAND LINE ARGUMENTS A program statup from the DOS command line User does check for 3 different command line arguments. They are: DEBUG Turns on debugging; this inserts a TTY window and causes various trace messages to appear. NET= Initializes the Paradox engine for network operation and sets the path of the directory containing the Paradox network control file. Example: NET=F:\PDOXNET WORK= Sets the path of the directory where User will create and use the paradox table User.db Example: WORK=F:\USER 10 SINGLE USER MODE If you run USER on a workstation without network capability then do not specify the -NET command line switch. If you do not use the command line option '-NET' then User will start the Paradox engine in Non-network mode. Otherwise, if you do use the -NET option then User will expect a network to be up, running and accessible. 11 HAVE FUN I hope you like this demo. I also hope you learn from it. Please let me know what you think ? For questions, comments, tips and suggestions please don't hesitate to contact me. Best regards, Dan Ambrose * CIS 71062,523