Customizing the grid processing and appearance
If the following screen captures do not fit in the frame due to the resolution of your monitor, then click here to switch to frameless mode, instead of scrolling left and right. Afterwards hit the Back button of the browser to come back here.
 
Basics
Microsoft introduced with Excel a data format, called comma separated values or CSV. Although the format did not become officially standardized, as more products, for example Outlook supported it, it became a quasy-standard. Now many other software vendors create/accept/exchange data in this format.
Some of the main characteristics of this format are:
Certain applications support this format using semicolon instead of comma; this is called semicolon separated values or SKV format. Semicolons do not receive any special treatment in the CSV format, and commas will be treated like any other character in the SKV format.
CryptoBola JPEG can record, store and retrieve data in CSV or SKV format and process the data in table-format presented in a grid. Processing means in this context, that such data can be entered, viewed and updated in the CryptoBola JPEG dialog without having to create an intermediate file and passing control to any application outside CryptoBola JPEG.
The way of processing and appearance of the data in the grid can be customized to a high degree in CryptoBola JPEG.
The generally accepted format is described on many Internet sites. Everything required to customize the grids is described in the following.
The data accepted and created by the CryptoBola JPEG grid application during processing adheres to the most generally accepted CSV or SKV format. The Password Management application does not require a header record (in fact it would process it as a data record, not as a description), because the data fields (their names and characteristics) are fixed in the application. However, the generic grid processing does not fix the number, name or characteristics of the fields. It requires, that the first record be the data descriptor. This record too is a valid CSV/SKV record, but its content will not be displayed in the grid; it will be used to control the appearance and processing of the "real" data.
The header record (the data descriptor) is the target of the following discussion; the customization takes place through modifying it's content. The fields of the header record constitute the description of the corresponding data fields. The number of fields in this record limits the number of data fields in the data records.
Following generic rules apply to the field descriptor values:
 
Field attributes
| /C | tells, that the field content (and the name in the column header) be centered.
It is mutually exclusive with /R |
| /E | designates the field for being edited in the Rich Edit subdialog; otherwise the field
will be edited "in place", within the grid boundaries. This option is important for fields,
which may have long character string values, like a diary entry.
It is mutually exclusive with /I and with /U |
| /H | marks a hidden field. Such a field will not appear in the grid.
Hidden fields must not be followed by not hidden fields |
| /I | denotes a numeric field, which may contain a sign, but no decimal point.
If neither /I, nor /U is specified,
then the field is of character type, the content is not verified.
It is mutually exclusive with /E, /M, /U and with /Y |
| /M | denotes a field, which may contain line breaks. Although the content will be displayed
in a single line in the grid, but while editing in place, line breaks can be inserted by
Ctrl-Return.
/E implies multiline editing, it is not necessary to specify /M. It is mutually exclusive with /I and with /U |
| /N | means, that null value (i.e. no value at all, an empty string) will not be accepted when editing the field content. "Null value" is not to be mixed up with a "0" |
| /R | tells, that the field content (and the name in the column header) be right aligned.
It is mutually exclusive with /C |
| /S | designates the field as secret. The specialties of a secret field are:
/S is mutually exclusive with /H |
| /U | denotes a numeric field, which may not contain a sign, nor decimal point.
If neither /U, nor /I is specified,
then the field is of character type, the content is not verified.
It is mutually exclusive with /E, /I, /M and with /Y |
| /Y | denotes a character field, the content of which should be a valid email address
or a "nickname" to an email address. The format of the content will not be verified.
Sending an email can be initiated from the grid processing by right-clicking on such a field. It is mutually exclusive with /E, /I, /M and with /U |
| /Tnnnn | specifies the maximum length of the character string the field can take up.
nnnn is a number between 0 and 1024; one to four digits are allowed. Specifying null imposes the default limit: 255 characters. /T is mutually exclusive with /I and with /U, as well as with /E |
| /FHxxxxx
/FNxxxxx /FSxxxxx | specify up to five indexes for the font heights, font names and font styles in four contexts.
See fonts for the detailed description of the font selections. |
| /PBxxxxx
/PFxxxxx | specify up to five indexes for the background and text colors in five contexts.
See colors for the detailed description of the color selections. |
| %nn | specifies the relative width of the column of this field in the grid.
nn is a number from 0 to 99;
it denotes a percentage of the entire initial grid width.
The relative width 0 "shrinks" the column width to zero. However, it is not like a hidden column. The width of a column in the grid can be changed to null in the grid any time, i.e. the column becomes "invisible" and it can be widened again. If there is no width specification for a certain field, its width will be (grid width) / (number of non-hidden fields of non-zero length) If the sum of the relative width specifications plus the implicite widths exceed 100, then the columns together become wider than the space in the grid, and some columns can be viewed only after horizontal scrolling. The relative width of the very first field must not be null. Relative width specification for a hidden field has only documentative meaning. |
If a field has no attribute specifications, following attributes will be assigned to it:
Note, that all restrictions and limitations regarding the format of data content (numeric, maximum length, not empty) are effective only when changing (editing, pasting, erasing) the field. It is possible to load, display and save for example a character string in a numeric field, but when changing it, the new value has to fulfill the requirements.
 
