Monday, November 30, 2009

Builds 390 - 412

I'll update this blog entry to collect all changes that have been implemented within the past few months. The past month's activity on the release blog doesn't do justice to the development of Guineu. There have been a number of changes.

Build 412 introduces the SelStart and SelLength properties for the Editbox control.

Build 405 adds the SET PROCEDURE TO and SET CLASSLIB TO command. This makes it easier to create more complex applications. Additionally, GuineuIDE handles controls correctly that are stored in a class library. With this release you might have to delete the generated .SCX.PRG files in order to regenerate those using the latest version of GuineuIDE. Starting with build 405 you can create your own VCX class libraries and use those classes on different forms.

Build 403 includes the Timer control. Available properties are Enabled and Interval. Timers raise the Init and Timer events.

SYS(8015) is new in build 402. This function adds SMTP capabilities to Guineu. To send an e-mail from the device you can use the following one liner:

Sys(8015, ;
"", ;
"", ;
"","username","password", ;
"Subject", ;"Body" ;

You need internet connectivity on the device in order to send mails. Sending mails can be an alternative to printing a receipt.

Devices behave differently when you press the Enter key while the focus is on a button. Some devices trigger the Click event, some don't. Build 400 adds SYS(8014) to control this behavior. To explicitly call the Click event when Enter is pressed, use the following option:


You revert to the device's default behavior by using this line:


Build 395 adds the LOOP command. It works on all three supported loop types: FOR, DO WHILE and SCAN. SCATTER and GATHER have been extended in the same build. In addition to the NAME clause, they now support the MEMVAR and MEMO keywords.

Saturday, July 25, 2009

Build 389

SYS(8012) for controlling the Software-based Input Panel has been in the product for the past few weeks, but not been documented at all. The latest build mainly brings the documentation on par with the product, at least as far as the SIP is concerned. You find a detailed description of SYS(8012) on

Friday, July 24, 2009

Build 388

Finally, FTP transfer is available for the mobile engine, as well. SYS(8010) allows you to send or receive files from any mobile device with internet connectivity with a single line of code using the FTP protocol:

MessageBox( Sys(8010, ;
"put", ;
"", ;
"username", ;
"password", ;
"hello world" ;
MessageBox(Sys(8010, ;
"get", ;
"", ;
"username", ;
"password" ;

Please note that you need a real internet connection for SYS(8010). The shared internet connection provided by ActiveSync/WMDC while the device is in the cradle (or connected with the PC) does not work reliable for FTP connections.

Saturday, July 18, 2009

Build 387

The desktop version got left behind a bit. Several features like RowSource haven't made it to the desktop engine when I introduced them to the mobile engine. These issues have now been corrected. The past seven builds were mostly lots of smaller bug fixes .

Friday, July 10, 2009

Build 380

A number of bugs have been fixed in the last builds. When Guineu causes an exception (aka crashes) it writes an exception.txt file with additional information where the crash happened. Now you also have the calling hierarchy of your programs so you can see which line of code caused the problem.

Newly implemented are SET DECIMALS. The ? and ?? commands do not yet completely respect the SET DECIMALS setting, though. SYS(1079), an undocumented function in VFP, is also implemented. SYS(1079) causes a crash for diagnostic purposes, if you want to see what the dialog looks like.

SYS(8013) is the counter part of DATETIME(). You can call it to change the local system time provided you have the permissions to change the time. On Windows Mobile changing the time does not require special privileges as it does on desktop systems. ADIR() now provides the date and time of the last file modification as well as file attribute information. The time respects the current daylight saving settings and like Microsoft Visual FoxPro and Explorer. ADIR() and SYS(8013) can be combined to implement a simple time synchronization between the mobile device and the server.

Sunday, June 28, 2009

Build 369

ADEL() is now available, as well.

Build 368

RowSource and RowSourceType are now available for comboboxes and listboxes on mobile devices. Right now the only supported value for RowSourceType is 1 = Values.

Tuesday, June 23, 2009

Build 365

While there have been only few posts here on the release blog, I've been constantly posting new versions of Guineu over the past few months. I've made many, many bug fixes in this time, but haven't added a lot of new features. Constantly reading blog posts that merely state "There's a new bug fix" doesn't seem very appealing to me, so I rather not posted those.

There've been a few new features in the meantime. DELETE FILE and SAVE TO are now working. SYS(8010) allows FTP transfer albeit for now only in the desktop version. SYS(8011) is a debugging function that produces extensive log information.

SYS(8012) is a brand new function that gives you access to the Software Input Panel (SIP) on mobile devices. That's the writing area you use with the stylus when there's no keyboard attached to the device. I'll update the documentation soon.

Tomorrow morning I'll be presenting in Prague at the conference. Topic of the session is Mobile development with VFP and Guineu.

Tuesday, March 3, 2009

Updated documentation

I've updated the setup instruction and first steps section on mobile development in the Guineu documentation. Following these steps should now enable you to set up Guineu, the device emulator and create your first form. If you had difficulties to get Guineu running with the previous documentation, please give the new documentation a try.

Monday, March 2, 2009

Build 341

In a number of cases there was an exception when simply opening a table when certain field types were present. The new build fixes this issue.

Thursday, February 19, 2009

Build 340

GuineuIDE has been enhanced a bit. When you have multiple Project Manager windows open at the same time it can be difficult to figure out which project is currently controlled through the Guineu menu. This has become easier since the project name is now displayed in the menu.

A new option to clean up the project directory has been added. Choosing this option removes all temporary files that GuineuIDE creates in order to build the EXE. Aside from the C# files these are mainly the *.SCX.PRG and *.VCX.PRG file that contain converted versions of the visual files. Use this option after you installed a new build of Guineu or when Guineu isn't picking up any of the changes you make to a visual file.

When your project file contains an icon, this icon is now added to the EXE. Finding your application in File Explorer on the mobile device should now be significantly easier.

Mostly you'll be building the same project type repeatedly during development. After you picked on of the build targets in the Guineu Build menu, this target is added as a shortcut directly to the Guineu menu as the very first item. Repeated builds should be easier this way.

A few bug fixes deal with the conversion of properties. Some color properties where not detected correctly. Also, there was one more issue with long properties that contain double quotes, specifically the _MemberData property. Those are fixed now.

Sunday, February 1, 2009

Build 336

Forms can now be scrollable. This should make it easier for you to create forms that require a lot of input. To enable scroll bars for a form merely set the ScrollBars property to 3.

Guineu differs in a few details from Microsoft Visual FoxPro. Unlike in VFP the property is read-/writable at runtime. So you can turn on and off scrollbars as needed. However, you can only turn on horizontal and vertical scrollbars together. The scrollbars only appear when there's something to scroll to, though. Similar to VFP the rightmost and bottommost controls define the extension of the scrollable area.

Parameters passed to CREATEOBJECT() and NEWOBJECT() are forwarded to the Init event. STR() does now support all three parameters. A few issued with SECONDS() and SYS(2) have been fixed.

Wednesday, January 21, 2009

Build 333

The latest addition to Guineu is SYS(8009). With this function you can send and receive data over the internet or intranet using the HTTP protocol.

Local lcWeb
lcWeb = Sys(8009,"GET","")
MessageBox( Left(m.lcWeb,500) )
lcWeb = Sys(8009,"POST","http://server/process.php","data")

You are not limited to transfer text data. For instance, you can have a web page that calls a Visual FoxPro COM server. The COM server could execute a query into a temporary DBF and then return the DBF file. In the same way you can transfer a DBF file to the server where server side scripts can process the content.

Instead of a VFP COM server you could also use a PHP script that accesses a MySql database.

If you want to pass on state information to a VFP application running on the web server, you can use SAVE MEMORY to save all current variables. On the backend you can use RESTORE MEMORY to load the variable set into memory. This is especially useful when the remote script executes a query and query parameters have been stored in local variables.

Monday, January 19, 2009

Build 331

I've fixed a number of bugs. Most importantly, there was a breaking bug in the desktop UI engine that is now fixed. If launching a form brings up an error right away, please download this build. Some minor issues in ALINES() and STRTOFILE() have also been fixed.