SlideShare a Scribd company logo
1 of 29
JavaScript for FoxPro
    Developers

     Mike Feltman
    F1 Technologies
Who Am I?
   President F1 Technologies since 1990
   Co-author Visual FoxExpress
   Consultant
   Xbase Developer since dBase III/FoxBase
    1987
   Web Developer since 1994
   JavaScript for about 2-3 years
Agenda
   Why JavaScript?
   VFP vs. JavaScript
   JS Basics
   JS Syntax & VFP Concordance
   JS OOP
   AJAX w/ VFP
Why JavaScript?
   Web 2.0
   Great way to take VFP Skills to the Web
   In demand
   Cross-Platform
   Relatively easy for VFP Developers to pick
    up
Capabilities
VFP                              JavaScript
     Access to File System           No File System Access
     Database Engine                 Can’t read or write to
                                       files on server
     Network access limited
      only by network security        Can’t read or write to
                                       files on client
     Hundreds of commands
      & functions                     No network access
                                      Cannot access pages
                                       on another domain
                                      Around 50 command
                                       and functions
Runtime Environment
VFP                               JavaScript
     Operating System:                Operating System:
          Windows                          Windows, MAC, Linux,
      Version:                               Unix, etc.
          VFP Compiler Version     Version:
                                            Browser Controlled:
                                             Firefox, Safari, Chrome,
                                             IE, Opera, etc.
                                            1.5 current “standard”
Development Environment
VFP                             JavaScript
     Designers: Editor,              Designers: n/a, Requires 3rd
      Form Class Designer,             Party tools. No definitive
      Report Write, Class              IDE
      Browser, etc. built-in.         Debugger: virtually nothing
                                       native. Varies by browser,
     Debugger: Integrated             Firebug for Firefox and
      debugger, with Trace,            Debugbar for IE.
      Watch, Locals, Output,          JavaScript Console various
      Call Stack                       other Command Window
     Command Window                   like utilities.
Language Features
VFP                              JavaScript
     Dynamically Typed               Dynamically Typed
     Case Insensitive                Case Sensitive
     “Second Class” Functions        First Class Functions
     No Nested Functions             Nested Functions
     Compiled or Interpreted         Interpreted
     Procedural                      Procedural
     OOP: Class Based                OOP: Prototype based
     “1 based”                       “0 based”
Syntax
VFP                        JavaScript
     Line Terminator:          Line Terminator: semi-
      carriage return            colon
     Line Continuation:        Line Continuation: n/a
      semi-colon
Math Operators

Function            VFP      JavaScript
Addition            +        +
Subtraction         -        -
Multiplication      *        *
Division            /        /
Modulus             MOD()    %
Unary addition      x=x+1    x++
Unary subtraction   x=x-1    x--
Assignment Operators
Function         VFP      JavaScript
Equality         =        =
Addition         n/a      +=

Subtraction      n/a      -=
Multiplication   n/a      *=
Division         n/a      /=
Modulus          n/a      %=
Comparison Operators

Function         VFP         JavaScript
Equality         =,==        ==
Greater than     >, >=       >, >=
Less Than        <, <=       <, <=
Identical & of   n/a         ===
Same Type
Not Identical    !=,!==,<>   !==
Inline IF        IIF()       (condition)?true
                             value: false value
Logical Operators
Function      VFP        JavaScript
And           AND        &&
Or            OR         ||

Not           NOT, !     !
Data Types
VFP                      JavaScript
 Character, Memo,          String, Numeric,
  Numeric, Memo,             Boolean, Object, Array
  Integer, Currency,
  Float, Double, Data,
  DateTime, Object,
  Screen, General,
  Logical, Blob, Array
Constructs: If
VFP:                  JavaScript:
  IF <expr>             if (logical expression)
    statement(s)        {statement(s)}
  ELSE                  else if (logical
    statement(s)           expression)
  ENDIF                 {statements}
                        else
                        {statement(s)}
Constructs: While
VFP                    JavaScript
 DO WHILE expression     while (expression)
  statement(s)           {
 ENDDO
                            statement(s)
                         }

 EXIT                  break
 LOOP                  continue
