I think I finally caught one of the most challenging bugs we had in FoxyPreviewer, that made the reports render only the data from the first field in some reports that used Private DataSessions, and some other specific settings.

I received complaints from 4 people in the last year, but nobody could give me any clue about what was going on, or to help me to reproduce the problem. I finally found a good soul, Flavio Cardoso, from the brazilian VFP user group, who had the same issue, and provided the needed information, and worked with me during… Continue reading

Thor is one of the newest VFPX projects, that brings probably the most helpful set of tools for VFP9 developers, bringing for FREE, TONS of features that were available only in other languages, or even as paid tools. As it’s described in the THOR main web page:

Thor is a tool for managing add-on tools in the IDE, managing menus and hot key assignments for IDE Tools.

But as you’ll see below, it’s much more than that !!!


Today I found myself having to do lots of data manipulations, and to create several SQL INSERT instructions. I remember to… Continue reading

It's been a long time since my last blog post about foxypreviewer. although somehow quiet in the blog, the work behind the scenes has been hard, and i've just released version 2.38, http://foxypreviewer.codeplex.com/releases with several fixes and enhancements.


One of the coolest is the following:
to export a report to pdf without previewing, people just need to do the following:

     do foxypreviewer.app
     report form yourreport object type 10

yes !
that's all you need.

even better than that, the new - oops !!!!, hahahaha, vfp9 is quite old right now, reporting system from vfp9 allows me… Continue reading

Foxypreviewer.app is a collection of classes. Inside the APP there are several classes, that you can access directly using VFP.
Recently I received a request to show how the ctl32 progressbar could be used directly.

Thats's really simple ! The key command is NEWOBJECT(), that allows us to access classes from an external EXE or APP.
First of all the author of this gem, the CTL32 progressbar is Carlos Alloatti. For the complete information on how to use it, please go directly to the CTL32 website: www.ctl32.com.ar



=dotherm(90, "caption", "titlebar") && shows the regular progressbar with 90%

 … Continue reading

After I posted a Gauge sample with gdiplusx some months ago, Rafael Lippert from Brazil adapted my original code and created this cool analog watch, using GdiplusX and the 'ImageCanvas' class:



Cool isn't it ? it permits many customizations, and you may use it as a sample to learn other gdiplusx techniques.

You may get it directly from rafael' blog, at: http://rafaellippert.wordpress.com/2011/06/21/a-gdiplusx-analog-clock/

It's worth to spend some time in rafael's blog and website - www.lipsil.com.br . I'm sure you'll find some really very neat utilities.

Below are 4 simple ways to convert a bmp to icon, using gdiplusx.
Those 2 blog posts were before we updated the library, adding the support for saving icons with good quality.

This sample uses 4 techniques, and creates 4 versions of icons from the same image file.
Before the conversion, it resizes the source image to the size of 16x16. this means that with this sample you can convert any image to ico file.

In the next release, we hope to deliver a complete solution for .ico files too, with very simplified code, offering great ico files support, that… Continue reading

Here are some notes on bmp transparencies on vfp, based in some conclusions I took after some discussions in Foxite, specially the ones with Bernard Bout.

BMP image files, when used in the picture property of the image control usually show whites - rgb(255,255,255) as transparent. VFP creates a temporary mask for our pictures in order to show this way.

picture 1: bmps can have whites converted to transparent when using the "picture" property and backstyle set to "transparent".


But this works only for the 'Picture' property, not for 'PictureVal' !

The code below creates a simple image… Continue reading

i've just posted a new version of the gradobjects class.

thanks to nigel for reporting a bug that occured when using graphical optiongroups.

here's the updated version.


more info can be obtained at the original post:

gradient objects with gdi+


That's a very easy task for Gdiplus-X:


All samples below use the Gdiplus-x library. Get the latest stable release from codeplex:


do locfile("system.app")

with _screen.system.drawing

   local mybitmap as xfcbitmap
   && create a bitmap object
   mybitmap = .bitmap.new(getpict())

   && save the bitmap in different formats
   mybitmap.save("c:\mypng.png", .imaging.imageformat.png)
save("c:\mybmp.bmp", .imaging.imageformat.bmp)
save("c:\mytiff.tif", .imaging.imageformat.tiff)
save("c:\myjpeg.jpg", .imaging.imageformat.jpeg)
save("c:\mygif.gif", .imaging.imageformat.gif)


Of course, you can save as jpeg… Continue reading

After all those posts discussing and showing how to create gradient backgrounds for vfp forms, I finally decided to create a simple but powerful class to ease this process.

The GradBackgrounds class is stored inside the gradientobjects.vcx, the class that was published last year that converts any commandbutton, graphical checkbox or graphical optionbox.

Just drop an instance of the class gradbackgrounds to any form, container or pageframe and set some properties to obtain the gradient effects shown below.

All the background images are created using gdi+, but with no helper class, because I wanted to obtain the best performance… Continue reading