FoxyPreviewer v2.00 - New email form

The FoxyPreviewer email form uses a custom HTML editor created by Frederic Steczicky from atoutfox.org, and allows you to:

  • generate html outputs for the body of your message
  • changing the formatting, alignments, fonts, adding pictures, hyperlinks, etc...
  • preloading an html
  • attaching more files is allowed
  • mark message as priority
  • ask for read receipt

another cool thing is that after you click on "send", a continuous progress bar, with the cool marquee effect (thanks to Carlos Alloatti) will appear, till the message is delivered:

the old email form, that could generate only plain text messages is still there, you may select it in the settings form:

Obviously, some new messages need to be translated. if you want it to be enabled for your native language, download the most recent version of foxypreviewer, and send me your version of the file foxypreviewer_locs.dbf

Foxypreviewer general info
Foxypreviewer documentation
FoxyPreviewer FAQS
Foxypreviewer downloads



Thanks to Luis Maria Guayan and Guillermo Carrero from the spanish speaking community, now we have a brand new freeware and open source project for VFP.

Foxbarcode is a 100% Visual Foxpro class that provides a tool for generating images with different bar code symbologies to be used in vfp forms and reports, or exported to other applications.

You can learn more about the class foxbarcode and download freely from https://github.com/VFPX/FoxBarcode
The most important barcodes are already available, and they're already working on new ones.

Instead of using some truetype fonts to generate the barcodes, they are using gdi+, with the gpimage2 class (an old super light weight wrapper class for gdi+, originally created by alexander golovlev and enhanced by me). using gpimage2, they managed to provide backwards compatibility for even vfp6 users !

Please check this out!
The project is outstanding, and even the sample form is brilliant! very good looking and functional.
the samples provided bring solutions to some real situations. even a bar code builder is available.

picture 1: demo form

picture 2: report sample: employees cards

picture 3: barcode types

now see how simple it is for you to generate your own barcodes:

  1. run the samples form

  2. play with it, changing the controls available information

  3. click at the "builder script" button

  4. copy and paste the generated code

picture 4: barcode builder

Here's an english translation, from luis maria's blog

Thanks a lot Luis Maria and Guillermo!


SWFOX - "The amazing VFP2C32 library" - session by Eric Selje

eric selje summarizes very well what is vfp2c32 in his white paper:

vfp2c32 is an fll that encapsulates windows api functionality into functions that are easily called from vfp.
the advantages to this fll are

  • you don’t have to explicitly declare each dll you want to use
  • the fll takes care of converting the parameters into a struct that the api understands, which relieves you of a huge burden
  • it gracefully handles errors that the api returns
  • all c++ source code is included

christian ehlscheidt from germany did a fabulous job in this library. the quantity of functions wrapped from the confusing win32 api is very big, and i've been using this library since 2006 for some specific tasks, but i confess that i always felt that i was not using even 1% of all it could provide to me. apart from that, indirectly i've been using it as a part of the ctl32 library from carlos alloatti.

unfortunately the documentation was very poor. the download came with some nice samples, but that was all. so, for me, eric's session in swfox represented a great oportunity to get in touch with some more features, functions from this library. i had already read the whitepaper on the plane, and it was a very nice teaser for me :-)

i was really glad to see that this has changed. christian documented a great part of the functions, and eric selje provided an additional documentation, with detailed samples as the white paper for his great session. it was very nice to see it being shown to people, because this library is considered a real gem.

another cool thing shown by eric that i didn't know is that christian delivers a prg that installs intellisense for these functions, a terrific help. cool to know that some functions from the libcurl wrapper from carlos alloatti are there only because of some callback functions from vfp2c32.

after this session, i got really encouraged to get back to this library, and enhance my benefits from it. if you already use the ctl32 classes, you don't even have to install it, because it's already there !


SWFOX - "Creating database abstraction classes" session - by Steve Ellenoff

"imagine if your database application could switch from using foxpro tables, to microsoft sql server, mysql, or to postgresql, by simply changing one line in a configuration file? imagine further if this change could occur programmatically at run time, without having to write different code to handle each different back-end separately?"

the teaser text above drove me directly to steve ellenoff's session - creating database abstraction classes in vfp: switch your back-end with ease. my experience with databases is is really restrict, and i wanted to hear from an expert about the best techniques to work in different scenarios.

