1 |
For a more detail version of this text see docs/readme.firebirdarrays.html
|
2 |
|
3 |
Example applications are provided for both one and two dimensional arrays. In each case,
|
4 |
the example applications create their own database and populate it with test data when
|
5 |
first run. Note that you will typically need to run the application before accessing
|
6 |
database properties in the IDE. This is in order to create the database referenced by the IDE.
|
7 |
|
8 |
Database Creation
|
9 |
-----------------
|
10 |
|
11 |
The IBDatabase property “CreateIfNotExists” is set to true in both examples. This
|
12 |
means that if the database does not exist when an attempt is made to connect to
|
13 |
it then the database is created. After it is created, the “OnCreateDatabase”
|
14 |
event handler is used to add a table to the newly created database and to
|
15 |
populate it with test data. The application then continues as if the database already existed.
|
16 |
|
17 |
By default, the database is created in the defined temporary directory. This
|
18 |
behaviour can be overridden by editing the example's “unit1” unit to remove
|
19 |
the “{$DEFINE LOCALDATABASE}” directive and setting the const “sDatabaseName”
|
20 |
to the required path e.g.
|
21 |
|
22 |
const
|
23 |
sDatabaseName = 'myserver:/databases/test.fdb';
|
24 |
|
25 |
1D Array Example
|
26 |
----------------
|
27 |
|
28 |
In this case, the test data table is defined as
|
29 |
|
30 |
Create Table TestData (
|
31 |
RowID Integer not null,
|
32 |
Title VarChar(32) Character Set UTF8,
|
33 |
MyArray Double Precision [1:12],
|
34 |
Primary Key(RowID)
|
35 |
);
|
36 |
|
37 |
Each row includes a floating point array with twelve elements. In the
|
38 |
example application, the table is displayed and edited using a DBControlGrid.
|
39 |
The title field is interpreted as a “Department” and displayed using a
|
40 |
TDBEdit control. The array field is interpreted as sales by month and
|
41 |
displayed as a one dimensional TIBArrayGrid with column labels. The
|
42 |
example allows both the Departname Name and monthly sales values
|
43 |
to be updated and changes saved. New rows can be inserted and
|
44 |
existing rows deleted.
|
45 |
|
46 |
Note: there is an LCL bug (http://bugs.freepascal.org/view.php?id=30892) which
|
47 |
will cause the 1D array example to render incorrectly. That is only the
|
48 |
focused row will show the array. The bug report includes an LCL
|
49 |
patch to fix this problem.
|
50 |
|
51 |
2D Array Example
|
52 |
----------------
|
53 |
|
54 |
In this case, the test data table is defined as
|
55 |
|
56 |
Create Table TestData (
|
57 |
RowID Integer not null,
|
58 |
Title VarChar(32) Character Set UTF8,
|
59 |
MyArray VarChar(16) [0:16, -1:7] Character Set UTF8,
|
60 |
Primary Key(RowID)
|
61 |
);
|
62 |
|
63 |
Each row includes a two dimensional string array with indices 0..16 and -1 to 7.
|
64 |
The grid interprets the first index as a column index and the second as a row
|
65 |
index (i.e. x,y Cartesian co-ordinates).
|
66 |
|
67 |
The example program displays a row at a time with a navigation bar
|
68 |
providing the means to scroll through the dataset, as well as saving
|
69 |
or cancelling changes, inserting and deleting rows.
|
70 |
|
71 |
This example illustrates the use of both column and row labels.
|
72 |
|
73 |
|