Constructs: For
VFP                      JavaScript
 FOR var = n to n STEP n   for
  statements               (var=startvalue;var<=
 ENDFOR                    endvalue;var=var+inc
                           rement)
                           {
                               statement(s)
                           }
Constructs: CASE
VFP               JavaScript
 DO CASE            switch (expression)
 CASE condition     {
                    case value:
  statements
                      statement(s)
 OTHERWISE
                      break;
  statements
                    default:
 ENDCASE              statement(s)
                    }
VFP JavaScript Event
            Concordance
JavaScript             VFP
  onabort               n/a
  onblur                lostfocus
  onchange              interactivechange
  onclick               click
  ondblclick            dblclick
  onerror               ON ERROR, Error
  onfocus               gotfocus
  onkeydown, onkeyup    keypress
VFP JavaScript Event
            Concordance
JavaScript         VFP
  onload             load, init
  onmousedown        mousedown
  onmousemove        mousemove
  onmouseout         mouseleave
  onmouseover        mouseenter
  onmouseup          mouseup
  onreset            n/a
VFP JavaScript Event
            Concordance
JavaScript         VFP
  onresize           resize
  onselect           n/a
  onsubmit           n/a
  onunload           unload
Event Binding
VFP                    JavaScript
 Inline                  Inline
 BindEvents()            document.observe()

                        .addEventListener(‘ev
                        ent’,function,false)
OOP
VFP                         JavaScript
 Class Based                  Prototype based
 Objects are instances of     Objects are based on a
   classes                      prototype
Object Model
VFP              JavaScript
 _SCREEN           DOM (Document Object
 _VFP                Model)
                   document
                   window
                   Browser Dependent
Using External Code
VFP                  JavaScript
 SET PROCEDURE         <script … src=‘file
 SET CLASS LIBRARY       name’>
3rd Party
VFP                             JavaScript (all free)
     Only 1 good                  Prototype &
      framework                      Script.aculo.us (&
     Sort of expensive (but         scripteka.com)
      well worth it – really)      JQuery
                                   YUI (Yahoo User
                                     Interface)
                                   Adobe Spry
                                   Google
JavaScript Resources
   JavaScript
       http://javascript.crockford.com/
       The JavaScript Anthology: 101 Essential Tips,
        Tricks & Hacks (Sitepoint.com)
       http://www.javascript.com/
       http://javascript.internet.com/
       http://www.javascriptkit.com/
       http://www.w3schools.com/jsref/default.asp
   Prototypejs.org
       Prototype and script.aculo.us: You never knew JavaScript could do this!
        (PragProg.com)
       Script.aculo.us
Conclusion
   JavaScript is a flexible, powerful language
   JavaScript should be easy for VFP
    developers to learn
   Free 3rd Party Tools make JavaScript
    much easier
Thank You
   Mikefeltman at f1tech dot com
   http://www.f1tech.com
   http://f1technologies.blogspot.com/
   419-255-6366

More Related Content

What's hot

Ruby On Rails Presentation
Ruby On Rails PresentationRuby On Rails Presentation
Ruby On Rails PresentationChanHan Hy
 
Error handling in visual fox pro 9
Error handling in visual fox pro 9Error handling in visual fox pro 9
Error handling in visual fox pro 9Mike Feltman
 
Integrating symfony and Zend Framework (PHPBarcelona 2009)
Integrating symfony and Zend Framework (PHPBarcelona 2009)Integrating symfony and Zend Framework (PHPBarcelona 2009)
Integrating symfony and Zend Framework (PHPBarcelona 2009)Stefan Koopmanschap
 
Merb presentation at ORUG
Merb presentation at ORUGMerb presentation at ORUG
Merb presentation at ORUGMatt Aimonetti
 
PHP Tour 2016 Phinx Presentation
PHP Tour 2016 Phinx PresentationPHP Tour 2016 Phinx Presentation
PHP Tour 2016 Phinx PresentationRob Morgan
 
