Seems Like Yesterday:
The year was 1997, my then and still best friend Shawn and I had taken on the fine venture of starting a software company. Looking back its clear we were grossly naive to the capital requirements to build a solid foundation for a profitable business. And because of this, we spent every free second working, thinking, and innovating; uninhibited by the B.S. that goes along with everything in life.
If it now stands for nothing else, the perfection we pursued then helped mold my professional career (which can't be a bad thing). But it wasn't until today, 8 years later, that I stumbled across an old diskette with a faded label that read "Paragon GUI Backup -DO NOT ERASE!". After being completely awe-struck this disk had survived 4 major moves (and who knows what else), I went about examining its contents. What I found were technical documents I wrote those many years ago. Dumbfounded by its professionalism (not to brag) I decided I should post them here for inspiration. Unfortunately, of the several dozen documents on the diskette, I was only able to recover one successfully before the diskette keeled over, made a rather peculair scratching sound, and died. That having been said, take a look:
[UNIT – ELMS]
This unit is used to define specific element structures that are used in the GUI.
An element is an essential inner part of the GUI. It provides information critical to the GUIs environment in the form of a record. When defined, this record contains information that specifies a particular area of the screen and contains appropriate usage variables(for that area).
Element structures are pointers to records. The standard element structure follows:
|
Standard Element Structure: |
Telement = ^element;
element = record
reserved : boolean;
selected : boolean;
x1,x2,y1,y2 : Word;
end;
Code Description |
|
|
This specific element is a basic rectangle with four coordinates and two focus delimiters. Naturally, not all element data is so basic. Any different type of element may be defined here, including not only different element shapes, but also different types as a whole. |
|
Linked Elements:
Elements can have additional element records attached to them. They are called,
“a linked element structure”. A good example of such would be element_data.
element_data may be used to define one or many different data types to be stored/associated with the specified element.
|
Linked Element Data Structure: |
Telement_data = ^element_data;
element_data = record
sData : string[15]
end;
Code Description |
|
|
This specific linked element is meant to hold string data. |
|
In order to properly “link” this data to the specific element you need only to define it properly in the var section. For example:
elmScrn2_2 : array[0..19,0..2] of Telement;
elmScrn2_2D : array[0..19,0..2] of Telement_data;
Notice the “D” in elmScrn2_2D. This “D” stands for “data” as you may have already guessed.
In order to have a better clarity of defining the var section for elements please (see –“Taking The Variableness Out of The Var” –elements-)
Execution Types:
Although possibly out of place, the exectuionTypes have been stored here. These may be updated/modified for most effective usage. In their standard format they are as follows:
executionTypes = (mouseOverA, mouseGoneA, mouseClickOverA, mouseClickOverAwayA,
mouseReleaseOverA, mouseReleaseAwayA);
executionTypes are used by the action unit to execute the appropriate action. (see – “UNIT – ACTION”)

