|Chapter 4 VCL Builder C++ Charting Walk-Through|
The following information
demonstrates how to create your first Embarcadero Builder C++ ProEssentials VCL Charting implementation.
It discusses installation, adding ProEssentials to a project, writing
your first few lines of code.
When running the
ProEssentials setup, the setup program installs the
ProEssentials DLL into system32 or SysWow64 on 64 bit systems. It also
installs the ProEssentials VCL interfaces into C:\ProEssentials8\Builder and C:\ProEssentials\Delphi.
Note if your Embarcadero IDE has both Delphi and Builder personalities, install into Delphi per our Delphi walkthrough and the VCLs will be available for Builder. Else your Builder specific files are:
|ProEssentials Pro DLL|
||Builder CPP helper for VCLs|
Constants and Declarations|
||Scientific Graph Object|
||3D Scientific Graph Object|
||Pie Chart Object|
|ProEssentials Standard DLL
After setup completes, use the Builder menus File / Close All and then File / Open to open
the file "GIGASOFT.BPK" found in
the C:\ProEssentials8\Builder directory. You
will see a project pane as shown to the left. Right click near the top "gigasoft.bpl" and select Install. The PAS interfaces are compiled and ProEssentials components installed
into the "Additional" tab. We provide the PAS source incase you need to tinker with the interfaces.
|Tools / Options... Dialog
After the components are
installed into the Builder IDE, use the File / Close All menu item and save the "Gigasoft"
package when prompted.
Use the File / New
menu item to create a new VCL Forms Application project.
Use the Tools
/ Options... menu to open the "Builder Options" Dialog as shown
to the left. Add "C:\ProEssentials8\Builder"
to the "Library path" field and select
"OK". If you installed into Delphi prior and have both personalities, add paths as needed.
Repeat the Tools/Options... settings to also adjust the "Include path" similar to the Library
With these steps, any project you create in Builder will find the ProEssentials VCLs, Units, Objs as needed.
ProEssentials to a Form...|
the PEGraph control from the Additional ToolBox and then click and
drag a rectangle selection on Form1's canvas. Size the vcl chart control as needed.
The adjacent image shows a similar result. This
represents the default state of a ProEssentials Graph.
The default state
has one subset with four data points. In the course of constructing your
own charts, you'll set the properties Subsets
and Points which define the quantity of
data your chart will hold. You'll then pass data via the YData[subset][point] two dimensional property array. The following section shows
example code of passing data. Note, if we were constructing a Scientific
Graph (PESGraph1), we'd also set XData[subset][point].
ProEssentials uses the
terms Subsets and Points but you can think of these as Rows and Columns.
Passing data is as simple as filling each Subset with Points worth of
Object Inspector to add the TForm1 FormShow event handler to the project.
Double clicking OnShow will auto generate this handler.
Enter the code as shown below. Try to write a few lines that use enums to see Delphi's intellisense. For example typing PEGraph.PlottingMethod : should prompt the ePlottingMethod enum. If this does not work, or Pegvcl and PEGraph1 is not recognized, the Library Path setting set above likely had a mistake.
PEGraph1->MainTitle = "Hello World";
PEGraph1->SubTitle = "";
PEGraph1->Subsets = 2;
PEGraph1->Points = 6;
PEGraph1->YData = 10; PEGraph1->YData = 30;
PEGraph1->YData = 20; PEGraph1->YData = 40;
PEGraph1->YData = 30; PEGraph1->YData = 50;
PEGraph1->YData = 15; PEGraph1->YData = 63;
PEGraph1->YData = 74; PEGraph1->YData = 54;
PEGraph1->YData = 25; PEGraph1->YData = 34;
PEGraph1->PointLabels = "Jan"; PEGraph1->PointLabels = "Feb";
PEGraph1->PointLabels = "Mar"; PEGraph1->PointLabels = "Apr";
PEGraph1->PointLabels = "May"; PEGraph1->PointLabels = "June";
PEGraph1->SubsetLabels = "For .Net Framework";
PEGraph1->SubsetLabels = "or MFC, ActiveX, VCL";
PEGraph1->YAxisLabel = "Simple Quality Rendering";
PEGraph1->SubsetColors = PEGraph1->PEargb(60, 0, 180, 0);
PEGraph1->SubsetColors = PEGraph1->PEargb(180, 0, 0, 130);
PEGraph1->BitmapGradientMode = false;
PEGraph1->QuickStyle = gLightShadow;
PEGraph1->GraphPlusTable = gGraphPlusTable;
PEGraph1->DataPrecision = gNoDecimals;
PEGraph1->LabelBold = true;
PEGraph1->PlottingMethod = gBar;
PEGraph1->GradientBars = 8;
PEGraph1->BarGlassEffect = true;
PEGraph1->LegendLocation = gLegendLeft;
PEGraph1->DataShadows = gWithThreeD;
PEGraph1->FontSize = gLarge;
PEGraph1->PrepareImages = true;
PEGraph1->CacheBmp = true;
PEGraph1->RenderEngine = gDirect2D;
PEGraph1->AntiAliasGraphics = true;
PEGraph1->AntiAliasText = true;
PEGraph1->AllowDataHotSpots = true;
PEGraph1->PEactions = gReinitAndReset;
MainTitle and SubTitle are set first. Note that setting
SubTitle to an empty string hides the subtitle.
Subsets and Points define the amount of data
you'll be passing.
Next, we pass some random data
into the YData[s,p] two dimensional property
PointLabels sets the first data point label located below axis.
SubsetLabels sets the first subset label.
Next, we set various
other properties controlling visual aspects, and enable flicker free updates with PrepareImages.
Finally PEactions is set to gReinitAndReset which tells ProEssentials to initialize and resetimage the image, in other words, you're done setting
Your code window will look similar to below...
Run your project and you'll see the resulting form.
you've just completed your first Builder / ProEssentials implementation.