steve showed how he created his "data related abstraction class" - dac, that allows his application to switch from:

  • foxpro data to any remote sql server back-end easily.
  • any remote sql server back-end to foxpro data easily.
  • any remote sql server back-end to any other remote sql server easily.

the application could make this switch at development time or run time, even programmatically, without:

  • having to re-write the application or change any source code.

  • having to code the specifics of each back-end into the application.

  • the application should be able to support multiple back-ends all at the same time, even allowing the same exact form to work with different back-ends at the same time.

that's pretty cool! he showed us how these classes can create automatically the "select" statements to access vfp, sql server, mysql or postgree data automatically. it was really very good to see step by step how these classes do the job.

of course there are lots of differences between the databases, the field types, the access, the instructions, the language, etc. really impressive to see how he made something really complicated from my point of view to look so accessible. he provided his classes and many samples for me to start with, all super well documented in his 86 pages whitepaper! below is a diagram taken from the whitepaper that summarizes all of that:


thanks a lot steve, your session was great, and very helpful.


SWFOX - "PEM Editor" session - by Cathy Pountney



the first session that i attended in the conference was cathy pountney's pem editor: an absolute must have in your development toolkit.

i was really very curious to attend this session for some reasons:

i've been following closely the development of this fantastic tool that is pem editor. i started using doug hennig's "add property" and "add method" replacements since i got my vfp9, and also tried the first version of the "properties and methods dialog replacement" from marcia akins. if you look at the current version of the pem editor, you'll see that it kept almost nothing from the first version. for sure the work from doug and marcia was essential for what we have today in the pem editor.

jim's work on this tool is frenetic, crazy, insane. sometimes he delivers 10 versions of that tool on the same day. he sends many emails, bringing tons of ideas and discussions... man, sometimes for me that's impossible to follow his thoughts :-). he's always adding lots of new possibilities to this fantastic tool. another point is that he is always open to new suggestions, and never refused a challenge.  lucky me to have him as a friend, and the whole community to receive pem editor as a must-have tool for free, and in constant development.

that said, i confess that although being at the email list from jim, that he uses to discuss his tool, i didn't know more than 30% of what it was capable to do and ease my life. so, definitely, the main reason to attend to that session was to better know about the tool;

and secondly, i was excited to attend to a session from cathy pountney. i like a reports a lot, and her inumerous articles, books and blogs have been my reference for years. i didn't find anything that i wanted to do with a report that cathy hasn't shown yet. i'm a very big fan of her work.

and she didn't disappoint me. she did very well, showing the most important features of peme. most of all i didn't know. some others when i heared about i thought i would never use, but seeing cathy bringing those features and showing cool ways to use them, i was completely rendered. i was so glad to have attended to this session, because i feel that i would have never managed to know all the features she presented.

if you would expect me to tell you about the features of pem editor, i'm sorry to disapoint you, because i can't. there are endless utilities, impossible to list them. i just can tell you that i use it all the time ! more info at the links below:

related links:

pem editor at vfpx

pem editor blog  new !


SWFOX - The KeyNote session

so finally, at thursday night, the conference would officially begin !

that was the first moment when i had the oportunity to meet all the participants together. it was really nice finally meeting all mu gurus and friends from the fox community with whom i've been exchanging messages in forums and in private for years!

in the first part of the session they provided some important information about how the conference works, etc.

then, it was my priviledge to see the vfpx administrators award going to jim nelson and francis faure for their contributions to the vfp community through their projects on vfpx, the pem editor and the vfp9 help file. both projects are essential, i use them all the time! specially for the case of jim nelson, i was truly pleased to see his work being recognized. thanks to vfpx, i had the oportunity to know jim. since the first steps of foxcharts, jim took an important part, providing lots of suggestions, fixes, introducing new features, and even creating a separate tool, to help people to use foxcharts with simplicity. foxcharts was too small for him, and he needed to fly by himself. and fortunately i had the oportunity to follow his steps from the beginning developing the fantastic tool that is pem editor. having the oportunity to meet jim in person was one of the highlights of the whole conference.

next, me and bernard were introduced to the audience as the 2010 ceil silver ambassadors. thanks a lot to all people who contributed to this fund, and invited me. it was a great priviledge and honor to be there with you. i have no words to express how happy i am for having the oportunity to attend swfox !

then, finally the pink panther, craig boyd came to the scene, whith a very funny and energetic speech, that you'd better see by yourself: http://www.ustream.tv/channel/swfoxtv