DLW Europe - JavaScript Tooling
DLW Europe - JavaScript ToolingDLW Europe - JavaScript Tooling
DLW Europe - JavaScript ToolingFabian Jakobs
 
SydPHP March 2012 Meetup
SydPHP March 2012 MeetupSydPHP March 2012 Meetup
SydPHP March 2012 MeetupGraham Weldon
 
RIA Platform Comparison
RIA Platform ComparisonRIA Platform Comparison
RIA Platform ComparisonOliver Steele
 
Rails Vs CakePHP
Rails Vs CakePHPRails Vs CakePHP
Rails Vs CakePHPGautam Rege
 
WDN08 Silverlight
WDN08 SilverlightWDN08 Silverlight
WDN08 Silverlightwsmith67
 
Exploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQLExploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQLBarry Jones
 
Webpack & EcmaScript 6 (Webelement #32)
Webpack & EcmaScript 6 (Webelement #32)Webpack & EcmaScript 6 (Webelement #32)
Webpack & EcmaScript 6 (Webelement #32)srigi
 
What is the Responsibility of Plugin Developers?
What is the Responsibility of Plugin Developers?What is the Responsibility of Plugin Developers?
What is the Responsibility of Plugin Developers?Takayuki Miyoshi
 
Подталкиваем PHP к пределу возможностей, Michael Armstrong (lite speed techno...
Подталкиваем PHP к пределу возможностей, Michael Armstrong (lite speed techno...Подталкиваем PHP к пределу возможностей, Michael Armstrong (lite speed techno...
Подталкиваем PHP к пределу возможностей, Michael Armstrong (lite speed techno...Ontico
 
Glance rebol
Glance rebolGlance rebol
Glance rebolcrazyaxe
 
[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...
[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...
[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...PROIDEA
 

What's hot (20)

Web 101
Web 101Web 101
Web 101
 
Ruby On Rails Presentation
Ruby On Rails PresentationRuby On Rails Presentation
Ruby On Rails Presentation
 
Error handling in visual fox pro 9
Error handling in visual fox pro 9Error handling in visual fox pro 9
Error handling in visual fox pro 9
 
Integrating symfony and Zend Framework (PHPBarcelona 2009)
Integrating symfony and Zend Framework (PHPBarcelona 2009)Integrating symfony and Zend Framework (PHPBarcelona 2009)
Integrating symfony and Zend Framework (PHPBarcelona 2009)
 
Merb presentation at ORUG
Merb presentation at ORUGMerb presentation at ORUG
Merb presentation at ORUG
 
PHP Tour 2016 Phinx Presentation
PHP Tour 2016 Phinx PresentationPHP Tour 2016 Phinx Presentation
PHP Tour 2016 Phinx Presentation
 
DLW Europe - JavaScript Tooling
DLW Europe - JavaScript ToolingDLW Europe - JavaScript Tooling
DLW Europe - JavaScript Tooling
 
SydPHP March 2012 Meetup
SydPHP March 2012 MeetupSydPHP March 2012 Meetup
SydPHP March 2012 Meetup
 
RIA Platform Comparison
RIA Platform ComparisonRIA Platform Comparison
RIA Platform Comparison
 
Rails Vs CakePHP
Rails Vs CakePHPRails Vs CakePHP
Rails Vs CakePHP
 
Phalcon overview
Phalcon overviewPhalcon overview
Phalcon overview
 
WDN08 Silverlight
WDN08 SilverlightWDN08 Silverlight
WDN08 Silverlight
 
Exploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQLExploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQL
 
Language Barriers
Language BarriersLanguage Barriers
Language Barriers
 
Webpack & EcmaScript 6 (Webelement #32)
Webpack & EcmaScript 6 (Webelement #32)Webpack & EcmaScript 6 (Webelement #32)
Webpack & EcmaScript 6 (Webelement #32)
 
What is the Responsibility of Plugin Developers?
What is the Responsibility of Plugin Developers?What is the Responsibility of Plugin Developers?
What is the Responsibility of Plugin Developers?
 
Подталкиваем PHP к пределу возможностей, Michael Armstrong (lite speed techno...
Подталкиваем PHP к пределу возможностей, Michael Armstrong (lite speed techno...Подталкиваем PHP к пределу возможностей, Michael Armstrong (lite speed techno...
Подталкиваем PHP к пределу возможностей, Michael Armstrong (lite speed techno...
 
Glance rebol
Glance rebolGlance rebol
Glance rebol
 
RubyonRails
RubyonRailsRubyonRails
RubyonRails
 
[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...
[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...
[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...
 

Similar to Feltman js4 vfp

In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript AppsIn Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript AppsSpike Brehm
 
WDB005.1 - JavaScript for Java Developers (Lecture 1)
WDB005.1 - JavaScript for Java Developers (Lecture 1)WDB005.1 - JavaScript for Java Developers (Lecture 1)
WDB005.1 - JavaScript for Java Developers (Lecture 1)Igor Khotin
 
Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013Rack Lin
 
Intro to Functional Programming
Intro to Functional ProgrammingIntro to Functional Programming
Intro to Functional ProgrammingJordan Parmer
 
Modern Frontend Technology
Modern Frontend TechnologyModern Frontend Technology
Modern Frontend TechnologyShip Hsu
 
imperative programming language, java, android
imperative programming language, java, androidimperative programming language, java, android
imperative programming language, java, androidi i
 
TorqueBox at DC:JBUG - November 2011
TorqueBox at DC:JBUG - November 2011TorqueBox at DC:JBUG - November 2011
TorqueBox at DC:JBUG - November 2011bobmcwhirter
 
It pro dev_birbilis_20101127_en
It pro dev_birbilis_20101127_enIt pro dev_birbilis_20101127_en
It pro dev_birbilis_20101127_enGeorge Birbilis
 
General Assembly Workshop: Advanced JavaScript
General Assembly Workshop: Advanced JavaScriptGeneral Assembly Workshop: Advanced JavaScript
General Assembly Workshop: Advanced JavaScriptSpike Brehm
 
Reusando componentes Zope fuera de Zope
Reusando componentes Zope fuera de ZopeReusando componentes Zope fuera de Zope
Reusando componentes Zope fuera de Zopementtes
 
Kann JavaScript elegant sein?
Kann JavaScript elegant sein?Kann JavaScript elegant sein?
Kann JavaScript elegant sein?jbandi
 
Oscon2007 Windmill
Oscon2007 WindmillOscon2007 Windmill
Oscon2007 Windmilloscon2007
 
Hinkmond's JavaFX Mobile Dojo
Hinkmond's JavaFX Mobile DojoHinkmond's JavaFX Mobile Dojo
Hinkmond's JavaFX Mobile DojoStephen Chin
 
The Parenscript Common Lisp to JavaScript compiler
The Parenscript Common Lisp to JavaScript compilerThe Parenscript Common Lisp to JavaScript compiler
The Parenscript Common Lisp to JavaScript compilerVladimir Sedach
 
XAML: One Language to Rule Them All
XAML: One Language to Rule Them AllXAML: One Language to Rule Them All
XAML: One Language to Rule Them AllFrank La Vigne
 

Similar to Feltman js4 vfp (20)

In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript AppsIn Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
 
WDB005.1 - JavaScript for Java Developers (Lecture 1)
WDB005.1 - JavaScript for Java Developers (Lecture 1)WDB005.1 - JavaScript for Java Developers (Lecture 1)
WDB005.1 - JavaScript for Java Developers (Lecture 1)
 
Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013
 
Intro to Functional Programming
Intro to Functional ProgrammingIntro to Functional Programming
Intro to Functional Programming
 
slides-students-C03.pdf
slides-students-C03.pdfslides-students-C03.pdf
slides-students-C03.pdf
 
Eureka moment
Eureka momentEureka moment
Eureka moment
 
Modern Frontend Technology
Modern Frontend TechnologyModern Frontend Technology
Modern Frontend Technology
 
imperative programming language, java, android
imperative programming language, java, androidimperative programming language, java, android
imperative programming language, java, android
 
Difference between php and node
Difference between php and nodeDifference between php and node
Difference between php and node
 
TorqueBox at DC:JBUG - November 2011
TorqueBox at DC:JBUG - November 2011TorqueBox at DC:JBUG - November 2011
TorqueBox at DC:JBUG - November 2011
 
It pro dev_birbilis_20101127_en
It pro dev_birbilis_20101127_enIt pro dev_birbilis_20101127_en
It pro dev_birbilis_20101127_en
 
General Assembly Workshop: Advanced JavaScript
General Assembly Workshop: Advanced JavaScriptGeneral Assembly Workshop: Advanced JavaScript
General Assembly Workshop: Advanced JavaScript
 
Reusando componentes Zope fuera de Zope
Reusando componentes Zope fuera de ZopeReusando componentes Zope fuera de Zope
Reusando componentes Zope fuera de Zope
 
Kann JavaScript elegant sein?
Kann JavaScript elegant sein?Kann JavaScript elegant sein?
Kann JavaScript elegant sein?
 
Oscon2007 Windmill
Oscon2007 WindmillOscon2007 Windmill
Oscon2007 Windmill
 
Isomorphic apps
Isomorphic appsIsomorphic apps
Isomorphic apps
 
Hinkmond's JavaFX Mobile Dojo
Hinkmond's JavaFX Mobile DojoHinkmond's JavaFX Mobile Dojo
Hinkmond's JavaFX Mobile Dojo
 
The Parenscript Common Lisp to JavaScript compiler
The Parenscript Common Lisp to JavaScript compilerThe Parenscript Common Lisp to JavaScript compiler
The Parenscript Common Lisp to JavaScript compiler
 
Laravel level 0 (introduction)
Laravel level 0 (introduction)Laravel level 0 (introduction)
Laravel level 0 (introduction)
 
XAML: One Language to Rule Them All
XAML: One Language to Rule Them AllXAML: One Language to Rule Them All
XAML: One Language to Rule Them All
 

Feltman js4 vfp

  • 1. JavaScript for FoxPro Developers Mike Feltman F1 Technologies
  • 2. Who Am I?  President F1 Technologies since 1990  Co-author Visual FoxExpress  Consultant  Xbase Developer since dBase III/FoxBase 1987  Web Developer since 1994  JavaScript for about 2-3 years
  • 3. Agenda  Why JavaScript?  VFP vs. JavaScript  JS Basics  JS Syntax & VFP Concordance  JS OOP  AJAX w/ VFP
  • 4. Why JavaScript?  Web 2.0  Great way to take VFP Skills to the Web  In demand  Cross-Platform  Relatively easy for VFP Developers to pick up
  • 5. Capabilities VFP JavaScript  Access to File System  No File System Access  Database Engine  Can’t read or write to files on server  Network access limited only by network security  Can’t read or write to files on client  Hundreds of commands & functions  No network access  Cannot access pages on another domain  Around 50 command and functions
  • 6. Runtime Environment VFP JavaScript  Operating System:  Operating System:  Windows  Windows, MAC, Linux, Version: Unix, etc.  VFP Compiler Version Version:  Browser Controlled: Firefox, Safari, Chrome, IE, Opera, etc.  1.5 current “standard”
  • 7. Development Environment VFP JavaScript  Designers: Editor,  Designers: n/a, Requires 3rd Form Class Designer, Party tools. No definitive Report Write, Class IDE Browser, etc. built-in.  Debugger: virtually nothing native. Varies by browser,  Debugger: Integrated Firebug for Firefox and debugger, with Trace, Debugbar for IE. Watch, Locals, Output,  JavaScript Console various Call Stack other Command Window  Command Window like utilities.
  • 8. Language Features VFP JavaScript  Dynamically Typed  Dynamically Typed  Case Insensitive  Case Sensitive  “Second Class” Functions  First Class Functions  No Nested Functions  Nested Functions  Compiled or Interpreted  Interpreted  Procedural  Procedural  OOP: Class Based  OOP: Prototype based  “1 based”  “0 based”
  • 9. Syntax VFP JavaScript  Line Terminator:  Line Terminator: semi- carriage return colon  Line Continuation:  Line Continuation: n/a semi-colon
  • 10. Math Operators Function VFP JavaScript Addition + + Subtraction - - Multiplication * * Division / / Modulus MOD() % Unary addition x=x+1 x++ Unary subtraction x=x-1 x--
  • 11. Assignment Operators Function VFP JavaScript Equality = = Addition n/a += Subtraction n/a -= Multiplication n/a *= Division n/a /= Modulus n/a %=
  • 12. Comparison Operators Function VFP JavaScript Equality =,== == Greater than >, >= >, >= Less Than <, <= <, <= Identical & of n/a === Same Type Not Identical !=,!==,<> !== Inline IF IIF() (condition)?true value: false value
  • 13. Logical Operators Function VFP JavaScript And AND && Or OR || Not NOT, ! !
  • 14. Data Types VFP JavaScript Character, Memo, String, Numeric, Numeric, Memo, Boolean, Object, Array Integer, Currency, Float, Double, Data, DateTime, Object, Screen, General, Logical, Blob, Array
  • 15. Constructs: If VFP: JavaScript: IF <expr> if (logical expression) statement(s) {statement(s)} ELSE else if (logical statement(s) expression) ENDIF {statements} else {statement(s)}
  • 16. Constructs: While VFP JavaScript DO WHILE expression while (expression) statement(s) { ENDDO statement(s) } EXIT break LOOP continue
  • 17. Constructs: For VFP JavaScript FOR var = n to n STEP n for statements (var=startvalue;var<= ENDFOR endvalue;var=var+inc rement) { statement(s) }
  • 18. Constructs: CASE VFP JavaScript DO CASE switch (expression) CASE condition { case value: statements statement(s) OTHERWISE break; statements default: ENDCASE statement(s) }
  • 19. VFP JavaScript Event Concordance JavaScript VFP onabort n/a onblur lostfocus onchange interactivechange onclick click ondblclick dblclick onerror ON ERROR, Error onfocus gotfocus onkeydown, onkeyup keypress
  • 20. VFP JavaScript Event Concordance JavaScript VFP onload load, init onmousedown mousedown onmousemove mousemove onmouseout mouseleave onmouseover mouseenter onmouseup mouseup onreset n/a
  • 21. VFP JavaScript Event Concordance JavaScript VFP onresize resize onselect n/a onsubmit n/a onunload unload
  • 22. Event Binding VFP JavaScript Inline Inline BindEvents() document.observe() .addEventListener(‘ev ent’,function,false)
  • 23. OOP VFP JavaScript Class Based Prototype based Objects are instances of Objects are based on a classes prototype
  • 24. Object Model VFP JavaScript _SCREEN DOM (Document Object _VFP Model) document window Browser Dependent
  • 25. Using External Code VFP JavaScript SET PROCEDURE <script … src=‘file SET CLASS LIBRARY name’>
  • 26. 3rd Party VFP JavaScript (all free)  Only 1 good Prototype & framework Script.aculo.us (&  Sort of expensive (but scripteka.com) well worth it – really) JQuery YUI (Yahoo User Interface) Adobe Spry Google
  • 27. JavaScript Resources  JavaScript  http://javascript.crockford.com/  The JavaScript Anthology: 101 Essential Tips, Tricks & Hacks (Sitepoint.com)  http://www.javascript.com/  http://javascript.internet.com/  http://www.javascriptkit.com/  http://www.w3schools.com/jsref/default.asp  Prototypejs.org  Prototype and script.aculo.us: You never knew JavaScript could do this! (PragProg.com)  Script.aculo.us
  • 28. Conclusion  JavaScript is a flexible, powerful language  JavaScript should be easy for VFP developers to learn  Free 3rd Party Tools make JavaScript much easier
  • 29. Thank You  Mikefeltman at f1tech dot com  http://www.f1tech.com  http://f1technologies.blogspot.com/  419-255-6366