jsNoteBook and jsSysNoteBook Design and Description
The following is a brief description of basic overall operation and
design of the jsNoteBook dBL class. Because the jsSysNoteBook class is a
subclass of the jsNoteBook class, this description also applies to the
jsSysNoteBook class. Don't worry if you don't clearly
understand what is described. Simply read it for purposes of 'awareness'.
Much of the following will become clearer as you become familiar with
using jsNoteBook. In reality, jsNoteBook is quite simple to use. What
follows is a small attempt to satisfy those who want to know 'just a bit more'.
jsNoteBook is a subclass of the stock NoteBook dBL class. It can be placed on
a Form, a SubForm, a Container, or a NoteBook. Simply ensure that the
form's metric property is set to 6 - Pixels, select the jsNoteBook
class on the Component Palette, and drop it anywhere on the Form,
Container, or NoteBook, or instantiate it as you would any other class
within a SubForm. The form.metric property
*must* be set to 6 - Pixels for proper function of jsNoteBook at
runtime. The form.metric setting is checked when the jsNoteBook object is
created and if form.metric # 6, a message box will display with a warning
message.
At runtime, a jsNoteBook object will function the same as the stock NoteBook.
None of the default stock NoteBook operation has been changed. jsNoteBook
simply adds functionality that does not exist in the stock NoteBook.
Like most of the visual UI classes in the core product, the NoteBook class in
the core product is not created by the core product. Rather, it is surfaced by
the core product from the operating system. Although it is known as a NoteBook
in the context of the core product, it is really a tab control window class
provided by the operating system. dBASE simply 'surfaces' the tab control in
a manner that is compatible and consistent with the dBL language.
The additional functionality of the jsNoteBook class is achieved through the
operating system's API in the same way that dBASE itself talks to the API to
create a tab control and surface the dBL access through the stock NoteBook class.
jsNoteBook simply uses API functionality to surface additional items that have
not been exploited by the core product.
The tab control/NoteBook window is a message-based window rather than a
function-based window. Almost all functionality is
implemented via messages sent to the tab control/NoteBook window. Some of
these messages use complex data structures to pass information to and from
the NoteBook window. The jsNoteBook class implements methods
(functions) which provide dBL access to the messages and structures. Each
method encapsulates a specific message supported by the tab control/NoteBook
window by creating and filling any necessary data structures, sending
the appropriate message to the tab control/NoteBook window, and by retrieving
any returned data as necessary from the associated data structures.
Don't let the discussion here regarding API, structures, and messages scare you
away. jsNoteBook makes it easy to extend NoteBook functionality in dBL
application code without needing to know how to work with structures or talk to
any API. jsNoteBook bridges the gap between the application dBL code and the
NoteBook window via the windows API. Through a few added methods, the advanced
functionality of the jsNoteBook class can be directly
exploited using relatively simple dBL application code.
Because the jsNoteBook class is, in the most simple definition, a dBL
'wrapper' for the operating system's tab control window class, the most
authoritative resource for information regarding tab control technology,
operation, and reference can be found at MSDN online under
Individual Control Reference.
Also, be sure to search MSDN for other information and examples of
using the tab control.
But most of all, be sure to read the remaining jsNoteBook documentation.
And review the dBL sample forms included with the jsNoteBook package to
become more familiar with how jsNoteBook can be used in dBL applications.