Generalized grid processing
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.
 
Numeric vs. character type fields
Mandatory vs. optional field values
 
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 data accepted and created by the CryptoBola JPEG grid applications during processing adheres to the most generally accepted CSV or SKV format.
The data for the grid processing may have been just extracted or read from a file for embedding. Alternatively, one can start typing in the data in the grid processing or in the plain text editor. The password management dialog can be started without any data, because the field descriptions are fixed in the program. However, the general grid processing requires that at least one record, the field description is present; that can be entered in the plain text editing dialog as well.
The way of processing and appearance of the data in the grid can be customized to a high degree in CryptoBola JPEG. Those elements of the customization, which remain effective after the application has been finished are described in the grid customization). Other changes effect only the appearance of the data in the current dialog; these are described in the following chapters.
An important concept has to be explained here, relating to saving new/changed data and, optionally, the column arrangement.
When the grid processing starts, the data in the form of comma/semicolon separated values is stored in the storage acquired by the CryptoBola JPEG main dialog (if there is any data to start with). The grid application restructures this data for presentation and processing and stores it in its own storage. Saving the data (which includes the column arrangement information as well, for that is the first record of the data) in the grid application means, that the data will be converted back in comma respectively semicolon separated values form and stored in the main dialog's storage. The grid application can not undo this change any more.
However, this does not mean that the data will be saved in a file or embedded in an image: that has to be commenced by the user after the grid application dialog has been finished.
Nevertheless, saving the data in the grid application can be important: whenever the user wants to "forget" the changes made since the last saving, he/she can exit the application by CANCEL and restart it; now that data will be taken, which has been saved last time. After having accepted some changes on this level, the user still has the option of discarding the changes or to save the data in a file or in an image. In other words, this is a two-level storing and saving process.
Saving the column arrangement is optional (it is not available in the password management, because the column arrangement is fixed in that application). The user might wish to change the order and widths of the columns temporarily only, i.e. for the duration of the grid application dialog; in such case the changed column arrangement should not be changed. However, if the changes are meant as permanent, then the respective checkbox should be checked. This is especially important during the customization process. Although the column widths are relative easy to change in the first record of the data by the plain text editor, changing the order of the actual data fields requires, that all existing data records be changed as well. By changing this in the grid dialog and saving the changed arrangement provides for the automatic reorganization of the data columns as well.
CryptoBola offers a host of functions in the grid application. Note that not all the listed functions are available in every application under all circumstances. For example the "Email to" function is enabled only when the field, which has been right-clicked on is designated as an email-address. The following description applies to the Password dialog as well, with some minor exceptions.
 
The grid processing dialog
CryptoBola's grid processing presents the data in the form of a table. The fields (individual values) of a record are displayed in a row, and the same fields of different records are displayed in columns. The rows and columns of the table are separated by thin lines, that's where grid comes from.
This kind of data presentation is very much like the right side of Windows Explorer's dialog (the file list): the columns of the file list are Name, Size, Type, Data Modified. The data of each file/folder is displayed in one row; however, Explorer does not display grid lines.
Let's take a diary as sample:
The dialog window features following controls:
The main feature of this window is the grid. It consists of a header and several data rows; all of them are subdivided by thin lines in several fields. The fields above each other constitute a column. Their meanings and how to work with them is described in the following chapters.
The grid application's dialog window can be minimized, maximized or resized by dragging the side or the bottom of frame or one of the bottom corners by the mouse. (As the matter of fact, the above example shows a resized window: the bottom of the window is "pulled up" in order to save space.) The application retains this size when stopped and started again, until the main dialog finishes.
 
The header
On top of the grid there is a special row, the grid header:
It consists of button-like rectangles over the columns; these buttons are the column headers of the respective columns. Each column header contains a sorting indicator and the name of the column, except the very first one, which does not have a name (this column will be referred to as the action column).
The names in the column headers are taken from the data descriptor record in the generic grids, while they are fixed in the application of the password management. The fields of the sample diary record are named Date, Time, Note and Events.
The importance of the header is not, that it names the columns, rather that it provides tools to carry out certain functions.
 
