Tuesday, November 11, 2008

Build 329

Today's build implements SET NOTIFY. While there are currently no messages that are suppressed by SET NOTIFY, this is one command less that you would need to remove from your code. When Guineu encountered an unknown command, in the past you got an error message stating line 1 as the culprit. The latest version accurately reports the compiled code line that caused the problem

Tab order handling: The TabIndex property is now available for all controls on mobile devices. For desktop controls TabIndex has no effect, as of now, but doesn't cause an error, either. For desktop controls the property will be available shortly.

Two other reported bugs have been fixed: Passing THIS and THISFORM to a function doesn't raise an invalid type error anymore. Furthermore, accessing a non-existing object brings up a proper "Member not found" error message instead of a .NET runtime exception.

Saturday, November 8, 2008

New online help

The online help (http://guineu.foxpert.com/help) has been enhanced. Not only does the help file now contain additional content. There's also a new search feature available that performs a full text search on the entire documentation.

Friday, November 7, 2008

Build 322

When a package is delivered to your home these days, you don't sign on paper anymore. Instead, the delivery person is asking you to sign on their mobile scanner. The same requirement came up for multiple Guineu applications, be it to sign for delivery, for receipts, etc.

I'm happy to report that such a control is now available in Guineu. Before you can use the new Signature control, you have to activate the Signature base class with the new SYS(8008) function. This SYS function provides additional base classes that are not in Visual FoxPro. To remain compatible with Visual FoxPro, these classes are disabled by default.

There's also a new Signature sample project with the form you see on the figure. Signatures can be stored in a memo field in either a binary format that can be loaded into the control, or as a bitmap. You can use an Image control and assign the content of the memo field to the PictureVal property to display the signature. PictureVal has been added to the Image control in this release, as well.

Saturday, October 18, 2008

Build 317

Currently I'm at the SouthWest FoxPro conference in Phoenix giving various sessions. Among them is one session about doing mobile development with Guineu.

The last few versions have seen a number of bug fixes. GuineuIDE is now faster as forms and classes are only regenerated when they have changed. New in the language is the BOF() function as requested on the forum. During yesterday's session support for writing memo fields has been requested. That's also available in the new build. Forms now support the Unload event. Editboxes and Textboxes do have the ReadOnly event.

The help file has been updated. As it turned out, a number of functions have been implemented, but weren't documented.

Friday, September 12, 2008

Build 302

In the past I've been using a combination of Visual Studio 2005 and Visual Studio 2008 to develop Guineu. I finally upgrade Visual Studio on the build machine, as well, and moved development completely to Visual Studio 2008. As a user you aren't affected by this move since Guineu remains a .NET 2.0 application.

The past few releases mainly fixed a number of bugs: SELECT 0 does now move to the next free work area. Edit boxes have a vertical scroll bar just like in Visual FoxPro. Checkboxes deal properly with the Value property. Deleted records are not shown in the grid. Replacing a string field with an empty string clears the field now.

Wednesday, September 3, 2008

A new support forum

I've frequently been asked if there's a place for Guineu users to exchange ideas, ask questions, get help, and request features from the developer. Previously I created a newsgroup on my own server assuming that offline availability is a big plus. It seems though, that I was wrong in this assumption. Even worse was probably the decision to make the newsgroup password protected. Hardly anybody found it.

Today I finally got around installing a web based forum (phpBB) on my web server. The new forum is not hidden, not password protected and easily discoverable: http://guineu.foxpert.com/forum. For now there are only three sections, one for each language: English, Spanish and German. I'm looking forward to seeing you all there!

Tuesday, August 5, 2008

Build 295

The past builds have fixed a number of small bugs. There are also some internal changes to prepare for future features and extensions. The STORE command and the TTOD() function are newly implemented. Some other functions like MESSAGEBOX() have been extended to cover more scenarios.

Sunday, June 29, 2008

DevCon in Prague

Tomorrow I'm heading to Prague where - in addition to three other sessions - I'll be talking about Guineu. There are two sessions on Guineu planned. The one on Tuesday will be in English, the one on Thursday in English and Czech.

If you want to see Guineu on the various platforms without having to install the Compact Framework, Virtual PC, the device emulator, device images, Microsoft SQL Server 2005, SQL Management Studio, VMWare Player, Linux, Mono, Visual WebGUI, IIS, ASP.NET, and so forth, find your way to Prague next week: http://www.daquas.cz/fox/devcon2008/devcon2008an.htm.

Thursday, June 26, 2008

Build 270

The grid has been improved. It now properly works on ordered and filtered tables. The Width property in columns is also working.

The DELETE command and the DELETED() function are new in this build.

Friday, June 20, 2008

Build 266

Andrew MacNeill has interviewed me for his latest FoxShow. You can probably tell from the interview that I was quite nervous with this one being the first time. It's never ceases to amaze me what has become possible during only the past few years and is now taken for granted. I mean a transatlantic interview and we only need to worry about the time zone differences…

A couple of new features have been added to the latest release.

The mobile version of Guineu now supports the grid control. Unfortunately, the .NET DataGrid control in the Compact Framework isn't exactly what I would call a powerful control. So far, the grid class supports a cursor as a RecordSource. The cursor can be a DBF table that has been opened, or the result of a query against the Microsoft SQL Server Compact engine.

Columns can have a ControlSource and Headers a Caption. Any other control in the column is currently ignored, meaning everything is displayed as text. Nonetheless, you can use columns of any data type. To change the color of grid lines use the GridLineColor property. To hide the grid you can change the GridLineColor to the background color of the form.

Right now there are still some limitations: Any filter and index tag is ignored. I'm working on that. The grid is also non-editable. This is a limitation of the .NET control which will take some more time to work around. The grid class will be added to the desktop version in a later build. Right now I focus on getting this to work flawlessly on the PDA.

Another new class is the Spinner control which is available in all versions of Guineu. Forms now support the Load event, which is a good place to open any table you plan to use as a ControlSource or RecordSource.

For PDAs with a higher resolution than 320x240 there's some additional support. First of all, SYSMETRIC() can be used to return the screen resolution if you want to support multiple resolutions.

Guineu.compact.exe is a hi-res aware application. Any form you run through this loader has the full resolution available. If you don't need the higher resolution, you can enable automatic scaling with SYS(8006). The same function is necessary, if your PDA treats any application as a hi-res aware application. Some HP organizers seem to do this.

Any mobile application created with GuineuIDE.EXE is currently generated as a lo-res application. That means Windows pretends that the screen resolution is only 320x240 and scales internally. SYSMETRIC() also returns 320x240 in this case. If you need to create hi-res applications with GuineuIDE, please let me know.

The bad news at the end: I'm still working on the code to update CDX files. That part is a little more complicated since CDX files need to be fully integrated into Guineu. Otherwise it would be impossible to implement some features like seeking in a buffered table.

Monday, May 19, 2008

Build 248

Some more minor changes: EOF() and TIME() are available. Pages fire the Activate event when the active page changes. Most controls have a Refresh() method. There were some issues with Refresh that are now fixed. ComboBoxes and ListBoxes have the DisplayValue property. The ComboBox now defaults to DropDown ComboBox on both, the desktop and the Windows Mobile platform. Properties containing images (Icon, DownPicture, etc.) are now properly enclosed in quotation marks when you build the project with GuineuIDE.

Monday, May 12, 2008

Build 235

The error dialog is now a bit more verbose. The button control supports the WordWrap property in the desktop and the compact version. The ASP.NET engine ignores the WordWrap property.

GETPEM() is now available. A good use for GETPEM() is to retrieve controls on a form by name instead of using THISFORM.&lcName.

Sunday, May 11, 2008

Build 231

I made a number of smaller changes to the desktop and the compact engine. These include recognizing the WAIT WINDOW command, supporting USE IN 0 properly, assigning values to array elements, positioning PageFrames freely on Windows Mobile, and allowing GuineuIDE.EXE and your project to be in the same directory. SEEK operates properly on all kind of numeric values.

There are also some new methods and properties. The PageFrame class supports ActivePage. ListBoxes and ComboBoxes have the ListCount property. All controls now have the Init event. The compact framework has a rather limiting handling of the focus. Despite that Textboxes now support the When event on all mobile platforms. Returning .F. prevents the textbox to receive focus just like in the desktop version.

Sunday, May 4, 2008

Build 201

The handling of date values has been improved in various parts of the runtime library. DTOC() and CTOD() are now available.

MESSAGEBOX() uses now the numeric parameter. Previously, all dialogs would only show the OK button.

Saturday, May 3, 2008

Build 195

On mobile devices the content of a pageframe only became visible after switching to another page and back to the first page. This bug is now fixed.

Thursday, May 1, 2008

Build 192

Fixed #49: User defined string properties are now properly enclosed in quotation marks when you build the project with GuineuIDE. Properties with long values are now properly supported, as well.

Guineu now supports the Visual WebGUI framework. In the Guineu menu choose Build > ASP.NET Application to turn your Visual FoxPro™ project into a web application. Even though the forms more or less look like they did before

they run inside a browser. The form is actually rendered HTML, CSS and JavaScript. In order to compile an ASP.NET application, you must download the Visual WebGUI SDK for .NET 2.0 and install it on your machine. After building the project you end up with a web.config in your project folder and a bin directory with all DLLs. Both need to be deployed to a web server that is configured to run ASP.NET 2.0 applications. To launch the application use


where mainform is the name of the SCX form that was defined as the main program in the project.

Wednesday, March 19, 2008

Build 187

To execute SCX forms, GuineuIDE converts forms into a program file. This conversion does now work for page frames and other nested controls. Please note that with nested controls the generated program compiles fine in Visual FoxPro, but does not execute inside the IDE.

Also, a minor glitch has been fixed that required that you specified the .SCX extension on the DO FORM command. This has now been fixed meaning that DO FORM works fine without the extension.

Lastly, the documentation has been updated to reflect some of the limitations of the mobile platform. For instance, you cannot change the height of a textbox control. This isn't a limitation of Guineu, rather a limitation of the underlying Microsoft Compact Framework.

Tuesday, March 18, 2008

Build 186

The new build fixes a number of issues in the compact edition.

Buttons now respect the ForeColor and BackColor property just like they do in desktop applications.

Issuing READ EVENTS no longer brings up a blank form in front of the actual application. I changed the way the message loop is handled. This was necessary because the Compact Framework assumes that your application consists of a main form or just one form at all. There's still some work to do in this area, though.

Forms are a bit more difficult on mobile devices. In addition to the title bar that has been available since the first release, forms now also have the menu enabled. On Windows Mobile the menu is at the bottom of the form in the area that hosts the status bar on desktop applications. Part of the menu is the input selection utility. With that in place you can now bring up the virtual keyboard to enter data into text boxes and other controls.

There's a drawback, though. By default, a form on a mobile device always behaves as if it's maximized. The form occupies the entire area which varies in size depending on the device, the resolution and enabled features. With the menu bar, the usable client area is now smaller. On a regular PDA the size changed from 240x294 to 240x263. The samples haven't yet corrected, so they might look a little strange right now.

In a future release the menu you will be able to control the menu strip with the SET SYSMENU statement. Turning it off should give you back the 31 pixels at the expense of having no input support for text entry.

Friday, March 7, 2008

Build 185

Recent versions had an optimization that turned out not to work in all cases. In particular, some properties assignments in class definitions didn't stick leaving them at the default values. As a result, some controls were too wide, too narrow, or had the wrong color. This bug has now been fixed without taking out the optimization.

Guineu is now built with the latest SQL Server Compact Edition, which is version 3.5. If an older version is available, Guineu should be able to pick that version so you don't have to distribute a new version of the database engine.

However, be aware that Microsoft changed the file format between version 3.1 and 3.5. If you use a database that has been generated with SQL Server compact edition 3.1, but your application uses the DLLs of version 3.5, the database cannot be opened. SQLSTRINGCONNECT() returns -1 in this case. AERROR() reports an ODBC error (error number 1526). The ODBC error code in this case is 2. AERROR() returns this code in column 5.

In this case you can use the new SYS(8005) function to perform an update of the database file. You need exclusive access to the database, to perform an update. The Compact.PRG sample has been updated to demonstrate this new function.

SYS(8005) can also be used to create a new SQL Server Compact Edition database file.

AERROR() has also been implemented. Error messages are displayed in plain text instead of the abbreviated name in previous versions.

Wednesday, February 6, 2008

Build 178

In case of an error Guineu now displays a dialog with error, executable line and procedure or program. Previously Guineu would only dump a message to the console which didn't help with WinForm and mobile applications.

We're also continuing to enhance GuineuIDE. This is currently work in progress. When you select one of the build targets you get now a dialog for some of these that give you a little more control over the build process.

Thursday, January 24, 2008

Build 175

This version fixes a bug when writing numeric fields into a table. Under some conditions the new number had been merged into the existing number.