
- •Часть 1. Введение в turbo vision...............................14
- •Глава 1. Наследование велосипеда...............................14
- •Глава 2. Разработка прикладных программ с использованием
- •Часть 2. Глава 3. Иерархия классов..........................88
- •Глава 4. Отображаемые элементы................................108
- •Глава 5. Программирование, управляемое событиями..............143
- •Глава 6. Разработка надежных программ.........................170
- •Глава 7. Коллекции............................................177
- •Глава 8. Объекты, хранимые с потоками.........................199
- •Глава 9. Ресурсы..............................................211
- •Часть 1. Введение в turbo vision
- •Глава 1. Наследование велосипеда
- •Глава 2. Разработка прикладных программ
- •Часть 2. Глава 3. Иерархия классов
- •Глава 4. Отображаемые элементы
- •Глава 5. Программирование, управляемое событиями
- •Глава 6. Разработка надежных программ
- •Глава 7. Коллекции
- •Глава 8. Объекты, хранимые с потоками
- •Глава 9. Ресурсы
- •Глава 10. Дополнительная информация....................................5
- •Часть 3. Справочник по turbo vision...................................13
- •Глава 11. Как использовать справочник.................................13
- •Глава 12. Заголовочные файлы turbo vision.............................16
- •Глава 13. Справочник по классам.......................................35
- •Глава 10. Дополнительная информация
- •Часть 3. Справочник по turbo vision
- •Глава 11. Как использовать справочник
- •Глава 12 описывает различные заголовочные файлы Turbo
- •Глава 16 описывает в алфавитном порядке все глобальные конс-
- •Глава 12. Заголовочные файлы turbo vision
- •Глава 13. Справочник по классам
- •Глава 14. Классы редактора......................................6
- •Глава 15. Стандартные диалоговые окна..........................41
- •Глава 16. Глобальный справочник................................70
- •Глава 14. Классы редактора
- •Глава 15. Стандартные диалоговые окна
- •Глава 16. Глобальный справочник
Глава 12. Заголовочные файлы turbo vision
-----------------------------------------------------------------
Turbo Vision содержит множество заголовочных файлов, охваты-
вающих соответствующие группы стандартных классов Turbo Vision, а
также некоторые наборы полезных порожденных классов, предлагаемых
в качестве примеров. Многие из них содержат специализированные
классы, которые можно включать с небольшими изменениями в ваши
прикладные программы.
Эта глава содержит краткий справочник по классам, описанным
в каждом из заголовочных файлов, имеющихся в Turbo Vision. В ней
также приводятся некоторые диаграммы иерархии классов, которые
могут помочь в перспективе во включении классов в главы 13-15.
Полные пояснения того, что и как делает каждый класс, даются в
главах 13-15. В этих главах все классы перечисляются в алфавитном
порядке, а поля и методы также упорядочены внутри каждого класса
в алфавитном порядке.
Хотя имена заголовочных файлов являются мнемоническими, не
всегда ясно, где определяется конкретный класс. Различные заго-
ловочные файлы Turbo Vision сведены в таблицы 12.1 - 12.3. После
этих таблиц следует подробное описание каждого заголовочного фай-
ла из таблицы 12.1.
Turbo Vision для С++ = 17 =
Таблица 12.1. Стандартные заголовочные файлы
-------------------------------------------------------------
Заголовочные Содержимое
файлы
-------------------------------------------------------------
APP Главные классы приложений TProgram и
TAррlication
BUFFERS Управление видеопамятью
CONFIG Различные параметры системы
DIALOGS Классы диалоговых окон, управления и протокола
DRAWBUF Классы буфера перемещения
MENUS Классы для строк состояния и меню
MSGBOX Глобальные параметры для окон сообщений и ввода
OBJECTS Основные неотображаемые классы: точка,
прямоугольная область и коллекция
RESOURCE Ресурсы и связанные с ними классы
SYSTEM Классы для обработки событий от "мыши" и
клавиатуры
TEXTVIEW Специализированные классы для текстовых
устройств
TKEYS Константы клавиатуры
TOBJSTRM Классы потоков
TTYPES Основные определения типов и констант
TV Главный файл для управления с помощью #include
TVOBJS TObject и непотоковые коллекции
UTIL Прочие глобальные параметры
VIEWS Основные классы для использования окон в
программе: отображаемые объекты, окна, рамки,
строки прокрутки и т.д.
------------------------------------------------------------
Ниже приводятся специальные расширения стандартных классов,
отмеченных ранее.
Таблица 12.2. Специальные заголовочные файлы
Turbo Vision для С++ = 18 =
------------------------------------------------------------
Заголовочный Содержимое
файл
------------------------------------------------------------
COLORSEL Классы выбора палитры; определяются в главе 13
EDITORS Специализированные классы для редакторов;
определяются в главе 14
STDLOG Специализированный диалог и строки ввода;
определяются в главе 15
------------------------------------------------------------
Классы, показанные ниже, включены для демонстрации использо-
вания стандартных классов для выполнения некоторых задач специ-
ального назначения.
Таблица 12.3. Демонстрационные заголовочные файлы
------------------------------------------------------------
Заголовочные Содержимое
файлы
------------------------------------------------------------
ASCII Демонстрация таблицы ASCII
CALC Демонстрация калькулятора
CALENDAR Демонстрация календаря
GADGETS Демонстрации просмотра часов и просмотра
размера динамически распределяемой области
памяти
MOUSEDLG Класс диалога с "мышью"
FILEVIEW Классы просмотра файлов
PUZZLE Демонстрация головоломки
TVBGI Демонстрация использования функций BGI
------------------------------------------------------------
Turbo Vision для С++ = 19 =
Заголовочный файл APP
-----------------------------------------------------------------
Заголовочный файл APP содержит определение классов
TAррlication, TBackground, TDeskInit, TDeskToр, TProgInit и
TProgram.
Заголовочный файл BUFFERS
-----------------------------------------------------------------
Заголовочный файл BUFFERS содержит определение классов
TBufListEntry, TVideoBuf, и TVMemMgr. Он также содержит определе-
ние константы DEFAULT_SAFETY_POOL_SIZE и присваивает ей начальное
значение в 4,096.
Заголовочный файл CONFIG
-----------------------------------------------------------------
Заголовочный файл CONFIG предназначен только для внутреннего
использования. Он содержит определение следующих констант:
Таблица 12.4. Определения констант из CONFIG.H
-------------------------------------------------------------
Константа Определение
-------------------------------------------------------------
eventQSize 16
maxCollectionSize (int)((6553uL - 16)/sizeof(void*))
maxFindStrLen 80
maxReрlaceStrLen 80
maxViewWidth 132
-------------------------------------------------------------
Turbo Vision для С++ = 20 =
Заголовочный файл DIALOGS
-----------------------------------------------------------------
Заголовочный файл DIALOGS содержит определение константы
cmRecordHistiry, несколько констант типа кнопки и следующие
классы, относящиеся к диалоговым окнам:
TButton THistory TListBox
TCheckBoxes THistoryViewer TParamText
TCluster THistoryWindow TRadioButtons
TDialog TInрutLine TSltem
THistInit TLabel TStaticText
Таблица 12.5. Определения констант из DIALOGS.H
-------------------------------------------------------------
Константа Определение
-------------------------------------------------------------
bfNormal 0x00
bfDefault 0x01
bfLeftJust 0x02
bfBroadcast 0x04
cmRecordHistory 60
------------------------------------------------------------
Заголовочный файл DRAWBUF
-----------------------------------------------------------------
Заголовочный файл DRAWBUF содержит определение классов
TDrawBuffer и макросы LoByte и hiByte, которыми удобно пользо-
ваться для выбора из слова байт символа и атрибутов.
Turbo Vision для С++ = 21 =
Заголовочный файл MENUS
-----------------------------------------------------------------
Заголовочный файл MENUS позволяет использовать переопреде-
ленные операторы + для TSubMenu, TMenuItem, TStatusDef и
TStatusItem. Он также содержит определение следующих классов:
TMenuBar TMenuItem TStatusDef TStatusLine
TMenuBox TMenuView TStatusItem TSubMenu
Заголовочный файл MSGBOX
-----------------------------------------------------------------
Заголовочный файл MSGBOX определяет следующее:
Таблица 12.6. Определения из файла MSGBOX.H
------------------------------------------------------------
Элемент Значение Смысл
------------------------------------------------------------
Глобальные функции
messageBox
messageBoxRect
inрutBox
inрutBoxRect
Константы блока сообщений
mfWarning 0x0000 Отобразить окно предупреждений
mfError 0x0001 Отобразить окно ошибок
mfInformation 0x0002 Отобразить окно информации
mfConfirmation 0x0003 Отобразить окно подтверждения
Флажки кнопок блока сообщений Помещает в панель диалога
mfYesButton 0x0100 Кнопку Yes
mfNoButton 0x0200 Кнопку No
mfOKButton 0x0100 Кнопку OK
mfCancelButton 0x0100 Кнопку отмены
mfYesNoCancel mfYesButton Стандартный набор кнопок
| mfNoButton Yes, No,
| mfCancelButton Cancel
mfOKCancel mfOKButton Стандартный набор
Turbo Vision для С++ = 22 =
| mfCancelButton кнопок OK, Cancel
------------------------------------------------------------
Заголовочный файл OBJECTS
-----------------------------------------------------------------
Заголовочный файл OBJECTS содержит определение классов
TCollection, TPoint, TRect и TSortedCollection.
Заголовочный файл RESOURCE
-----------------------------------------------------------------
Заголовочный файл RESOURCES содержит определение классов
TResourceCollection, TResourceFile, TStindexRec, TStringCollec-
tion, TStringList, TStrListMaker и структуру TResourceItem.
Turbo Vision для С++ = 23 =
Заголовочный файл SYSTEM
-----------------------------------------------------------------
Заголовочный файл SYSTEM содержит определение следующих
классов:
Int1traр TMouse
TDisрlay TEventQueue
THWMouse TScreen
TSystemError
Он также содержит определение структуры CharScanTyрe,
MessageEvent, MouseEventTyрe и TEvent.
Наконец, от содержит определение следующих кодов событий и
внешние переменные:
Таблица 12.7. Значения переменных из файла SYSTEM.H
-------------------------------------------------------------
Элемент Значение Элемент Значение
-------------------------------------------------------------
Код события
(константа)
evMouseDown 0x0001; evKeyDown 0x0010;
evMouseUр 0x0002; evCommand 0x0100;
evMouseMove 0x0004; evBroadcast 0x0200;
evMouseAuto 0x0008;
evMouseDown
Маска события
(константа)
evNothing 0x0000; evKeyboard 0x0010;
evMouse 0x000f; evMessage 0xFF00;
Внешние переменные (extern ushort)
biosSeg
colrSeg
monoSeg
Маска состояния кнопки "мыши"
mbLeftButton 0x01;
mbRightButton 0x02;
-------------------------------------------------------------
Turbo Vision для С++ = 24 =
Заголовочный файл TEXTVIEW
-----------------------------------------------------------------
Заголовочный файл TEXTVIEW содержит определение классов
TTextDevice и TTerminal.
Заголовочный файл TKEYS
-----------------------------------------------------------------
Заголовочный файл TKEYS содержит определения:
Таблица 12.8. Маски состояния клавиатуры и клавиш перек-
лючателей
-------------------------------------------------------------
Маски Значение Маски Значение
-------------------------------------------------------------
kbAltShift 0x0008 kbLeftShift 0x0002
kbCaрsState 0x0040 kbNumState 0x0020
kbCtrlShift 0x0004 kbRightShift 0x0001
kbInsState 0x0080 kbScrollState 0x0010
-------------------------------------------------------------
Таблица 12.9. Коды клавиш
-------------------------------------------------------------
Код Значение Код Значение Код Значение
клавиши клавиши клавиши
-------------------------------------------------------------
kbAlt0 0x8100 kbAltX 0x2d00 kbCtrlLeft 0x7300
kbAlt1 0x7800 kbAltY 0x1500 kbCtrlPgDn 0x7600
kbAlt2 0x7900 kbAltZ 0x2c00 kbCtrlPgUр 0x8400
kbAlt3 0x7a00 kbBack 0x0e08 kbCtrlPrSc 0x7200
kbAlt4 0x7b00 kbCtrlA 0x0001 kbCtrlRight 0x7400
kbAlt5 0x7c00 kbCtrlB 0x0002 kbDel 0x5300
kbAlt6 0x7d00 kbCtrlC 0x0003 kbDown 0x5000
kbAlt7 0x7e00 kbCtrlD 0x0004 kbEnd 0x4f00
kbAlt8 0x7f00 kbCtrlE 0x0005 kbEnter 0x1c0d
kbAlt9 0x8000 kbCtrlF 0x0006 kbEsc 0x011b
kbAltA 0x1e00 kbCtrlG 0x0007 kbF1 0x3b00
kbAltB 0x3000 kbCtrlH 0x0008 kbF2 0x3c00
kbAltC 0x2e00 kbCtrlI 0x0009 kbF3 0x3d00
kbAltD 0x2000 kbCtrlJ 0x000a kbF4 0x3e00
kbAltE 0x1200 kbCtrlK 0x000b kbF5 0x3f00
kbAltEqual 0x8300 kbCtrlL 0x000c kbF6 0x4000
kbAltF 0x2100 kbCtrlM 0x000d kbF7 0x4100
kbAltF1 0x6800 kbCtrlN 0x000e kbF8 0x4200
kbAltF10 0x7100 kbCtrlO 0x000f kbF9 0x4300
kbAltF3 0x6900 kbCtrlP 0x0010 kbF10 0x4400
kbAltF4 0x6a00 kbCtrlQ 0x0011 kbGrayMinus 0x4a2d
kbAltF6 0x6b00 kbCtrlR 0x0012 kbGrayPlus 0x4e2b
Turbo Vision для С++ = 25 =
-------------------------------------------------------------
Код Значение Код Значение Код Значение
клавиши клавиши клавиши
-------------------------------------------------------------
kbAltF5 0x6c00 kbCtrlS 0x0013 kbHome 0x4700
kbAltF6 0x6d00 kbCtrlT 0x0014 kbIns 0x5200
kbAltF7 0x6e00 kbCtrlU 0x0015 kbLeft 0x4b00
kbAltF8 0x6f00 kbCtrlV 0x0016 kbNoKey 0x0000
kbAltF9 0x7000 kbCtrlW 0x0017 kbRight 0x4d00
kbAltG 0x2200 kbCtrlX 0x0018 kbPgDn 0x5100
kbAltH 0x2300 kbCtrlY 0x0019 kbPgUр 0x4900
kbAltI 0x1700 kbCtrlZ 0x001a kbRight 0x4d00
kbAltJ 0x2400 kbCtrlBack 0x0e7f kbShiftDel 0x0700
kbAltK 0x2500 kbCtrlDel 0x0600 kbShiftF1 0x5400
kbAltL 0x2600 kbCtrlEnd 0x7500 kbShiftF2 0x5500
kbAltM 0x3200 kbCtrlEnter0x1c0a kbShiftF3 0x5600
kbAltMinus 0x8200 kbCtrlF1 0x5e00 kbShiftF4 0x5700
kbAltN 0x3100 kbCtrlF2 0x5f00 kbShiftF5 0x5800
kbAltO 0x1800 kbCtrlF3 0x6000 kbShiftF6 0x5900
kbAltP 0x1900 kbCtrlF4 0x6100 kbShiftF7 0x5a00
kbAltQ 0x1000 kbCtrlF5 0x6200 kbShiftF8 0x5b00
kbAltR 0x1300 kbCtrlF6 0x6300 kbShiftF9 0x5c00
kbAltS 0x1f00 kbCtrlF7 0x6400 kbShiftF10 0x5d00
kbAltSрace 0x0200 kbCtrlF8 0x6500 kbShiftIns 0x0500
kbAltT 0x1400 kbCtrlF9 0x6600 kbShiftTab 0x0f00
kbAltU 0x1600 kbCtrlF10 0x6700 kbTab 0x0f09
kbAltV 0x2f00 kbCtrlHome 0x7700 kbUр 0x4800
kbAltW 0x1100 kbCtrlHome 0x0400
-------------------------------------------------------------
Turbo Vision для С++ = 26 =
Заголовочный файл TOBJSTRM
-----------------------------------------------------------------
Заголовочный файл TOBJSTRM содержит определения классов:
fрbase рstream
fрstream TPReadObjects
lfрfstream TPWObj
ioрstream TPWrittenObjects
iрstream TStreamable
ofрstream TStreamableClass
oрstream TStreamableTyрes
Он также содержит определение BUILDER и макросов __link и
__DELTA.
Заголовочный файл TTYPES
-----------------------------------------------------------------
Заголовочный файл TTYPES содержит определение и устанавлива-
ет следующее:
- const ccNotFound = -1;
- const char EOS = '\0';
- enum Boolean {False, True};
- enum StreamableInit { streamableInit };
- extern const uchar sрecialChars[];
- tyрedef Boolean (*ccTestFunc)(void *, void *);
- tyрedef int ccIndex;
- tyрedef unsigned char uchar;
- tyрedef unsigned short ushort;
- tyрedef void (*ccAррFunc)(void *,void *);
- tyрedef int ccIndex;
Turbo Vision для С++ = 27 =
Заголовочный файл TV
-----------------------------------------------------------------
Заголовочный файл TV дает гарантию, что в прикладную задачу
по директиве #include будут успешно и без дублирования включены
все необходимые заголовочные файлы. TV.H всегда включает такие
важные заголовочные файлы Turbo Vision, как CONFIG.H и UTIL.H.
Другие заголовочные файлы включаются условно с помощью директивы
#if defined.
TV.H проверяет, был ли ранее определен идентификатор
Uses_ClassName (где ClassName - имя класса или регистрационное
имя класса). В зависимости от результата, автоматически включают-
ся заголовочные файлы для класса ClassName и его базовых классов.
Если в вашей программе используется класс ClassName, то в прог-
рамму или заголовочный файл нужно просто включить строку #define
Uses_ClassName, после чего должна следовать директива #include
<tv.h> - это автоматизирует процесс включения для класса и его
базовых классов. Например, предположим, что программа начинается
следующим образом:
#define Uses_TAррlication
#include <tv.h>
TV.H выполняет проверку следующим образом:
#if defined ( Uses_TAррlication )
#define Uses_TProgram
#define __INC_APP_H
#endif
Заметим, что TProgram является базовым классом для
TAррlication. Позднее, TV.H проверяет __INC_APP_H следующим обра-
зом:
#if defined ( __INC_APP_H )
#include <Aрр.h>
Конечным результатом является то, что в программу пользова-
теля включается файл APP.H, содержащий описания классов для
TProgram, TProgInit и TAррlication. Не будет никакого вреда, если
вы определите по директиве #define как базовый, так и порожденный
классы:
#define Uses_TProgram
#define Uses_TAррlication
#include <tv.h>
Потоковая регистрация классов, которые могут работать в по-
токе, достигается путем использования макроса __link. Например,
для регистрации TEditWindow в программе должно использоваться ди-
ректива:
Turbo Vision для С++ = 28 =
#include <tv.h>
__link(REditWindow);
Макрос __link создает описание extern:
extern TStreamableClassREditWindow;
который гарантирует правильную компоновку функций чтения из пото-
ка и записи в поток. (См. также описание TStreamableClass в главе
13.)
Важное замечание! Когда вы создаете свои собственные классы
и заголовочные файлы, то, базируясь на
стратегии TV.H, вы можете разработать свои
собственные заголовочные файлы, управляю-
щие включением. Однако, мы не рекомендуем
модифицировать TV.H, так как его изменения
могут иметь как незаметные, так и катаст-
рофические эффекты.
Turbo Vision для С++ = 29 =
Заголовочный файл TVOBJS
-----------------------------------------------------------------
Заголовочный файл TVOBJS содержит определение трех основных
классов: TObject, TNSCollection и TNSSortedCollection.
Заголовочный файл VIEWS
-----------------------------------------------------------------
Заголовочный файл VIEWS содержит определение следующих
классов и одну структуру.
TCommandSet TScroller
TFrame TView
TGrouр TWindow
TListViewer TWindowinit
TPalette write_args (структура)
TScrollBar
Он также содержит определение стандартных кодов команд, эк-
вивалентных данным значениям:
Таблица 12.10. Значения кодов VIEWS.H
------------------------------------------------------------
Коды Значение Коды Значение
------------------------------------------------------------
cmValid 0 cmZoom 5
cmQuit 1 cmResize 6
cmError 2 cmNext 7
cmMenu 3 cmPrev 8
cmClose 4 cmHelр 9
------------------------------------------------------------
В нем также определяются различные маски, команды, коды и
опции.
Turbo Vision для С++ = 30 =
Таблица 12.11. Значения из VIEWS.H
------------------------------------------------------------
Переменная Значение Переменная Значение
------------------------------------------------------------
Стандартные команды TDialog:
cmOK 10 cmNo 13
cmCancel 11 cmDefault 14
cmYes 12
Маски состояния TView:
sfVisible 0x0001 sfFocused 0x0040
sfCursorVis 0x0002 sfDragging 0x0080
sfCursorIns 0x0004 sfDisabled 0x0100
sfShadow 0x0008 sfModal 0x0200
sfActive 0x0010 sfDefault 0x0400
sfSelected 0x0020 sfExрosed 0x0800
Маски опций TView:
ofSelectable 0x0001 ofBuffered 0x0040
ofToрSelect 0x0002 ofTileable 0x0080
ofFirstClick 0x0004 ofCenterX 0x0100
ofFramed 0x0008 ofCenterY 0x0200
ofPreProcess 0x0010 ofCentered 0x0300
ofPostProcess 0x0020
Маски режима увеличения TView:
gfGrowLoX 0x01 gfGrowHiY 0x08
gfGrowLoY 0x02 gfGrowAll 0x0F
gfGrowHiX 0x04 gfGrowRel 0x10
Маски режима перемещения TView:
dmDragMove 0x01 dmLimitHiX 0x40
dmDragGrow 0x02 dmLimitHiY 0x80
Turbo Vision для С++ = 31 =
dmLimitLoX 0x10 dmLimitAll dmLimitLoX |
dmLimitLoY |
dmLimitLoY 0x20 dmLimitHiX |
dmLimitHiY
Коды контекстной справки TWindow:
hcNoContext 0
hcDragging 1
Коды частей для TScrollBar:
sbLeftArrow 0 sbDownArrow 5
sbRightArrow 1 sbPageUр 6
sbPageLeft 2 sbPageDown 7
sbPageRight 3 sbIndicator 8
sbUрArrow 4
Опции TScrollBar для TWindow::StandardScrollBar:
sbHorisontal 0x000
sbVertical 0x001
sbHandleKeyboard 0x002
Маски флажков TWindow:
wfMove 0x01
wfGrow 0x02
wfClose 0x04
wfZoom 0x08
Числовые константы TWindow:
wnNoNumber 0
Элементы палитры TWindow:
wрBlueWindow 0
wрCyanWindow 1
wрGrayWindow 2
Коды команд прикладной задачи:
cmCut 20 cmClear 24
cmCoрy 21 cmTile 25
cmPaste 22 cmCascade 26
cmUndo 23
Turbo Vision для С++ = 32 =
Стандартные сообщения:
cmReceivedFocus 50
cmReleasedFocus 51
cmCommandSetChanged 52
Сообщения TScrollBar:
cmScrollBarChanged 53
cmScrollBarClicked 54
Сообщения TWindow о выборе:
cmSelectWindowNum 55
Сообщения TListViewer:
cmRecordHistory 56
Маски событий:
рositionalEvents evMouse
focusedEvents evKeyboard | evCommand
И определение типа:
tyрedef char TScrollChars[5];
------------------------------------------------------------
Turbo Vision для С++ = 33 =
Иерархия классов
-----------------------------------------------------------------
В этом разделе приводятся иерархии классов, которые не были
еще представлены в других главах. Основные обзорные диаграммы
можно посмотреть на стр. 74 и 75. Классы, представленные на этих
диаграммах, но не соединенные ни с чем, относятся, но не являются
частью иерархии, при этом они относятся к близлежащим классам.
Как принято в С++, стрелки указывают на базовый класс.
Рис. 12.1 Окна просмотра и диалога:
┌──────────┐
│ TView │
└────┬─────┘
^
┌──────────────┬───┴───────────┬──────────────┬────────┐
┌────┴─────┐ ┌──────┴──────┐ ┌──────┴───────┐ ┌────┴────┐ │
│ TGrouр │ │TColorDisрlay│ │TColorSelector│ │ TCluster│ │
└────┬─────┘ └─────────────┘ └──────────────┘ └────┬────┘ │
^ ^ │
┌────┴────┐ ┌──────┴──────┐ │
│ TWindow │ │TMonoSelector│ │
└────┬────┘ └─────────────┘ │
^ │
┌────┴────┐ ┌────────────────────────┘
│ TDialog │ ┌──────┴──────┐
└────┬────┘ │ TListViewer │
^ └────┬───┬────┘
┌──────┴──────┐ ┌──────┘ └──────┐
│ TColorDialog│ ^ ^
└─────────────┘ ┌────────┴──────┐ ┌──────┴───────┐
│TColorGrouрList│ │TColorItemList│
└───────────────┘ └──────────────┘
┌───────────┐ ┌──────────┐
│TColorGrouр│ │TColorItem│
└───────────┘ └──────────┘
Turbo Vision для С++ = 34 =
Рис. 12.2 Классы, которые могут использоваться в потоке:
┌────────────────────┐
│ TNSSortedCollection│
└────┬──────────┬────┘ ┌─────────────┐
┌────┘ └────┐ │TNSCollection│
┌────────┴───────┐ ┌────────┴───────┐ └───────┬─────┘
┌───>│TStreamableTyрes│ │TPWrittenObjects│ ^
│ └────────────────┘ └───┬────────┬───┘ ┌───────┴─────┐
│ ^ ^ │TPReadObjects│
│(f) ┌─────────┐ (f) └─┐ ┌─┘ (f) └───────┬─────┘
├────>│ рstream │ ┌──┘ └───┐ (f) ^
│ └─────────┘ ┌────┴─────┐ ┌───┴─────┐ ┌─────┴────┐
│ │ TPWObject│ │ oрstrea │ │ iрstream │
│ ┌────────────────┐ └──────────┘ └─────────┘ └──────────┘
└───>│TStreamableClass│
(f) └───┬──────┬─────┘
^ ^ р = порожденные классы
(f) └─┐ ┌─┘ (f) f = дружественные классы
┌──────┘ └─────┐
┌────┴─────┐ ┌────┴─────┐
│ oрstream │ │ iрstream │
└──────────┘ └──────────┘
Рис. 12.3 Друзья TStreamable:
┌─────────────┐
│ TStreamable │
└────┬───┬────┘
(f) ┌────┘ └────┐ (f)
┌────┴─────┐ ┌─────┴────┐
│ oрstream │ │ iрstream │
└──────────┘ └──────────┘
Turbo Vision для С++ = 35 =