apart from that some prizes were offered to some of the attendants, and we all left the main room very excited and enthusiasted for the great conference that had just begun ! most people stayed at the corridors, at the bar and pool talking. for me, it was time to sleep, after 2 long flights.


SWFOX - Preparing for the conference

it was with great surprise that in last july i received an invitation from tamar, rick and doug to participate in the swfox conference this year, as ceil silver ambassador. i was really not expecting to be invited again ( i could not attend last year).

as i told the organizers, i truly don't know what they've seen in me, but i apreciate that ! of course i couldn't miss this time. i've been hearing and reading so many good things about that event, that i had to see and feel it by myself.

since the moment when i accepted the invitation, i started receiving many emails from them, providing all types of informations about the conference. the location, hotel, airport, the sessions, the authors, even the weather ! when we started to get close to the week of the conference, the messages became more frequent. always with relevant information, specially for a newcommer like me.

i started feeling excited like if the conference was already starting, for sure that was a great warmup ! these guys are unbelievably organized. two weeks before the conference almost all the materials from the sessions were available at an ftp server, for us to download.

it was sooooo nice to have access to these materials, i printed the ones that most interested me, and now you know that i had lots of things to read during my 18 hours since i left home and arrived in arizona. the quality of the materials is really impressive. these articles are super detailed and provided me an excellent oportunity to get a first contact with the subjects, specially for a foreigner.

the flights were tiring, but without surprises, what is really good :-d. when i finally reached phoenix, on thursday at 11, what a vip reception ! therese schummer was waiting for me and bernard at the baggage claim at the airport to take us directly to gilbert, at the san tan elegante conference center. therese was very kind, and provided the first information about the conference, etc... it was really cool to meet bernard at the airport. that's so crazy, we've been exchanging lots of messages in foxite and in private, and i though i would never have the pleasure to meet him in person.

having reached the hotel, me and bernard finally had the oportunity to meet tamar, doug and rick at the conference. these guys were so warm and hepful! from them we received lots of materials about the conference: a cd, some great books, and a conference guide - not just a simple guide, but a book ! with several information about everything ! i got really impressed, again and again... at that moment, the pre-conference was already running, and we took some time to rest from the flights, and waited for the beginning of the conference, at the key note session, later at night.


FoxyPreviewer features - SETTINGS DIALOG

The FoxyPreviewer settings dialog

An additional button in the print preview toolbar and in the context menu (via right clicking at the report preview canvas) calls the "settings definitions" dialog, that allows users to configure interactively 90% of the features of Foxypreviewer.

That means, that every user can determine lots of things related to his report preview definitions.

Users may choose very easilly how the toolbar will appear in the next section, what buttons will be visible, the buttons size, what output types will be available. From the toolbar or the context menu, click at this button, to open the dialog.

This dialog contains a pageframe with 7 different pages, as described below:

1 - General page

  • language - the combobox lets you change all your report dialogs, tooltips, and captions between 22 languages available: English, Portuguese, Spanish, French, German, Greek, Turkish, Italian, Polish, Indonesian, Czech, Persian, Swahili, Hebrew, Arabic, Indonesian, Russian, Dutch, Chinese, Bulgarian, Hungarian, Serbian, among others. At the source folder of Foxypreviewer you'll find the FOXYPREVIEWER_LOCS.DBF table. Please update it from times to times, because every time that a new feature is added, some new strings are included there. Of course, this permits to you to customize some of the texts showns in the dialogs.
  • toolbar visibility - here you define if in the next report preview session the toolbar will be visible, invisible, or if it will follow the resource file settings
  • dock position - determines how the toolbar will appear in the next session, undocked or docked. the combo allows you define the dock position as well.
  • canvas count - determines how many pages will be shown in the preview. choose between 1, 2 or 4 pages at the same time
  • zoom level - determines the zoom level that will be used in the next session
  • window state - choose between, normal, minimized or maximized report preview window
  • progressbar

    • quiet mode - determines if the progressbar will appear during the report generation and during the output generation. if you include the "nodialog" clause in your report, this setting will be ignored
    • progressbar type - choose between the default progressbar (not beautiful at all) or the coolest windows compatible progressbar, compatible with all windows versions, a courtesy of Carlos Alloatti and Dorin Vasilescu. Picture below:
  • version - at the bottom-left part of the dialog form you can see easilly some details of the current version used. Please report this version information if you suspect a bug, or need some assistance