Color selection
The format of color selections is PFxxxxx, denoting foreground (text) colors and PBxxxxx denoting background colors.The letters P, F and B may appear in lower- or upper case.
Every character in xxxxx specifies the color for the field in a particular context. One to five characters may be given; if less than five are specified, the color of the text in the remaining contexts will be black (code 0) and the background will be white (code 1).
If there is no color selection for a field, the text will be black on white background in all contexts.
The contexts of a field are, in the sequence as their codes appear in the color specification:
Code 0 indicates black. The other codes (from 1 to 9 and A to Z) are shown in the following table under the corresponding color.
Note, that only digits and upper case letters are accepted as color code, in contrast to other specifications, where lower case letters are accepted as well.
| ||||||||||
| ||||||||||
| ||||||||||
| ||||||||||
| ||||||||||
| ||||||||||
|
If the text color is the same as the background color, the text is "invisible". This effect can be used for example to show the content of certain fields only in selected state.
 
Font selection
The format of font selections is FNxxxxx, for the font name, FSxxxxx for the font style and FHxxxxx for the font size (height).The letters F, N, S and H may appear in lower- or upper case.
Every character in xxxxx specifies the font name/style/height for the text of the field in a particular context. One to five characters may be given; if less than five are specified, the text in the unspecified contexts will have the default attributes.
If there is no font selection for a field, following attributes will be assumed for all contexts:
The contexts of a field are, in the sequence as their codes appear in the font specification:
Font name (font family) selection
See the chart at the end of this chapter for examples.
Note, that text in different fonts but identical nominal height appear in different heights and widths. For example Times New Roman is not as tall as Arial is, though the characters of Arial are narrower.
Font style selection
This text appears in bold, which means thicker lines, wider characters.
This text appears in italic. This means, that the characters are slented.
This text is underlined.
This text is struck through. It is seldom useful in a grid.
This text is bold and underlined.
This text is bold. But then why is it struck through?
This text is italic and underlined.
This text is italic and struck through.
This text is bold and italic.
Font height selection
Note, that if the font height is not specified, 9 point (code 2) will be assumed.
Sometimes the term "font size" will be used instead of "font height", but that is somewhat misleading. The characters have several size specifications, most notably height and width. With increasing height, the with is increasing too, but this does not necessarily mean, that the characters of a certain font with a certain height are wider, than the characters of another font with less height.
The following chart demonstrates the appearance of selectable fonts with different heights
(all texts in "normal" style).
The sizes of characters in this chart depend on the display settings but not on the Internet browser setting,
i.e. they appear exactly in the size as they would appear in the grid displayed by CryptoBola JPEG.
| Times New Roman 7 point | Arial 7point | |
| Times New Roman 8 point | Arial 8 point | |
| Times New Roman 9 point | Arial 9 point | |
| Times New Roman 10 point | Arial 10 point | |
| Times New Roman 11 point | Arial 11 point | |
| Times New Roman 12 point | Arial 12 point | |
| Times New Roman 14 point | Arial 14 point | |
| Times New Roman 16 point | Arial 16 point | |
| Times New Roman 18 point | Arial 18 point | |
| Times New Roman 20 point | Arial 20 point | |
| Courier New 7 point | Verdana 7 point | |
| Courier New 8 point | Verdana 8 point | |
| Courier New 9 point | Verdana 9 point | |
| Courier New 10 point | Verdana 10 point | |
| Courier New 11 point | Verdana 11 point | |
| Courier New 12 point | Verdana 12 point | |
| Courier New 14 point | Verdana 14 point | |
| Courier New 16 point | Verdana 16 point | |
| Courier New 18 point | Verdana 18 point | |
| Courier New 20 point | Verdana 20 point |
 
