359 lines
13 KiB
Plaintext
359 lines
13 KiB
Plaintext
|
Turbo Vision 2.0 Programming Guide
|
||
|
==================================
|
||
|
|
||
|
This file contains information on material added to Turbo Vision
|
||
|
2.0 after the Programming Guide had gone to press and also
|
||
|
corrections to a few errors in the manual. We strongly suggest
|
||
|
that you mark these corrections and changes in your manual for
|
||
|
future reference.
|
||
|
|
||
|
|
||
|
=============================================================
|
||
|
Changes and additions to Chapter 19, "Turbo Vision Reference"
|
||
|
=============================================================
|
||
|
|
||
|
=============================================================
|
||
|
CreateFindDialog function Editors
|
||
|
=============================================================
|
||
|
|
||
|
Declaration function CreateFindDialog: PDialog;
|
||
|
|
||
|
Function Constructs and returns a pointer to the
|
||
|
standard text search dialog box used by
|
||
|
StdEditorDialog. If you want to customize
|
||
|
the simpler editor dialog boxes but still
|
||
|
use the standard text search interface,
|
||
|
your editor dialog box function should
|
||
|
execute the dialog box returned by
|
||
|
CreateFindDialog for a Dialog parameter
|
||
|
of edFind.
|
||
|
|
||
|
See also EditorDialog variable, edXXXX constants,
|
||
|
StdEditorDialog function
|
||
|
|
||
|
|
||
|
|
||
|
=============================================================
|
||
|
CreateReplaceDialog function Editors
|
||
|
=============================================================
|
||
|
|
||
|
Declaration function CreateReplaceDialog: PDialog;
|
||
|
|
||
|
Function Constructs and returns a pointer to the
|
||
|
standard text search-and-replace dialog
|
||
|
box used by StdEditorDialog. If you want
|
||
|
to customize the simpler editor dialog
|
||
|
boxes but still use the standard text
|
||
|
search interface, your editor dialog box
|
||
|
function should execute the dialog box
|
||
|
returned by CreateReplaceDialog for a
|
||
|
Dialog parameter of edReplace.
|
||
|
|
||
|
See also EditorDialog variable, edXXXX constants,
|
||
|
StdEditorDialog function
|
||
|
|
||
|
|
||
|
|
||
|
=============================================================
|
||
|
FailSysErrors variable Drivers
|
||
|
=============================================================
|
||
|
|
||
|
Declaration FailSysErrors: Boolean = False;
|
||
|
|
||
|
If True, causes the system error handler
|
||
|
to behave as if the user had responded to
|
||
|
a system error message by pressing Esc.
|
||
|
Normally, the system error handler
|
||
|
displays a message on the last line of
|
||
|
the screen and waits for user input.
|
||
|
Setting FailSysErrors to True causes the
|
||
|
system error handler to bypass the
|
||
|
message and user prompt, and just return
|
||
|
as if the DOS call that produced the
|
||
|
error failed.
|
||
|
|
||
|
See also SysErrorFunc variable
|
||
|
|
||
|
|
||
|
|
||
|
=============================================================
|
||
|
GetCtrlChar function Drivers
|
||
|
=============================================================
|
||
|
|
||
|
Declaration function GetCtrlChar(KeyCode: Word):
|
||
|
Char;
|
||
|
|
||
|
Function Returns the character, Ch, for which
|
||
|
Ctrl+Ch produces the 2-byte scan code
|
||
|
given by the argument KeyCode. Gives the
|
||
|
reverse mapping to GetCtrlCode.
|
||
|
|
||
|
See also GetCtrlCode
|
||
|
|
||
|
|
||
|
|
||
|
=============================================================
|
||
|
GetCtrlCode function Drivers
|
||
|
=============================================================
|
||
|
|
||
|
Declaration function GetCtrlCode(Ch: Char): Word;
|
||
|
|
||
|
Function Returns the 2-byte scan code (keycode)
|
||
|
corresponding to Ctrl+Ch. This function
|
||
|
gives the reverse mapping to GetCtrlChar.
|
||
|
|
||
|
See also GetCtrlChar
|
||
|
|
||
|
|
||
|
|
||
|
=============================================================
|
||
|
GetShiftState function Drivers
|
||
|
=============================================================
|
||
|
|
||
|
Declaration function GetShiftState: Byte;
|
||
|
|
||
|
Function Returns a byte containing the current
|
||
|
Shift key state, as reported by DOS. The
|
||
|
return value contains a combination of
|
||
|
the kbXXXX constants for shift states.
|
||
|
|
||
|
You should call GetShiftState instead of
|
||
|
checking the ShiftState variable
|
||
|
directly. ShiftState is not guaranteed to
|
||
|
be valid in protected mode, but
|
||
|
GetShiftState returns the correct value
|
||
|
in either real or protected mode.
|
||
|
|
||
|
See also kbXXXX constants
|
||
|
|
||
|
|
||
|
|
||
|
=============================================================
|
||
|
RegisterMenus procedure Menus
|
||
|
=============================================================
|
||
|
|
||
|
Declaration procedure RegisterMenus;
|
||
|
|
||
|
Function Calls RegisterType for each of the object
|
||
|
types defined in the Menus unit:
|
||
|
TMenuBar, TMenuBox, TMenuPopup, and
|
||
|
TStatusLine. After calling RegisterMenus,
|
||
|
your application can read or write any of
|
||
|
those types with streams.
|
||
|
|
||
|
See also RegisterType procedure
|
||
|
|
||
|
|
||
|
|
||
|
=============================================================
|
||
|
RegisterViews procedure Views
|
||
|
=============================================================
|
||
|
|
||
|
Declaration procedure RegisterViews;
|
||
|
|
||
|
Function Calls RegisterType for each of the object
|
||
|
types defined in the Views unit: TView,
|
||
|
TFrame, TScrollBar, TScroller,
|
||
|
TListViewer, TGroup, and TWindow. After
|
||
|
calling RegisterViews, your application
|
||
|
can read or write any of those types with
|
||
|
streams.
|
||
|
|
||
|
See also RegisterType procedure
|
||
|
|
||
|
|
||
|
|
||
|
=============================================================
|
||
|
ShiftState variable Drivers
|
||
|
=============================================================
|
||
|
|
||
|
Although this variable exists to maintain
|
||
|
compatibility with version 1.0, you
|
||
|
should not check ShiftState directly.
|
||
|
Rather, you should call GetShiftState,
|
||
|
which returns a valid set of shift state
|
||
|
flags in either real or protected mode.
|
||
|
|
||
|
|
||
|
|
||
|
=============================================================
|
||
|
TDesktop App
|
||
|
=============================================================
|
||
|
|
||
|
TDesktop has two additional methods not
|
||
|
documented.
|
||
|
|
||
|
|
||
|
Methods =========================================
|
||
|
|
||
|
|
||
|
Load constructor Load(var S: TStream);
|
||
|
|
||
|
Constructs and loads a desktop object
|
||
|
from the stream S by first calling the
|
||
|
Load constructor inherited from TGroup,
|
||
|
then calling GetSubViewPtr to set up the
|
||
|
Background field, then reading the
|
||
|
TileColumnsFirst field.
|
||
|
|
||
|
See also: TGroup.Load,
|
||
|
TGroup.GetSubViewPtr
|
||
|
|
||
|
|
||
|
Store procedure Store(var S: TStream);
|
||
|
|
||
|
Writes the desktop object to the stream S
|
||
|
by first calling the Store method
|
||
|
inherited from TGroup, then calling
|
||
|
PutSubViewPtr to store the Background
|
||
|
field, then writing the value of
|
||
|
TileColumnsFirst.
|
||
|
|
||
|
See also: TGroup.Store,
|
||
|
TGroup.PutSubViewPtr
|
||
|
|
||
|
|
||
|
|
||
|
=============================================================
|
||
|
TMemoryStream Objects
|
||
|
=============================================================
|
||
|
|
||
|
TMemoryStream implements a stream in heap
|
||
|
memory.
|
||
|
The mechanics of using memory streams are
|
||
|
simple. You construct a memory stream,
|
||
|
specifying its initial size and a block
|
||
|
size. The memory stream allocates as many
|
||
|
blocks on the heap as needed to meet the
|
||
|
initial size. Bytes stored on the stream
|
||
|
are not guaranteed to be in contiguous
|
||
|
memory locations unless the stream
|
||
|
consists of a single block.
|
||
|
|
||
|
Once you construct the stream, you use it
|
||
|
like any other. Writing beyond the end of
|
||
|
the stream causes the stream to grow in
|
||
|
increments of the initial block size, up
|
||
|
to a maximum of 16,384 blocks.
|
||
|
|
||
|
Changing the size of a memory stream by
|
||
|
enlarging or truncating could seriously
|
||
|
fragment your heap. Try to set the
|
||
|
initial size and block size of the stream
|
||
|
to reasonable values to minimize
|
||
|
individual allocations.
|
||
|
|
||
|
|
||
|
Fields =========================================
|
||
|
|
||
|
BlockSize BlockSize: Integer;
|
||
|
|
||
|
The size of each block allocated to the
|
||
|
memory stream.
|
||
|
|
||
|
CurSeg CurSeg: Integer;
|
||
|
|
||
|
Holds the segment part of the address of
|
||
|
the block that contains the current
|
||
|
stream position.
|
||
|
|
||
|
Position Position: Longint;
|
||
|
|
||
|
The position of the stream in bytes. The
|
||
|
first position is 0.
|
||
|
|
||
|
SegCount SegCount: Integer;
|
||
|
|
||
|
The number of blocks currently allocated
|
||
|
to the memory stream.
|
||
|
|
||
|
SegList SegList: PWordArray;
|
||
|
|
||
|
Contains the list of segment parts used
|
||
|
by each allocated block. The entries
|
||
|
0..SegCount-1 contain valid segments.
|
||
|
|
||
|
Size Size: Longint;
|
||
|
|
||
|
The size of the stream in bytes.
|
||
|
|
||
|
|
||
|
Methods =========================================
|
||
|
|
||
|
Init constructor Init(ALimit: Longint;
|
||
|
ABlockSize: Word);
|
||
|
|
||
|
Constructs a memory stream object by
|
||
|
first calling the Init constructor
|
||
|
inherited from TStream, then allocates
|
||
|
enough blocks of size ABlockSize to
|
||
|
collectively contain ALimit bytes. Sets
|
||
|
BlockSize to ABlockSize.
|
||
|
|
||
|
See also: TStream.Init
|
||
|
|
||
|
Done destructor Done; virtual;
|
||
|
|
||
|
Disposes of the memory stream object by
|
||
|
disposing of the memory allocated to the
|
||
|
stream, then calling the Done destructor
|
||
|
inherited from TStream.
|
||
|
|
||
|
See also: TStream.Done
|
||
|
|
||
|
GetPos function GetPos: Longint; virtual;
|
||
|
|
||
|
Returns the stream's current position.
|
||
|
The first position is 0.
|
||
|
|
||
|
GetSize function GetSize: Longint; virtual;
|
||
|
|
||
|
Returns the size of the stream in bytes.
|
||
|
|
||
|
Read procedure Read(var Buf; Count: Word);
|
||
|
virtual;
|
||
|
|
||
|
Reads Count bytes from the stream,
|
||
|
starting at the current position, into
|
||
|
the buffer Buf.
|
||
|
|
||
|
Seek procedure Seek(Pos: Longint); virtual;
|
||
|
|
||
|
Sets the current position to Pos bytes
|
||
|
from the start of the stream. The first
|
||
|
position is 0.
|
||
|
|
||
|
Truncate procedure Truncate; virtual;
|
||
|
|
||
|
Deletes all data on the stream from the
|
||
|
current position to the end. Sets the
|
||
|
current position to the new end of the
|
||
|
stream.
|
||
|
|
||
|
Write procedure Write(var Buf; Count: Word);
|
||
|
virtual;
|
||
|
|
||
|
Writes Count bytes from the buffer Buf to
|
||
|
the stream, starting at the current
|
||
|
position.
|
||
|
|
||
|
|
||
|
|
||
|
=============================================================
|
||
|
TStringList Objects
|
||
|
=============================================================
|
||
|
|
||
|
In the example code in the Load
|
||
|
constructor description, TBufStream
|
||
|
should be PBufStream.
|
||
|
|
||
|
|
||
|
|
||
|
=============================================================
|
||
|
TStrListMaker Objects
|
||
|
=============================================================
|
||
|
|
||
|
In the example code in the description of
|
||
|
how to use the string list maker,
|
||
|
TBufStream should be PBufStream.
|