2 - Controls page

  • size of buttons - Determines the size of the buttons to be used - 16x16 or 32x32. Internally, foxypreviewer stores 2 button size options. Users may choose between these options. If you want to use your own buttons, go to the image folder, and replace with your own buttons. Make sure to use the same file names. after recompiling, your FoxyPreviewer.app version will show your pictures. Below you can see the toolbar in the big size (32x32)
  • printing preferences button - determines the visibility of the "Printing Preferences" button in the toolbar and context menu

    • preferences options: "Global printer prompt options" - shows the VFP9 default printer prompt dialog. This is the deprecated, but still flexible dialog; it allows your users to determine the printer for the output, change preferences, access an uninstalled printer from the LAN, etc. The disadvantage is that if the user clicks on the "cancel" button, the report preview will be closed.
    • preferences options: "Setup Property Sheet for the current printer" - shows the preferences dialog for the current printer. This will not allow you to switch to another printer, but if the user clicks on "Cancel", the preview will be restored.
    • preferences options: "Enhanced Printing Preferences dialog" - shows the new and enhanced Printing Preferences dialog of FoxyPreviewer v3.0. This brings a new and super flexible printing dialog form, bringing options available in the actual printing preview dialogs from other platforms.

  • copies - determines if the copies spinner will be shown in the toolbar. This control will allow your users to change the quantity of copies for the current report session.
  • save report - determines if the "save" button will be available in the toolbar and context menu. See in the next section how to determine which output file options you can make available.
  • available printers - determines if a combobox with all the available printers will be visible. This control will allow users to switch the printer output during the preview.
  • send report by e-mail - determines if the e-mail button will be visible. See in the 4th page information ( in the "e-mail" tab ) more instructions of usage
  • miniatures - determines if the miniatures preview form button will be visible in the preview toolbar and context menu
  • miniatures per page - determines the maximum quantity of miniatures that will be shown per page when you choose miniatures preview mode
  • find - determines if the search button will be available in the preview toolbar and context menu

    • max pages to search - determines the quantity of pages that the search engine will store information. When you have a really big report, of more than 200 pages, users will notice a very important performance difference, because during the report generation it will be saving information of all the fields from the report. Set the numeric value of "-1" to tell Foxypreviewer to perform the searches in all pages

3 - Output page

Here you can define what output options you'll have available in the "save report" menu, like in the picture below:

  • save as image file - determines if the save to image option will be available in the output options menu
  • save as PDF
  • save as HTML, MHTML
  • save as RTF
  • save as XLS
  • save as TXT / CSV / XL5
  • output path - determine the path / directory where the output files will be saved

4 - E-mail page

In this page you have several emailing options. Choose the one that you find the most appropriate for your case, OS, etc.

  • email mode - choose between MAPI, CDO, or your custom procedure.

    • MAPI - will fire your default MAPI compatible app, like Outlook Express, Office Outlook, Windows Live Mail, showing your report as an attachment. All you have to do is click on the "send" button. this does not always work. Please advice your users to make some tests before using this option.

    • CDO - uses the CDO2000 component included in windows 2000 and later. It allows you to send emails using an SMTP server. All settings must be accurate in order to make this work. For example, below is the configuration for a Hotmail or Live account to send emails. You may check also at Sergey Berezniker's blog for more information on how to send using MSN, Yahoo or Gmail email messages using CDO: http://www.berezniker.com/category/topic/email
    • custom procedure - You can use your own procedure to send the current report. Use Foxypreviewer property "cEmailPrg", and fill it with the name of the prg responsible for sending emails. This PRG receives as a parameter the file name of the file created that you will send as attachment. Have a look at the samples provided, the file MYSENDMAIL.PRG shows how you would need to make your custom procedure.
  • Attachment Type: determines the file type that will be used to convert the report to be sent by e-mail. Default is PDF, among XLS, RTF, HTML, TIF or PDF.
  • Automatically generate e-mail file: when not checked, FoxyPreviewer will ask the user first for the attachment type
  • CDO e-mail settings: Users can add their own settings for sending their e-mails. The 'HTML' textbox lets you store a simple HTML file, that will contain some texts to be inserted in your e-mails, such as a signature.

Foxypreviewer general info
Foxypreviewer documentation
FoxyPreviewer FAQS
Foxypreviewer downloads