Contents:

 

 

Introduction


News blog


What is Servoy?


Getting Started


Comparison Servoy/VFP


Performance


How-To's

 

Code Reference

 

VFP2Servoy Toolkit

 

 

Contact / feedback

 

 

 

 

 

 

 

 

 

 

 

 

 

 

News blog



 

2012.07.16 »

 

Added a HOW TO on using Client Design Mode. In this walkthrough we will build a generic handler for customizing forms at runtime and saving the changes to the forms using just a few methods.


 

2012.06.12 »

 

Did you know that selecting a value from a picklist form and returning it to the calling form is even simpler in Servoy than in VFP? If you want to know how then follow this 3-step tutorial.


 

2012.06.11 »

 

Today I have released version 1.00 of the VFP plugin on ServoyForge! Check it out. Installation is as simple as dropping the vfp.jar in your ..\servoy\application_server\plugins\ folder.


 

2012.06.01 »

 

ServoyWorld 2012! Very interesting stuff and good to see everybody again. Servoy asked me to do a session 5 minutes before it started after a speaker got sick. It went quite well because I had recently figured out all the Servoy equivalent code to the VFP data commands. I will add them to the VFP plugin in a later stage. The session from ProjecTools was an eye-opener with regard to the solution model which will definitely get more attention from me now.


 

2012.05.31 »

 

As you may have heard: the JBS Group has been founded! The JBS Group is a collaboration between Robert Ivens (founder of Roclasi and co-founder of ServoyForge), Marc Boegem (founder of Solutiative) and myself (founder of Intrasoft and initiator for VisualFoxpro.com).


 

2012.02.17 »

 

Just modified the STR() function after Alessandro Stefanoni pointed out to me that it currently does not work exactly the same as in VFP. In VFP the STR() function returns a number string without a thousands separator so I changed it to mimic this behaviour more closely. I also added a parameter lSeparator that when set to True does include the separator if you like it that way.


 

2012.01.04 »

 

Happy New Year! I will be adding some data commands and functions to the vfp2servoy toolkit and the code reference in the next month or two. I will also add these to the vfp plugin that I am working on. This will allow you to lookup VFP commands/functions and insert Servoy sample code simular to the way you use JSLib. When finished I will add it to ServoyForge. For now I have added the GO TOP, GO BOTTOM, GOTO and SKIP commands.

 

2011.12.13 »

 

Since the release of Servoy 6.0, using Visual FoxPro data has become even easier. The new jdbc-driver is now supplied by default. Using free tables without a primary key? No problem, read all about the workarounds in the new how to - use VFP data in Servoy.

 

2011.12.08 »

 

In addition to the how-to on provisioning a server in IBM's SmartCloud Enterprise a new how-to has been added: How to deploy a Servoy Solution using Servoy Application Server. If you are deploying from a regular server it will also be useful because the principals are the same.

 

2011.12.07 »

 

At Servoy World 2011 I did a presentation at Fox Night together with Ken Levy and Woody. I showed the results of some pretty extensive performance testing and if you where not there than you can review them now as well. Enjoy!

 

2011.12.01 »

 

First new addition to the code reference in quite a while. I added some samples that show you how to use several types of form references such as thisform, thereby comparing VFP and Servoy.

 

2011.11.23 »

 

I read an excellent article on Servoy license pricing by Gordon King. Check out the article and the rest of his "myServoy" blog.

 

2011.11.19 »

 

Update from ServoyCamp 2011: Lots of interesting topics here at Servoy World! I am currently very much occupied with ongoing projects but will try to keep working on the VFP plugin. I did a demo of the currently implemented functionality at ServoyCamp and will post it for free on ServoyForge as soon as it is finished. What it will allow you to do is lookup a VFP command or function in the plugin and insert a Servoy code sample to get the same functionality in Servoy/JavaScript code.

 

2011.10.25 »

 

After simplifying the DTOS() function last week I also simplified the DTOC() function.

 

2011.10.19 »

 

The DTOS() function was simplified thanks tot the contribution of Stefanoni Alessandro.

 

2011.10.10 »

 

