FoxCharts 0.14 ALPHA released !

i'm happy to announce that foxcharts has recently been accepted as a vfpx project.

today i've just uploaded to vfpx at codeplex a new version of foxcharts. this is version 0.14 - still alpha - not for production !

visual foxpro 9 and the gdiplusx library from vfpx 

first of all i have to thank you all for your kind comments and feedback you provided in my last post. i had never expected to receive so many comments, in this blog, at the other vfp forums and by email. i really apreciated that. be sure that your feedback resulted in a superpowered motivation to improve it.

it is also important to tell everybody of the importance that both bo durban and craig boyd have in this project. they are the menthors and fathers of gdiplusx. without gdiplusx this project would become almost impossible. if i had to use any other of the gdi+ classes available for vfp, for sure it would have taken much more time - believe-me, i've tried them all.

using gdiplusx i can be indeed much more productive. once you understand how it works, things become really easy and simple.

at first sight, when i saw one of the first versions that bo and craig designed for gdiplusx i was really amazed, and i said to myself - i have to go deeper into this.

bo durban has also provided important help, providing important suggestions, support and testing. thanks also to emersonreed, luis maria guayan and leandro walfrans for your tips and support.

this version also distributes the two main files from gdiplusx - system.app and gdiplusx.vcx.
if you are already a gdiplusx user, you can use your own gdiplusx version.
just make sure to be using the latest version.

this new release contains lots of enhancements:

chart types
- bar charts
- multiple bars
- stacked bars

- pie
- doughnut

- lines
- area
- points and shapes

color variations:
- basic colors
- custom colors
- gradient colors
- random colors
- monochrome
- gradient or solid colors

legends in many places: axys, shapes, side legends

scales - automatic or customized

- titles
- subtitles
- backgrounds (solid or gradient)
- fonts
- colors

the sample form shows most of the features that are available. run the form "chartssample.scx" and play changing the various properties, generating some cool charts like the ones below.

all the relevant codes are in the init() event of the sample form. with very few lines of code you can create super cool and beautiful charts.

this sample also includes a report sample. check the codes in the command button that generates a report to see one of the various ways we have to print our charts.


important to remember that this is still an alpha version, and is not recommended to be used in production although it works nice.

some important improvements still need to be applied, specially in the class initialization. the codes also need to be optimized. my priority was in obtaining the results, and in many places the performance can be improved.

if you have any tips, or can provide suggestions, or fixes, you are most welcome !

enjoy !

download the latest version directly from the foxcharts page on vfpx:


the page for the latest release 0.14 alpha:










here are the properties that are currently provided in foxcharts, that you can use to improve your charts:

