====================================== FoxPro Developers Network of San Diego ====================================== FoxDev TipsLetter #03-02 1 February, 2003 Website: Editor: ---------------------------------------------------------------------- CONTENTS: * Calendar * FPDN News * Tech Tips: OOSE Glossary Nick Nikula Detecting When a View is Modified from ProFox Debugging Form Instantiation Steve Settimi * Other Stuff: How to Make a Copyright Symbol Google, the Blind Billionaire Dan Covill Fear from ProFox * Knowledge Base Updates New/Updated KB articles on VFP * Links: Where Can I Find...? * Administrivia ====================================================================== CALENDAR: We've changed our meeting format slightly. Because we're meeting at Sizzler and it's easy for people to take a break whenever they need to, we're doing away with the break and replacing it with a short presentation. The new format for meetings is as follows: 6:30 - 7:30: Introductions and Q & A 7:30 - 7:45: Short presentation 7:45 - 9:00: Main presentation Thu - Feb 13 - Barbara Peisch/Steve Settimi ------------------------------------------------------- Short Presentation - Barbara Peisch: VFP8: Member classes and autoincremented keys. Main Presentation - Steve Settimi: The demo will cover the in's and out's of the VFP 7.0 Database container (DBC) We'll briefly explore the vast realm of the 58 DBC Events, focusing on a few, and how/when/where to use them for different purposes. We'll look at each object of the DBC (1) table, (2) connection , (3) views , and (4) stored procedures using DBSETPROP() and DBGETPROP() functions against each object type. We'll see the use of program file for DBC events and stored procedures. I'll demonstrate how to use the DBC effectively in building forms [assigning classes to fields]. Things to keep in mind with field level rules, record level validation and table triggers (insert, update, delete). We won't be looking at the Upsizing Wizard Thu - March 13 - Eric Lendvai ------------------------------------------------------- *** THIS MEETING IS AT BERG ELECTRIC IN ESCONDIDO *** (See the Website for directions) Main Presentation - Eric Lendvai Integrating Active-X Controls in VFP Overview Real examples on using free Active-X controls, like the Treeview ,RTF viewer, scrollbar and WebBrowser control. Learn how to register the controls programmatically and work around integration problems. This presentation can be viewed by new or experienced VFP programmers. Additional examples of non free controls, like Dynazip will also be presented. Speaker Biography: Eric Lendvai is the President of the Visual FoxPro Developers Group of San Diego and owner of EL SoftWare Inc. He specializes in large to very large corporate applications. ----------------------------- All meetings start at 6:30 pm. Sizzler Meetings: Back room of Murphy Canyon Sizzler: 3755 Murphy Canyon Rd Take I-15 to the Aero Dr exit (South of Balboa) Head West to first traffic light West of freeway Turn Right Sizzler is on the right almost immediately Buy your dinner at Sizzler and we'll have our Q&A session while we eat. PLEASE TRY TO COME EARLY ENOUGH TO ORDER YOUR DINNER BEFORE 6:30! Escondido Meetings: Training room of Bergelectric 2222 Meyers Rd. - Take highway 78 to Nordahl (Just west of I-15) - Go south past Mission - Turn right on Meyers (first right past Mission) - The building is on the right just before Oper Street. ====================================================================== TECH TIPS ====================================================================== OOP KNOWLEDGE BASE by Nick Nikula [Nick submitted this link to a site with an excellent glossary of terminology in Object Oriented Software Engineering.] [Note that OOSE is a specific methodology, one of several competing methods for Object Oriented project specification. DC] ---------------------------------------------------------------------- HAS A VIEW BEEN MODIFIED? from ProFox Q by Jeff Trusty: I have a form with a page-frame and each frame has a parameterized view associated with it. When my form loads, all views are nodata on load. When a page is activated that page's views are requeried. The user needs to be able to make a change to the data on one page but NOT save the data and switch to a different page and back again. When the go back to the page that they made changes, they get a "Buffer contains uncommitted changes" at the requery(). How can I determine if the view's data is dirty so I can not do the requery? A by Bo Durban: Here is some sample code. Hope it helps. DO CASE CASE INLIST(CURSORGETPROP("Buffering"), 2, 3) AND (!EMPTY(CHRTRAN(GETFLDSTATE(-1),"1",""))) ** Row dirty CASE INLIST(CURSORGETPROP("Buffering"), 4, 5) AND (GETNEXTMODIFIED(0) != 0) ** Table dirty OTHERWISE ** Table is clean or no buffering REQUERY() ENDCASE Comment by Anders Altberg: If Buffering=3 (row) and the record pointer hasn't been moved, check with GetFldState(-1). If buffering=5 (table) GetfldState(-1) checks the current row only, but to check the whole table: IF GetNextModified(0,'theView')>0 TableUpdate(1,.T., 'theview') ENDIF Requery('theview') ---------------------------------------------------------------------- FINDING FORM INSTANTIATION ERRORS by Stephen Settimi If you've ever encountered an error message when instantiating an object on a form. Create an object reference to the form first via a variable declaration, then make the call. Type of code that may crash (I notice this when the object making a reference to the form is subclassed. In this case it's 2-deep and is a shape class) [click event] thisform.newobject('container_imagemap_overlay', 'container_imagemap_overlay_muscular','gns.vcx') Error: Object is not contained in a FORM ... that is, the shape, and clearly it is. Resolution: LOCAL oForm as Form && use this to have your intellisense available when not using "thisform" oForm = ag.form_ag oform.newobject('container_imagemap_overlay', 'container_imagemap_overlay_muscular','gns.vcx') && ag is my application object in this case and form_ag I know to be always there. You can also use _Screen.activeform but it is devilish to debug because the "activeform" in the screen reference deactivates by the time you're in debugger. Note: VFP 8 is better than ever! Fort instance, The image class is way expanded (takes even TIFFs), and is the internet browser control is also easier to use, and...and... a must have version, to be sure. s.settimi ====================================================================== OTHER STUFF ====================================================================== HOW TO MAKE A COPYRIGHT SYMBOL ProFox Find a "c", catch it, and then draw a line around it. Be careful though, those c's can really run. Slippery buggers too! Alternately, hold down [ALT] and type "0169". Brad Jones ---------------------------------------------------------------------- GOOGLE, THE BLIND BILLIONAIRE by Dan Covill My latest (Jan/Feb 2003) issue of ACM Interactions has an interesting column by Stephen Pemberton, titled "The Kiss of the Spiderbot". Here's what he said: "The current Web is a terrible mess for accessibility. Try turning off images in your browser next time you use it in order to appreciate what blind people have to deal with." ..... "Looking at my Web site logs, it is clear that at least half of the visitors find the site via Google. And what Google sees is exactly what a blind person sees. Google is ... a billionaire blind user, with millions of friends who listen to its every word. If a blind user can't see your site, neither can Google, and your site will suffer." He gives several examples of things to avoid "if you want Google to like you": * Sites with no searchable content (e.g., Flash) * Text as graphics (Google doesn't do OCR) * Text generated by Javascript (Google won't see it) * Audio content (not searchable) * Changeable sites. "The longer you stay in one place, the better your Google score" ---------------------------------------------------------------------- FEAR from Profox For many people, the perception of a man's home being his castle just isn't valid anymore; instead, folks huddle in their straw houses and listen to an endless stream of big-bad-wolf advisories on the nightly news. Computer games don't cause feelings of alienation and xenophobia; life does a bangup job of that all by itself. ====================================================================== VFP KNOWLEDGE BASE UPDATES ====================================================================== The following KB articles are new or updated, per KBAlertz.com ** None received in January ** How To Look Up These Articles: To get to a specific KB article: a. Go to support.microsoft.com. Search is at left of the page. b. Select "Visual FoxPro" on the drop-down. c. Enter the document number in the textbox below it. d. Click on the green arrow. To Subscribe: Subscribe at . You can specify any MS product to receive alerts on. ====================================================================== LINKS ====================================================================== This is a (semi) permanent list of places to look for technical help when you get blind-sided by the latest urgent requirement. We don't give specific URLs for MSDN articles because (a) they're too long and (b) they change too often! ------------------------------- MSDN ON LINE: There's a ton of stuff here, look at the Magazines tab, and read some of the regular columns. MSDN Library Look in Technical Articles | Visual Studio | Visual FoxPro MSDN Library: "Building Three-Tier Client/Server Applications with Visual FoxPro" ADO MSDN Library: ADO Jumpstart for Microsoft Visual FoxPro Developers John V. Petersen, April 1999 DNA (Distributed interNet Architecture): MSDN On-line: "Top Windows DNA Performance Mistakes and How to Prevent Them" FoxPro 2.6: http://members.aol.com/FoxProResources/fpfp.htm MTS: Microsoft Transaction Server MSDN Library: "Microsoft Transaction Server for Visual FoxPro Developers" ODBC: MSDN Library: "Using Visual FoxPro to Access Remote Data" ODBC drivers are part of MDAC - Microsoft Data Access Components - and are available for download at: "www.microsoft.com/data" VS Installer: MSDN Library: a. "Using Visual Studio Installer for VFP 6.0 Applications" b. "VFP 6.0 and VS Installer Tutorial" VFP Publications: www.advisor.com FoxPro Advisor www.pinpub.com FoxTalk magazine www.hentzenwerke.com Hentzen Publishing (Books, discussion, and downloads) VFP General: msdn.microsoft.com/vfoxpro Microsoft's official VFP home page www.foxcentral.net Joint effort by Microsoft, West-Wind, and the Universal Thread Lots of news and development info. MS Developer Applications Forum on Compuserve http://go.compuserve.com/msdevapps The History of FoxPro (submitted by Steve Settimi) www.foxprohistory.org The Universal Thread http://www.universalthread.com The "Wiki" www.wikis.com fox.wikis.com fox.wikis.com/wc.dll?Wiki~FoxForumWiki Here is the most complete set of FoxPro links you're likely to find: http://www.cetus-links.org/oo_visual_foxpro.html Private websites with useful free info and downloads: www.prolib.de/foxlinks.afp wOOdy Wondzinski www.honeypass.com Allen Pollard www.ukfug.org.uk British user group www.lafox.org LA user group www.pinter.com/ Les Pinter www.vfug.org/ Virtual Fox User Group www.leafe.com Ed Leafe, ProFox listserve www.jamesbooth.com www.foxforum.com www.foxfolk.com www.foxite.com (registration required) A group of Dutch developers - refreshingly geeky. (Don't be put off by the registration - they're not selling anything.) www.stevenblack.com www.craigberntson.com WEB Development: These products all work well with VFP. AFP www.afpweb.com and www.afpages.com DotFox www.elsoftware.com FoxWeb www.foxweb.com Web Connection www.west-wind.com X-WORKS www.x-works.com Windows General Win32 API (with VFP examples) XML - What's New in XML for Microsoft Windows 2000 See also OLE DB drivers for XML in MDAC 2.6 at "microsoft.com/data" [Contributions solicited. DC] --------------------------Administrivia------------------------------- This newsletter is a service to all FoxPro developers, provided without charge by the FoxPro Developers Network of San Diego (FPDN). Anyone may subscribe (or unsubscribe) at our web site . The link is on the home page. The Resources button on the website will take you to the back issues of the newsletter. The editor (Dan Covill) is solely responsible for the content. E-mail him with YOUR tips, comments, or complaints. Editor: Dan Covill 858-272-2448 dcovill@acm.org Board of Directors: Eric Lendvai - President 760-734-4929 eric@elsoftware.com Art Bergquist - Vice Pres 760-740-0428 abergquist@sbcglobal.net Thad V'Soske - Secretary 619-544-9900 tvsoske@yahoo.com Barbara Peisch - Treasurer 760-729-9607 barbara@peisch.com Claude Nikula - Director 619-615-6318 crndev@cox.net Lou Syracuse - Director lsyracuse@delmardb.com Dan Covill - Director 858-272-2448 dcovill@acm.org ----------------------------------------------------------------------