Example: address book
In this example an address book will be prepared for grid processing. The fields (columns in the grid) are based on Microsoft's Address Book management. Note, that the profile resulting from the following procedure can be downloaded from the CryptoBola site. This detailed, step-by-step procedure is meant for those, who want to create a different appearance and/or content.
Those, who are using MS Address Book, can prepare this easily with the data of their own contacts. Otherwise, one has to type in (or copy and paste) the result displayed below. When not exporting the data, one can decide if comma or semicolon will be the separator.
It is possible to create two or more files from the address book. For example, one would countain only the name and the email address, and another all data, except the email address. However, these would have to be maintained separately in the future.
So, let's start with exporting the address book. Click on File,
Export, Other Address Book.
Select Text file (Comma Separated Values), then click on
Export.
Specify or browse for a location and file name (the standard file name extention for this kind of data is
csv respectively skv).
Then click on Next. The following box offers a selection of fields.
Select First Name, Last Name, Nickname (be careful not to select Name,
because that would double the first and last name),
E-mail Address, Home Street, Home City, Home Postal Code,
Home State, Home Country/Region, Home Phone, Mobile Phone,
Business Phone, Company, Job Title and Notes.
Remove any other checkmark.
Note, that this is only an example. When exporting the address book, one decides, which fields have to be included. Export even those fields, which have never been filled but you might want to use in the future; exporting them positions other fields accordingly. There is an easy way to exclude unwanted fields from being displayed, but introducing new fields later requires more manual intervention.
Now, click on Finish. A file with the specified name will be created, containing the selected data of your contacts.
It's time to start CryptoBola JPEG. Click on Embed. You can select the JPEG basis for your future address book, or for the sake of this excercise, you can escape the subdialog of the basis file selection. Keep in eyes, that you can change the following customization at any time in the future very easily, except adding or deleting fields (those require some more work).
Click on Source of Data to embed and type in (or select by the
Browse subdialog) the location and name of the exported address book you just created.
Click on Validate in order to have the file opened and read into memory.
Click on the down-arrow beside Data Type to see the drop-down selection list. Select Grid from CSV (although this is somewhat premature at this point of proceeding). Then click on View / Edit. If error messages appear at this point, then most probably the data has been generated with semicolon separators; select Grid from SKV.
The result will look like this, of course with the data of your contacts:
This is not very attractive, to say the least, not even when maximizing the window. It's time to start customizing the appearance of the data, but first let's see the data in plain text mode.
Click on Cancel to exit the subdialog, and select Plain text from the drop-down menu, then click on View / Edit again. The text editor displays all the data generated by the Export function of the Address Book.
The plain-text data of this example is
The very first line is a special one: it contains the names of the fields in the following records. The content of this line does not depend on the contact data, only on the selection when having exported the data from the address book. Take a look at this line:
First Name,Last Name,Nickname,E-mail Address,Home Street,Home City,Home Postal Code,Home State,Home Country/Region,Home Phone,Mobile Phone,Business Phone,Company,Job Title,Notes
Every field of the exported address book is named here, in the sequence as they appear in the following lines. The grid processing program uses this line to construct the grid.
The sequence of the fields must not be changed, because this record has to reflect the data in the following records; however, in the grid processing it will be easy to change the sequence of columns and adjust the field data according to the changed sequence.
Fields can not be added or removed simply by inserting or erasing the name of a field; the data would have to me modified in each record to achieve that.
The rest of the file contains the data of the contacts exported from the address book. Note, that the data of a single entry (one contact) may appear in several lines. That is, because some fields accept line breaks (for example the street address and notes). However, line breaks appear always between quotation marks.
The values of the fields are separated by commas (it does have a reason to call this format "comma separated values", does not it?). Even if a field does not have any data in a record, the comma must be there, indicating the position of the following field.
The first data record in the example is
John,Doe,Jonny,johndoe@yahoo.com,"2135 Railway Street
(just around the corner)",New Westminster,1A2B3,CA,USA,123.456.7890,321.654.0987,,,,"This is the imaginary guy,
who will be mentioned in courts,
when the real person must not be named"
Note, that the fields "Home Street" and "Notes" are within quotation marks, because both contain line breaks, and the fields "Business Phone", "Company" and "Job Title" have no values.
Let's start with making this grid a bit more attractive. It is important to understand, that the following customization is only an example, and everyone can change the grid according to his/her own taste and need.
While we are in the text editor, we can make the first changes: we rename some fields (some of these changes are simply to avoid that the text in the header be longer than the data). Let's change
Click on Save after these changes. Then select Grid Format again and click on View / Edit. Almost no changes are visible due to the narrow columns (only the first letters of the column names appear).
Start with the easiest changes in the grid: with the sequence and size of the columns.
First we resize the columns, so that at least their names become visible.
When the mouse cursor is close to a divider in the column header, it takes a different shape:
a short vertical line with a short horizontal arrow on both sides:
Go with the cursor over the right side divider of the column and drag it
(i.e. hold down the left button over it and move the mouse) to the right to increase the column size
or to the left to decrease it.
If someone is shrinking the column so much that it totally vanishes, it can be "revived".
It's divider in the header becomes "integrated" into the left-side divider.
When the mouse cursor is approaching such a divider from the right side, it changes into
and by dragging this marker to the right, the column appears again.
So, increase the column size of the important columns (whichever they are) so far, that the content can be seen completely, and the rest so far, that the columns are recognizable from their respective headers. As soon as a column becomes wider, a horizontal scrolling bar appears, because the some of the column widths exceeds the available space in the grid. Consequently, one has to scroll to the right in order to reach the rightmost columns.
The following two images show the left and right side of an example for this adjustment. The "State" column became even narrover than it was, because there is no reason to build a wide column around only two characters (although the header text is not visible at all, it is easily recognizable from the content, that state codes are in this column).
Note, that several important fields, like the email address are not completely visible, i.e. their columns are narrower than the content in most of the cases. With CryptoBola JPEG there will be no need to see and copy these fields somewhere else, for example when creating an email. Read the tutorial on working with grids.
Furthermore, such field content, which is not completely visible in the column, appears in its entirety in the extended text display, i.e. when the cursor stays over that field, like the street address of John Doe in the first image of the example (try it out now).
Next, rearrange the columns. We decide, that the sequence of columns will be:
nickname, email address, last name, first name, phone, mobile, business phone, notes, company, job title, street address, city, postal code, state, country
This sequence reflects the frequency we need to see the respective data.
The sequence of columns can be changed any time by dragging and dropping the header of a column. There is a checkbox in the dialog window: Save column format. If this is checked, changes in the column sequence and width will be saved when clicking on Save or Finish.
Drag and drop the column header of "Nickname" to the place following the action column (that's the very first one), which is always the first column, it can not be moved, not can another column be moved at the front of it. "Drag and drop" means left-clicking somewhere in the header but not on the divider, holding down the mouse button and moving it over the desired place, then letting up the mouse button. A "shadow image" of the header goes with the mouse cursor and a narrow red line shows the divider between the columns, where this column will be placed when dropping it in that moment.
Then drag the email address, last name, and the rest of the columns to the designated place. The result will look like this:
Now it looks much better than at the beginning. However, some visual distinction between the columns would make it even better. Click on any field: the entire row will be selected, but it is almost imperceptible, like the marking of the field, which has been clicked on.
Further adjustments have to be made in plain text form. Click now on Finish. Save column format is still checked, so the changes in the column widths and sequence will be recorded.
Select Plain text from the Data type drop-down menu, then click on View / Edit again. In plain text the changes we made in the columns are visible in the first entry (scrolling down in the text, it becomes visible that not only the header, but the actual data fields too have been rearranged). Changing the font of the text in this window to fixed width characters (by checking the box Fixed-width font) improves the readibility of text of such nature.
Note, that now the header information of each field is broken into two lines, because the header text and the rest are separated by a line break. The numbers following the percent signs show the size of width occupied by the column, in the percentage of the initial grid size. The sum of these values is 187; that means, that the columns all together are wider than the grid; we new this already, because we had to scroll horizontally in order to see all columns.
One should keep in eyes, that the relative widths of the columns are calculated from the actual widths and then truncated to a whole number. When there are so many fields in the grid as here, the error caused by the truncation to whole numbers can be relatively large. Consequently, when the same data will be reloaded with these specifications, applying the whole numbers as percentages, the widths in that display can be a bit different from the widths shown before.
We decide for following format adjustments to enhance the grid's and the fields' appearance:
Here is the modified field description (the fixed-pitch font is selected for a better overview of the field descriptions):
and this is, how the grid looks like with a selected row and a selected field:
The following example shows the extended field display (it appears, when the cursor stays over a field, the content of which is not completely displayed). Note, that the source field of this display does not need to be selected; as the example shows, just another row was selected, when this display appeared:
The following image demonstrates editing within the grid (initiated for example by double-clicking on the field):
 
Example: diary
The sample diary is very simple from the point of customization. It consists of only four fields: date, time, a note and the record of events. Because we don't have a source for generating a starter content in comma separated values form, we start from scretch: by defining the field names and their sequence.
We declare following fields and formats:
We have to enter these definitions manually. Let's go in Embed, open the editor in plain text mode, and enter the following:
then click on OK, select Grid Format from the Data type drop-down menu, then click on View / Edit again.
You will see a grid with the headers of the field you just defined, but there is no data row there.
Right-click on the very first header item (it is unnamed) and select Insert empty row on the top of this page. A row will be inserted with no data in it, but the "edit" column shows, that this IS a row. Now double-click on the Date field of this row. A small edit box appears, and you can enter the date for the first diary entry. The format of these fields will not be verified, but you should enter a correct date and time in every row in order to be able to sort them later. Type in for example "2005-01-29" and then Return. Then double-click on the still empty Time field and enter some reasonable time, 09:00 in the example. The Note field is meant to give an idea about this diary record. The example contains This is the very first diary entry.
Now, the most important field: the diary content. If you double-click on it, nothing happens, for it is declared as a secret field. Check the box Edit secret data and the Event field becomes editable in its own dialog. The small edit box is not suitable for entering and modifying larger text, but the edit dialog can handle up to one megabyte long text and it supports some text formatting as well.
After having entered two entries and created a "slot" for one more, the grid would look like this:
The only remaining step is to embed this data in a large enough JPEG basis.
 
Final notes
Home Modified: 2005-03-28