sourcealiascharacter, the name of the alias that contains the needed fields that will create the chart
fieldvalue1character, the field name of the cursor that contains the numeric values that contain the values that will create the chart.
fieldcolorcharacter, the field name of the cursor that contains the rgb values of the custom colors for the chart
fielddetachslicecharacter, the field name of the cursor that contains the logical values that tell if the slice of the pie or donut chart will be detached or not
fieldhideslicecharacter, the field name of the cursor that contains the logical values that tell if the slice of the pie or donut chart will be hidden or not
fieldlegendcharacter, the field name of the cursor that contains the character values that contain the main legends of the pie or donut charts
fieldlegend2character, the field name of the cursor that contains the character values that contain the secondary legends of the chart that will be drawn inside the slice, or point or bar.
fieldxaxyscharacter, the name of the field that contains the text to be drawn in the x axys
color1numeric, the rgb value of the color from the first chart
legend1character, the legend text for the first sequence of values
charttypenumeric, type of chart: 1 = pie ; 2 = donut ; 3 = unspecified ; 4 = point ; 5 = line ;  6 = area ; 7 = simple bar ; 8 = multiple bars ; 9 = stacked bars
chartscountnumeric, the number of value sources
fontnamecharacter, the name of the font to be used to display text
titlefontsizenumeric, the font size for the main title
titlecaptioncharacter, the title caption
titleforecolornumeric, the title and subtitle forecolor rgb value
subtitlecaptioncharacter, the subtitle caption
subtitlefontsizenumeric, the subtitle font size
showlegendlogical, shows the side legends
legendfontsizenumeric, the fontsize for the side legends
legendforecolornumeric, the legend fore color rgb value
showvaluesonshapeslogical, determines if the values will be drawn inside the shapes of the chart
legendonshapecolornumeric, the rgb value for the shape color
legendonshapefontsizenumeric, the font size for legends on shape
showaxyslogical, for line, area or point charts - determines if the x and y axys will be drawn
axysxcaptioncharacter, the main text for the x axys
axysycaptioncharacter, the main text for the y axys
axyscolornumeric, the rgb value for the axys main color
backcolornumeric, rgb value of the main backcolor
backcolor2numeric, rgb value of the secondary (destination) backcolor. this is used to create gradients, together with "backcolor"
backgradientmodenumeric, if gradient background (having backcolor2 specified) - 0 - horizontal; 1 - vertical; 2 - diagonal1 ; 3 - diagonal 2
showscalelogical, determines if the scale in the y axys will be shown
scalenumeric, the scale value for the y axys; 0 = automatic scale
scalebacktypenumeric, the background scale type; 0 = none; 1 = lines; 2 = rectangle
colortypenumeric, the type of colors of the chart: 0 = basic colors   1 = custom (default)   2 = random   3 = scale of gradients
brushtypenumeric, type of brush used to fill the chart: 1 - solid colors; 2 - gradient colors; 3 - monochrome hatch brush
gradientlevelnumeric, for gradient brush mode (-10 = destination black; 0 = solid color; +10 destination white)
alphachannelnumeric, 0-255 determines the level of the transparency level; 255 = opaque; 0 = transparent
_3dnumeric, the quantity of pixels that create the 3d effect (0 = plain)
marginnumeric, specifies the margin width created in the text portion of the control.
donutrationumeric, for donut chart - the width of the donut related to its size ( 0.01 = full slice ; 0.99 = thin)
linecapslogical, for the case of plain line chart, shows rounded caps in each point.
pointsshapenumeric, the shape to be used in a points chart: 0 = round; 1 = square; 2 = triangle; 3 = cross; 4 = star; 5 = man; 98 = gdi+x path object; 99 = custom image
pointsshapewidthnumeric, for point chart, determines the width of the pen that will draw the shapes
piedetachpixelsnumeric, for pie and donut charts, the quantity of pixels to detach from center
barsspacebetweennumeric, for bars chart - the distance in pixels between bars
area3dtoplogical, when true, a line will be drawn on the top of the 3d area chat
multichartlogical, determines if more than one kind of chart will run at the same time




  1. I second that!

    WOW !

    Great work Cesar

    Thank you very much for all the time and effort you put into developing this and other useful and high quality classes, and, also for sharing them with the VFP community.

  2. Wow, amazing work, Thank you very much for the effort :)

  3. It is really nice work Cesar.

    Cesar Rocks :)

  4. Roberto Barros - BHApril 26, 2008 at 6:22 PM

    Simply the best!!!!!!!!!!!!!!!!

  5. very good,I would like to FoxCharts 1.00 released

  6. I look forward to its next version.

    I had translated this article  into Chinese.Please forgive me.

    You can visit the link below to see the Chinese version of it.

    Thank you very much!
    Hi Xinjie,
    Feel free to translate any post from this blog to any language you want. All I ask you is to always send a comment here telling the URL that contains the translated article, so that other people that are native to your language can benefit from it too.
    Thanks very much!

  7. Thanks again!

    I will written link address in comments of the corresponding article if I translate it.



    Realmente es un muy buen trabajo

    Gracias Cesar


  9. sooo ... great