When initially loading the data the dialog starts with (if there are data records when starting), the sequence of rows reflect the original sequence of those records.
When clicking on the header of a field, the rows will be sorted according to the values in that column. The first click on a column header sorts ascending, the second click on the same header sorts descending, then again ascending, etc.
Ascending sorting means, that the row of a record, the corresponding field value of which is higher than that field
in another record will appear higher (closer to the beginning) than the other record.
This sorting will be indicated by
in that header.
Descending sorting means the opposite sequence (records with higher field valueas appear later in the grid).
The descending sorting is indicated by
in the header.
Fields declared as of numerical type will be compared arithmetcally (they can be negative as well). In case the actual value of such a field is not numerical, the length of the character string will be used in the comparison. A field without actual value ("empty field") is always deemed to be of lower value than any other.
The rows can be sorted only according to the values of a single column at any time; correspondibly,
the sorting indicator in all other headers is
,
showing that the current sorting does not reflect the values in that particular column.
Sorting on the action column
has a special meaning:
the rows will be displayed in the physical sequence of the corresponding records
ot in the opposite sequence if the sorting is ascending respectively descending.
When starting the dialog and the grid is not empty, the records appear in their original sequence;
according,
appears above the
column.
Inserting a row or changing the value of a field in the column of the current sorting invalidates the sorting, except if the current sorting reflects the records' physical sequence.
 
A column can easily be moved before or after another column, by dragging and dropping the column header with the mouse: move the mouse pointer over the header, press the left button and hold it dow and move the mouse pointer forward or backwards in the header to the designated location, then release the button.
Note, that the action column can not be moved at all, and no column can be moved to the first place.
 
