Visit Gigasoft's Web Site
 ProEssentials v10 Help

Chapter 3: ActiveX using PEvset

The following discusses using PEvset to pass blocks of data quickly within VBA. 

 

1. You need to load the DLL declarations via module "Module.BAS".

 

2. Use ReDim to dynamically allocate memory to use as a temporary buffer.

 

 ReDim MyTmpData(Pego1.Subsets * Pego1.Points) As Single

 

3. Fill this array in the appropriate form defined by SubsetByPoint. By default you will pass all of the first subset's data-points, followed by the second subset's data-points and so on.

 

4. Use the PEvset function to transfer data.

 

Call PEvset(Pego1.hObject, PEP_faYDATA, MyTmpData(0), Subsets * Points)

 

This VB/Access example code shows how to replace the slow YData property array with the fast PEvset DLL call. Also note that if using double precision YDataII and UsingYDataII is TRUE, then TmpData should be dimensioned as Double rather than Single.

 

 

** Make Random Data for Graph Object **

Pego1.Subsets = 4

Pego1.Points = 12

 

** This is the slow way which is included for comparison **

For s = 0 To 3 4 subsets

   For p = 0 To 11 12 points

      Pego1.YData(s, p) = (p + 1) * 5 + Rnd(25)

   Next p

Next s

 

** Pass data via dynamically allocated one dimensional array **

'** This logic stores all of the first subset's data and

'** then the second subsets's data and so on into the TmpData array.

 

ReDim TmpData(Pego1.Subsets * Pego1.Points) As Single 'Note Single

For s = 0 To 3 4 subsets

   For p = 0 To 11 12 points

      Offset = (s * Pego1.Points) + p

      TmpData(Offset) = (p + 1) * 5 + Rnd(25);

   Next p

Next s

 

Call PEvset(Pego1.hObject, PEP_faYDATA, TmpData(0), 48);

 

Installed Examples

The use of PEvset within VB can also be found in the Access example project.