You haven't heard from me in a while but that doesn't mean I haven't been doing anything. On the contrary, I have attended the seminar at IBM on cloud computing which was very interesting. Especially because we also got a presentation from STB about SCRUM. A revolutionary software development method that will certainly appeal to Visual FoxPro developers since it encourages Agile development which we have been doing for ever. A very nice book on this subject, which you can read in two or three hours, is "De kracht van Scrum" (Sorry folks, dutch only at this time)!
Besides that I have been studying Java and I am working on a vfp plugin for Servoy. I hope to tell you all about it at ServoyCamp! If you haven't registered yet please do so, it will be fun!

 

2011.9.2 »

 

Based on the contribution by Rainer R. Greim from Germany I added a page on connecting to mySQL.

 

2011.8.31 »

 

My Servoy Server is happily running in IBM's Smart Cloud. If you want to testdrive as well then check-out How to deploy Servoy in IBM's Smart Cloud.

 

2011.8.30 »

 

Jeee. Finally received my IBM Smart Cloud Credentials! You can expect a detailed how-to description in the next few days on getting the Servoy image up and running..

 

2011.7.15 »

 

I've added a new walk-through on using MS SQL Server as a database with Servoy: How to create a MS SQL Server connection.

 

2011.7.13 »

 

Hi there! It's been a while because I've been quite busy. I am currently looking into the IBM/Servoy SmartCloud Enterprise virtual server options that let you setup your own Servoy Server in the Cloud using a predefined Servoy installation in a breeze. As soon I get things up and running I will put a detailed instruction page on this site so you can check it out for yourself.

As you could read in today's newsletter from Servoy July 28th (5-9 PM) the official Servoy 6 release will be celebrated at HQ with a Launch Party/BBQ. Maybe I'll see you there!

 

2011.5.26 »

 

Just added the functions for showing the machine ID and Username: SYS(0) and ID() with thanks to wOOdy and Alexander Schwedler! Also added the SYS(2) function for showing the number of seconds that elapsed since midnight.

 

2011.4.27 »

 

Hi! It's been a while but I've been enjoying the Easter days and the nice weather in Holland... Please take note of the following: on May 18th Jan Aleman (CEO Servoy) and I will host a Workshop for Dutch Visual FoxPro developers.

 

2011.4.20 »

 

The most important functions have been added to the VFP2Servoy Toolkit. In the next few weeks we will concentrate a little more on what's very important to most VFP programmers: data-handling. Let's start out with a basic SCAN...ENDSCAN operation in which we REPLACE the contents of a field.

 

2011.4.19 »

 

The SECONDS() function returns the number of seconds elapsed since midnight of the current time. STREXTRACT() is a very usefile function to retrieve a string between delimiters (for example XML-tags).

 

2011.4.18 »

 

The VFP PCOUNT() function is simular to the PARAMETERS() function in VFP. In fact, in the Vfp2Servoy Toolkit they are exactly the same. Also the LOCK() and RLOCK() functions have been added as well as the RECCOUNT() function.

 

2011.4.15 »

 

Just for fun and your convenience I added VFP's implementation of the MESSAGEBOX() function to the VFP2Servoy Toolkit. Also I added a msg() function that does not exist in VFP (which is why it is not capitalized) and can be considered as a simplified messagebox. Syntax: globals.msg("Hello World!").

To get a single string of input from a user you can use the INPUTBOX() function. Finally the PARAMETERS() function was added which returns the number of arguments that was passed to the currently executing function/method.

 

2011.4.13 »

 

In VFP the CURDIR() function retrieves the current working directory, in Servoy it retrieves the current users Home Directory. JUSTDRIVE() returns the driveletter from a filepath. JUSTEXT() returns the extension from a filepath. JUSTFNAME() returns the filename from a filepath. JUSTPATH() returns just the path from a path and filename. JUSTSTEM() returns the filename without the path and extension.

 

2011.4.12 »

 

The TRANSFORM() function converts a data expression of any type into a character string. The VAL() function converts a string consisting of numbers to a numeric value. The CTOD() functions converts a string to a date.

 

2011.4.11 »

 

For ALLTRIM() the utils.stringTrim() function is available but there is no alternative for the LTRIM() and RTRIM() functions. So they where customcoded and added to the VFP2Servoy Toolkit.

The function SPACE() returns a string with the specified number of spaces in it. The STR() function allows you to convert a number to a string with a specified number of decimals and with the appropriate localized decimal seperator.