The width of any column, except the action column can be changed any time by dragging its right side divider
by the mouse (clicking on the divider, holding down the left button, dragging the mouse pointer, releasing the button).
When the mouse cursor approaches the divider of a column header, it changes into
;
this indicates, that now the divider can be grabbed and dragged.
The column width can be reduced to zero this way; the effect is, that the column (the header and the data) becomes temporarily invisible. This is how the above example looks like if the Time field's width becomes zero:
(The "dead space" at the right side of the grid could be eliminated by widening the other fields or by resizing the window, but this is not of importance at this point.)
It looks like the field Time was lost forever, but it is not: when the mouse cursor
is close to the divider from the right side between the fields Date and Note
(that's the spot, where Time went missing), the cursor changes into
; at this position the divider can be dragged to the right
and the invisible field's width becomes real, the field appears again:
Double-clicking on a divider between the column headers widens or shrinks the column to the size, which is required by the longest content in that column.
Whenever the sum of the field widths is more than the width of the grid, a horizontal scoll bar will be displayed. Resizing the grid (by resizing the dialog window) recalculates all field widths so, that their sum equals to the grid width, i.e. horizontal scrolling is not necessary. However, the proportion between the field widths remains unchanged. Thus, if the grid and some fields need to be resized, first the grid should be resized; afterwards, resizing individual fields remains effective.
 
Right-clicking on the action header (the one above the
button)
displays a small menu of functions:
The options for sorting don't offer anything new. However, the other two options deserve to be described.
Selecting the Insert empty row on top of this page option is the only way to insert a row into an empty grid (the other insert options refer to an existing row for positioning of the new row).
The Keep and save the current row sequence function rearranges the data records according to the current sequence of rows in the grid. After this rearrangement, sorting on the action column ascending will result into this sequence. When saving the data records later, they will be written in this sequence, and when viewing next time, the rows will be shown in this sequence as well.
 
Data rows
The number of displayed data rows depends on the window size and, of course, on the row height (which, in turn, depends on the fonts used in the grid, see the font selection in the customization).The first field of every record displays the same button-like image:
This is the "action button", offering functions relating to the entire row, as opposed to functions
relating to specific fields.
Before proceeding, the concept of selection needs to be explained. When clicking on any field of a data row, the color of that row changes (according to the customization), and the field having been clicked on will be displayed in a particular color. Let's see this in an example and click on the Note field of the second row:
Now, let's click on the action button of the third row:
here the action button itself will be shown in a particular color. This shows, that functions will be directed towards the entire row, not towards a particular field. Note, that while the colors of the data fields can be customized (they can appear in the same or in different colors), the colors of the action button are always black on khaki when not selected and red on khaki when selected.
Selection can be made by the keyboard positioning keys (left/right/up/down/page up/page down/home/end) as well. This way one can jump from the beginning to the end of the grid, etc.
 
Selecting a row can be useful at times, for example for highlighting the data in it. However, the action button offers several functions through mouse and keyboard interface. In order to see the possible functions, it's enough to keep the mouse pointer over the button; a tooltip-help will appear:
(Note, that the password management dialog offers additional functions; see the related description.) So, when the action button is selected, then pressing Del deleted the entire row (but don't worry, first a confirmation message has to be answered). Pressing Insert will create a new row with empty fields, following the row the action button of which has been selected.
Note, that after inserting a row, the field values have to be filled one by one via the field update function.
Right-clicking on the action button displays a small manu of functions, which can be selected from the menu simply by clicking on one:
Of course, these functions are accessible by keyboard as well, but some people prefer clicking to typing.
 
 
Numeric vs. character type fields
Every field has a type associated with it; this can be numeric or character type. The type is defined explicitely or implicitely in the data descriptor record. A field of numeric type accepts only decimal digits and, depending on its definition, optionally a leading + or - sign (see the field attributes in the customization). The positive sign will not be displayed, nor will it be stored when saving the data.
When initially loading the data in the grid, the actual field values will be verified; incorrect values will not be accepted. The same occurs, when changing the value of a numeric field: if the changed value of a field of numeric type does not match that type, the new value will not be accepted.
However, after having inserted a new row, such fields too will be inserted without any actual data; the field is supposed to be filled by the update function following the row insertion.
 
Mandatory vs. optional field values
The customization may specify that a field is of mandatory type. This rule will bee enforced only when changing the value of such a field; when initially loading the data in the grid, such fields may start without actual data. Of course, after having inserted a new row, such fields too start without any value. For example the Date field of the sample diary is specified as a mandatory field. When changing the value of this field, the new value can not be "empty", nor are the functions Cut and Erase accessible.
 
Right-clicking on any data field displays a menu of functions:
The functions are:
This function is not available for a secret field, except if the checkbox Edit secret data is checked
Note, that editing the field content can be initiated by selecting the field and pressing F2 or by clicking on it again (the latter can be achieved by double-clicking on the field as well).
Note, that an empty "content" too can be "pinned" on the clipboard; when pasting this somewhere, it results in an empty string.
As a special marking of this field, a red frame wis displayed around the field until another field gets selected:
The same effect can be achieved by selecting a field and typing Enter as well.
This function is not available or a secret field, except if the checkbox Edit secret data is checked, nor for a mandatory field
This function is not available for a field, the editing of which occurs in the rich text editor, nor for a secret field, except if the checkbox Edit secret data is checked
It is not available for a secret field, except if the checkbox Edit secret data is checked, nor for a mandatory field
This function is available only for a field, which is customized as "email address".
 
Note, that in the column of Events, where rather much text could be expected, only three asterisks appear. This is because that field has been declared as a secret field (see the field attributes in the customization). As such, its content will be displayed only if the Show secret data checkbox is checked:
 
Some explanations for editing fields:
 
If the current content of a field does not fit in the space actually appearing in the grid, it's content will be displayed in a small box (like when editing it), wenn the mouse cursor stays over the field:
However, in case of a field, which will be edited by the rich text editor, the text This field contains nnn characters will be displayed, where nnn is the length of the current content.
Home Modified: 2005-03-28