STUFF() is a VFP function like that allows you to create a character string by replacing a specified number of characters in a character expression with another character expression.

 

2011.4.8 »

 

ISALPHA() is a very simple VFP function until you try to recode it in Servoy/Javascript :-). Before you know it you are reading all about regular expressions and trying to figure out the exact pattern that matches VFP's functionality for the ISALPHA function. After that the ISDIGIT() function is a piece of cake. Same goes for the ISLOWER() and ISUPPER() functions. PROPER() is represented in Servoy by utils.stringInitCap().

 

2011.4.7 »

 

CHRTRAN() is a function that replaces several characters in a string with several other characters. GETWORDCOUNT() does what you would expect and a little bit more. GETWORDNUM() returns the n-th word of an expression. Finally INLIST() is a function that many of you will probably know and appreciate.

 

2011.4.6 »

 

For today some type stuff: TYPE() and VARTYPE(). And a math function that exists in VFP but not in the Math library of Javascript: INT(). And a somewhat controversial function: EVALUATE().

 

2011.4.5 »

 

A few control flow structures where still missing from the cross-reference so time to complete them: FOR...ENDFOR | FOR...NEXT, EXIT, DO WHILE...ENDDO and IIF().

 

2011.4.4 »

 

Once in a while you need to start an external program from your application. In VFP we have the RUN command and in Servoy the application.executeProgram() or application.executeProgramInBackground() is used. Of course the RUN() function was only added to point you in the right direction. When using the application.executeProgram() and application.executeProgramInBackground() functions you will have much more options with regard to parameters, startdir etc.

Additionally the APRINTERS(), SYSMETRIC(), VERSION(), SET_MESSAGE_TO(), GETCOLOR() and GETFONT() functions were added.

 

2011.4.1 »

 

Just a tiny function at the end of the week: OS()

 

2011.3.31 »

 

To start off lets add the CHR() function. Done. Now lets add CANCEL() and QUIT(). And to finish off the month we will add the DO FORM command as a function.

 

2011.3.30 »

 

And here is the first SYS() function: SYS(3) is used to generate a temporary filename. Consider it as a code reference lookup marker since it makes more sense to use the self-explanatory plugins.file.createTempFile() function.

Also the counterpart of the STRTOFILE(), the FILETOSTR() was added. In VFP _CLIPTEXT() is implemented as a system variable. In the VFP2Servoy Toolkit it is implemented as a function.

Finally the GETFILE(), GETDIR() and PUTFILE() functions were added.

 

2011.3.29 »

 

Today I added parameter type information to the functions in the VFP2Servoy Toolkit, this should avoid most warnings in Servoy 6.0. Besides that I added the STRTOFILE() function and the MD | MKDIR commands.

 

2011.3.28 »

 

And more file/folder functions: ADIR(), DELETE FILE, ERASE, RD, RMDIR, HOME(), RENAME and MOVEFILE().

 

2011.3.25 »

 

Since we're in the file/directory functions corner: The DIRECTORY() function which is used to check for the presence of a specified directory on disk.

 

2011.3.24 »

 

Only one addition today: The FILE() function which is used to check for the presence of a specified file on disk.

 

2011.3.22 »

 

Good morning. I expect you won't use it much but since we're in the math functions corner we might as well add them just to be complete: EXP(), LOG() and MOD().

I also added the function CONTAINS() which does not exist in VFP but mimics the behaviour of the $ operator to test if a character or string is contained in another string. Besides that I added the COPYFILE() function as an alternative to the COPY FILE statement.

 

2011.3.21 »

 

Spring finally arrived! Additions: POW(), ROUND(), SQRT() and OCCURS().

 

2011.3.18 »

 

I have been playing with random numbers today and added some interesting content to the description of the RAND() function, which was also added to the VFP2Servoy Toolkit.

 

2011.3.17 »

 

Additions to the VFP2Servoy Toolkit and Code Reference for today: CEILING(), FLOOR(), MAX() and MIN(). I am particularly proud of MAX() and MIN() because they required a good amount of time and effort and some pretty sophisticated Javascript (for me that is). Why? Because I had to find out the following:

1. How to pass an infinite number of arguments to another function.
2. How to turn the argument collection into a normal array for sorting and reversing.
3. How to map an array of dates to an array of sortable values with a nested function.


 

2011.3.16 »

 

The EMPTY() and ISNULL() functions were added.

 

2011.3.15 »

 

The WEEK() function was added to the VFP2Servoy Toolkit. There is no alternative in Servoy/Javascript for this VFP function (as far as I know). The function supports both the ISO 8601 standard (week starts with Monday and the first Thursday is in week 1) as the Canadian/USA standard (week starts on Sunday and January 1st is in week 1). By default the function uses the regional settings of the user to determine which standard to use but it can be overridden by passing in an extra parameter.

 

2011.3.14 »

 

Boudewijn provided some functions that are allmost identical in Servoy. They are added to the VFP2Servoy toolkit for the convenience of being able to use familiar syntax: ABS(), ACOS(), ASIN(), ATAN(), LEFT(), LOWER(), PI(), RIGHT(), SUBSTR() and UPPER().

Most of them were in the Code Reference already. Another usefull contribution is the addition of the ADDBS() function which adds a backspace to a path string if needed (i.e.: "c:\windows\").

 

2011.3.12 »

 

I received several function contributions from Boudewijn Lutgerink this weekend and will put them online as soon as I can. Thanks Boudewijn!

 

I am also struggling to get to the bottom of passing parameters to functions in Servoy/Javascript. In general it's the same as in VFP, value types are passed by value and reference types are passed by reference. In VFP however you can influence this behaviour and in Javascript you can't.

 

Be especially carefull when passing dates because in VFP they are a value types and in Javascript they are reference types! This means that when you call a date function such as GOMONTH(myDate,-1) it will not just return a value but it will also change myDate!

 

I have found a workaround using valueof and will post it soon.

 

2011.3.10 »

 

And yet some more datetime functions: DTOS(), QUARTER() and TIME().

 

2011.3.9 »

 

Two date functions were added to the VFP2Servoy Toolkit by Juan Antonio Santana Medina: DAYSBETWEEN() and GODATE()! The DaysBetween() function is not actually a VFP function but in VFP you don't need it because you can simply substract dates from each other. In Servoy we can use it to determine the number of days between two date(times). The same applies to the GODATE() function, it is used to add or subtract a given number of days to or from a date.

Also the HOUR(), MINUTE() and SEC() functions were added.

 

2011.3.7 »

 

Another date function today: DAY() and some logical operators such as AND, OR, NOT (etc.).

 

2011.3.4 »

 

In VFP we are very used to working with dates in the mm/dd/yyyy or dd-mm-yyyy format (or any other locale). In Servoy dates don't exist just datetimes but of course you can extract a date-string in the current locale from it. However the format is a little different, which may be a problem if you are converting a VFP project and want to show your user the date style he is used to. This has been solved by adding a DTOC() function (Date-TO-Character) to the VFP2Servoy Toolkit and Code Reference that produces exactly the same results as in VFP (the optional parameter [,1] is also supported).

 

2011.3.3 »

 

Additions to the Code Reference: CDOW() and CMONTH().
Additions to the VFP2Servoy Toolkit: CDOW(), CMONTH() and DATE().

 

2011.3.2 »

 

Two additions to the Code Reference and VFP2Servoy Toolkit: ASC() and BETWEEN().

 

2011.3.1 »

 

Today more contributions from Juan to the VFP2Servoy Toolkit: NVL(), PADL(), PADR() and REPLICATE() which are very useful (maybe even for non-foxpro developers?) to avoid writing several lines of code to achieve the same.

 

2011.2.28 »

 

Hello again! Had a lot of catching up to do today but still have an addition for you in the VFP2Servoy Toolkit thanks to Juan Antonio Santana Medina from Gran Canaria who is hereby offically the first contributor! He provided the code for nothing less than the GOMONTH() function which will be greatly appreciated by many I am sure. Thanks Juan!

 

2011.2.19 - 2011.2.27 »

 

Sorry, no updates during my holiday... I left for Gran Canaria with my family and hope to see you again on February 28th!

 

2011.2.18 »

 

I started a VFP2Servoy Toolkit section that currently has only the MONTH() function in it. It is intended for adding functions that are missing from Servoy or work different in a confusing way.

Also I added some basic datetime functions to the Code Reference: DATE, DATETIME(), DOW() and MONTH().

 

2011.2.17 »

 

More array functions today: ASCAN, ACOPY() and ASORT().

 

2011.2.16 »

 

I had fun with arrays in VFP and Servoy and added: DIMENSION and ALEN().

 

2011.2.15 »

 

Hello! Added another walkthrough: How to use Styles.

 

2011.2.14 »

 

Happy Valentine Day! Sorry, no updates today.

 

2011.2.11 »

 

Today I added the pretty extensive walkthrough How to use form inheritance.

 

2011.2.10 »

 

I figured it was time again to add another how-to walkthrough and added How to create a simple report. Also the FOR EACH...ENDFOR array construct was added to the Code Reference.

 

2011.2.9 Servoy 6 sneak-preview»

 

Servoy World 2011 USB-stick At Servoy World the alpha-version of Servoy 6 was presented and contenders received a cool (very small!) USB-stick with the new version on it. I already talked about the Command Window which is not as spohisticated as the one in VFP (you still have to start the application before it works) but is very welcome of course. I already made good use of it by trying out the counterpart functions in Servoy while translating VFP functions for the Code Reference.

Some of you asked me to post some more details of the new release, so here are the main features (without trying to be complete). The Eclipse development UI is the most-used Java programming interface with which Servoy has integrated. In the new version the UI has been cleaned up and features that do not directly apply to Servoy Developers or are more advanced have been hidden. That doensn't mean you can't use them anymore but they moved to the background. This makes it less confusing for developers who are new to Servoy to learn the UI and feel at home quickly.

In the UI a welcome screen has been added which currently displays the www.servoy.com/i page. In the final release this page will be filled with relevant content. Visual Studio also has this.

In the current version when you open a form your toolbars are all over the place. This has been solved by moving the form toolbars to the top of the form designer instead of adding them to the general application toolbars. Also resizing the form design area has been made easier and the control aligning has improved.

One of my favorite additions is Refactoring. Refactoring enables you to make changes to existing code more easily. If, for instance, you have a global function which is used throughout your application and you want to change it's name then the refactoring logic shows you all occurences and helps you change them all in one operation.

Additionally the code-awareness of Servoy has increased. It is not strong-typed but it will post a lot more warnings to help you write robust code. If, for example, you declare a variable without using it, the Problems Window will show a warning about it.

There are several other enhancements such as increased drag & drop support. Also an onRender event has been added, allowing more control by providing a hook during rendering. Another interesting property is Encapsulation which gives you more control when using inheritance. Included options are: Public - Private - Module Private - Hide DataProviders - Hide Foundset - Hide Controller - Hide Elements.

Of the top of my head those are the main features. And of course I want to leave some exploring for you as well.



 

2011.2.7 »

 

Added more string functions to the Code Reference: AT(), ATC(), RAT() and the STRTRAN() functions.



 

2011.2.6 »

 

Today I added some basic string operation functions to the Code Reference such as the counterpart for the ?, ASC() and LEN() functions.



 

2011.2.5 »

 

We wrapped up the Fox Night geek session by 1.00am and talked some more with the international attendees at the bar until 3.30am and were fresh (ahum) and awake again (lots of java coffee) for the post conference training at 9.00am.

 

By the way as you may have guessed already from my comment on 2011.2.2 a Command Window has been added to Servoy 6.0! A Interactive Console already existed but could only be used in Debug Mode. It has now been modified to mimic Command Window behaviour. Ken showed some cool demo's on that.

 

2011.2.4 »

 

We are here at Fox Night doing a marathon session that started at 7.00 pm with Ken, wOOdy and me and Ken keeps on going so I can put up a message for you in the meantime. It's great fun and I hope you can be at Servoy World 2012 as well!

 

2011.2.2 »

 

Hello from Servoy World 2011!. Just attended the keynote speech by Jan Aleman Servoy's CEO and saw some promising features of the coming Servoy 6.0! What do we miss most in other programming languages? Yes, that's right... and they added one to Servoy 6.0! I'll tell you more about it after tomorrow... I met some interesting people too. Visual FoxPro developers amongst others. Cu later.

 

2011.1.31 »

 

Hello again! I just added the DO CASE...ENDCASE command (Servoy: switch) to the Code Reference. You may not like this one, I didn't either :-). Also the ALLTRIM(), LEFT() and RIGHT() functions were added.

 

2011.1.28 »

 

See you on monday! I went snowboarding for the weekend in Winterberg in Germany.

 

2011.1.27 »

 

The LOWER(), UPPER() and SUBSTR() functions have been added to the Code Reference.

 

2011.1.26 »

 

Sorry, nothing new today, working hard on the BIG DATA demo's for Fox Night.

 

2011.1.24 »

 

Added the IF...ENDIF / if-else statement to the Code Reference.

 

2011.1.23 »

 

Today I added the walkthrough: How to create and use tabpanel forms and a new section called Code Reference. This reference will eventually contain an extensive list of VFP commands, statements and functions and show the Servoy equivalent for them. I am counting on your contributions to help get it filled! The first function on the list is the MESSAGEBOX()

 

2011.1.20 »

 

The following walkthroughs have been added to the How to... section: portal (vfp: grid) walkthrough, and a tabpanel walkthrough

 

2011.1.18 »

 

Will I see you at Servoy World 2011 Fox Night on the 4th of February? I will be doing a session that evening and so will wOOdy (from Germany), Jason (USA) and Ken Levy (USA). It'll be fun to see a large group of VFP adepts again! Check out the Agenda here. Today I added the following to the site: radiobutton/optiongroup walkthrough, and a relation walkthrough

 

2011.1.17 »

 

Hi guys, I was out of the running for a few days (flu). But I'm back and feel like a million again! I added a combobox walkthrough, a contact page and fixed some typos too, thanks to Peter de Valença!

 

2011.1.13 »

 

Added two additional valuelist walkthroughs:

 


 

2011.1.11 »

 

Added two valuelist walkthroughs:

 


 

2011.1.10 »

 

Added the following walkthroughs:

 


 

2011.1.7 »

 

Added the Add controls to a form walkthrough.

 

2011.1.6 »

 

Added the Create a data-entry form (field style) walkthrough.

 

2011.1.5 »

 

Added the following walkthroughs:

 


 

2011.1.4 »

 

Added the Inspect the sample data connections (PostgreSQL) walkthrough.

 

2011.1.1 »

 

Happy New Year !!!

 

2010.12.30 »

 

Added the Install Servoy on Windows and Retrieve demo solutions walkthroughs.

 

2010.12.29 »

 

Added the How to create a form sample and the How to run a form sample.

 

As Visual FoxPro developers are discovering the potential of Servoy, Servoy is discovering the potential of the Visual FoxPro community! Servoy just added this banner to their site:

 


 

2010.12.28 »

 

Added the How to open a project/activate a solution sample.

 

2010.12.27 »

 

Added the first entry of the new How to... section: How to create a project/solution

 

2010.12.24 »

 

Added the Getting Started section and a comparison between Visual FoxPro and Servoy.

 

2010.12.20 »

 

Completed the What is Servoy?section.

 

2010.12.15 »

 

Updated the What is Servoy?section.

 

2010.12.14 »

 

Check out the new section What is Servoy? This will tell you in short what to expect from Servoy from a Visual FoxPro developer's perspective.

 

2010.12.10 »

 

In the coming weeks you can expect the following to be added to this site:

  • Servoy from a Visual FoxPro developer's perspective
  • A comparison between Visual FoxPro and Servoy
  • Code examples that illustrate similarities and differences
  • The most valueable links to external resources for information on Servoy

 

 

2010.12.9 »

 

Please check out www.servoy.com/foxpro for a page on Servoy by Ken Levy, former productmanager of Visual FoxPro at Microsoft.

 

 

2010.12.8 »

 

Finally found a way for this domain to serve the Visual FoxPro community in general! Please watch this site closely in the coming weeks and months as it will be filled with information on a exciting next step in evolution for Visual FoxPro developers.

 

External resources:

 

vfp plugin

 

ServoyWorld 2012 pics

 

Official Servoy website

 

Ken Levy on Servoy

 

Servoy info

 

Servoy Forum

 

Servoy Documentation

 

VisualFoxpro.com © 2010-2012 • All rights reserved • Contact: info@visualfoxpro.com