ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП |
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы. |
Часть 4 Оглавление ГЛАВА 14. КЛАССЫ РЕДАКТОРА......................................6 TEditor.........................................................7 Буфер TEditor...................................................7 Выделение блока................................................10 Опции..........................................................10 Переопределение функциональных и управляющих клавиш............10 Константы......................................................11 Поля TEditor...................................................12 TEditWindow EDITORS.H.....................................................31 TFileEditor EDITORS.H.....................................................33 TIndicator EDITORS.H.....................................................37 TMemo EDITORS.H.....................................................39 ГЛАВА 15. СТАНДАРТНЫЕ ДИАЛОГОВЫЕ ОКНА..........................41 TChDirDialog STDDLG.H......................................................41 TDirCollection STDDLG.H......................................................45 TDirEntry STDDLG.H......................................................49 TDirListBox STDDLG.H......................................................50 TFileCollection STDDLG.H......................................................53 TFileDialog STDDLG.H......................................................57 TFileInfoPane STDDLG.H......................................................61 TFileInputLine STDDLG.H......................................................63 TFileList STDDLG.H......................................................65 TSortedListBox STDDLG.H......................................................68 ГЛАВА 16. ГЛОБАЛЬНЫЙ СПРАВОЧНИК................................70 Функция sample SAMPLE.H......................................................70 Константы apXXXX APP.H.........................................................70 Boolean enumeration TTYPES.H......................................................71 BUILDER typedef TOBJSTRM.H....................................................71 Константы bfXXXX DIALOGS.H.....................................................71 ccAppFunc typedef TTYPES.H......................................................72 ccIndex typedef TTYPES.H......................................................72 константа ccNotFound TTYPES.H......................................................72 ccTestFunc typedef TTYPES.H......................................................72 Константы cmXXXX VIEWS.H.......................................................72 Таблица 16.3 Коды стандартных команд...........................74 Таблица 16.4 Стандартные команды панели диалога................76 Таблица 16.5 Стандартные команды отображаемых объектов.........77 функция cstrlen UTIL.H........................................................79 функция ctrlToArrow UTIL.H........................................................79 DEFAULT_SAFETY_POOL_SIZE BUFFERS.H.....................................................80 константы dmXXXX VIEWS.H.......................................................80 константа EOS TTYPES.H......................................................81 константа eventQSize CONFIG.H......................................................81 константы evXXXX SYSTEM.H......................................................81 Таблица 16.8 Флаги стандартных событий.........................82 константа focusedEvents VIEWS.H.......................................................83 функция genRefs GENINC.H......................................................83 функция getAltChar UTIL.H........................................................83 функция getAltCode UTIL.H........................................................83 константы gfXXXX VIEWS.H.......................................................85 константы hcXXXX VIEWS.H.......................................................86 функция historyAdd UTIL.H........................................................86 функция historyCount UTIL.H........................................................86 функция historyStr UTIL.H........................................................87 функция inputBox MSGBOX.H......................................................87 функция inputBoxRect MSGBOX.H......................................................87 константы kbXXXX TKEYS.H.......................................................87 Таблица 16.12 Состояние клавиатуры и маски Shift...............88 функция lowMemory UTIL.H........................................................91 Переменная maxCollectionSize CONFIG.H......................................................91 константа maxFindStrLen CONFIG.H......................................................91 константа maxReplaceStrLen CONFIG.H......................................................91 константа maxViewWidth VIEWS.H.......................................................91 константа mbXXXX SYSTEM.H......................................................91 Таблица 16.20 Константы кнопок мыши............................93 функция message UTIL.H........................................................93 функция messageBox MSGBOX.H......................................................93 функция messageBoxRect MSGBOX.H......................................................94 константы mfXXXX MSGBOX.H......................................................95 функция moveBuf UTIL.H........................................................95 функция moveChar UTIL.H........................................................95 функция moveCStr UTIL.H........................................................96 функция moveStr UTIL.H........................................................96 функция newStr UTIL.H........................................................96 константы ofXXXX VIEWS.H.......................................................97 операция + MENUS.H.......................................................99 операция delete NEW.CPP.......................................................99 операция new NEW.CPP.......................................................99 константа positionalEvents VIEWS.H......................................................100 константы sbXXXX VIEWS.H......................................................101 selectMode enumeration VIEWS.H......................................................102 константы sfXXXX VIEWS.H......................................................103 переменная specialChars TTYPES.H.....................................................105 StreamableInit enumeration TTYPES.H.....................................................105 TScrollChars typedef VIEWS.H......................................................106 uchar typedef TTYPES.H.....................................................106 ushort typedef TTYPES.H.....................................................106 константы wfXXXX VIEWS.H......................................................106 константa wnNoNumber константa wnNoNumber VIEWS.H......................................................107 структура write_args VIEWS.H......................................................107 константы wpXXXX VIEWS.H......................................................108 ННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН ГЛАВА 14. КЛАССЫ РЕДАКТОРА ----------------------------------------------------------------- Класс TEditor, наследник класса TView, является реализацией небольшого (64К), быстрого редактора для использования в приклад- ных программах, разработанных с использованием Turbo Vision. В нем реализованы поддержка "мыши", отмена действия (т.н. операция "undo"), копирование (перемещение) в "карман", извлечение из "кармана" и копирование, автоотступ, режим замены текста, переоп- ределение клавиш, поиск и замена. Этот редактор может использо- ваться для редактирования файлов, реализации многостроковых по- лей, для ввода и редактирования текста при диалогах и работе с формами. На приведенном ниже рисунке изображена иерархия классов. Примечание: TEditor - это потоковый класс, наследующий свойства класса TStreamable через класс TView. ЪДДДДДДДДДДДДДї і TView і АДДВДДДВДДДВДДЩ ^ ^ ^ ЪДДДДДДДДДДДЩ і АДДДДДДДДДДДДДДДДДДДДї ЪДДДДДДБДДДДДДї ЪДДДДДДБДДДДДДї ЪДДДДДДДДДДДДДї і і TEditor і і TGroup і і TWindowInit і і АДДДДДДВДДДДДДЩ АДДДДДДВДДДДДДЩ АДДДВДДДДДДДДДЩ і ^ ^ ^(v)ЪДДДДДДДБДДДДДї ЪДДДДДДДДДБДДДДї АДДДДДДДВДДДДЩ і TIndicator і і і і АДДДДДДДДДДДДДЩ ЪДДДДДБДДДДДї ЪДДДДДДБДДДДДДї ЪДДДДДДБДДДДДДї і TMemo і і TFileEditor і і TWindow і АДДДДДДДДДДДЩ АДДДДДДДДДДДДДЩ АДДДДДДВДДДДДДЩ ^ ЪДДДДДДДДДДДДДї ЪДДДДДДБДДДДДДї і TMemoData і і TEditWindow і АДДДДДДДДДДДДДЩ АДДДДДДДДДДДДДЩ ЪДДДДДДДДДДДДДДї іTFindDialogRecі v - виртуальный АДДДДДДДДДДДДДДЩ ЪДДДДДДДДДДДДДДДДДї іTReplaceDialogRecі АДДДДДДДДДДДДДДДДДЩ Рисунок 14.1. Классы редактора. TEditor ----------------------------------------------------------------- Класс TEditor (файл EDITORS.H) является базовым классом для всех редакторов. В нем реализовано большинство функций редактора. При создании объекта TEditor, в динамически распределяемой облас- ти памяти выделяется буфер требуемого размера. При инициализации этот буфер пуст. Применение класса TEditor для редактирования файлов показано в файле TVEDIT.CPP, для редактирования текстовых полей (типа "memo") - в файле TVFORMS.CPP. Оба этих файла можно найти в ката- логе с демонстрационными примерами на установочных дискетах. Буфер TEditor В классе TEditor реализован редактор, построенный на основе буфера. Текст в нем сохраняется в виде двух кусков. Любой текст до курсора сохраняется в начале буфера, а текст после курсора сохраняется в конце буфера. Разрыв текста в дальнейшем будем на- зывать интервалом. Когда символ вставляется в редактор, он встав- ляется в область интервала. Редактор реализует отмену действия предыдущей операции с помощью записи уничтожаемого текста в ин- тервал и учета числа вставленных и уничтоженных символов. Когда выполняется запрос на отмену действия, редактор удаляет символы, которые были вставлены, копирует в начало интервала удаленные символы и помещает курсор после ранее удаленного текста. Для демонстрации работы буфера рассмотрим диаграмму буфера редактора после вставки символов "abcdefghijkxxxopqrstuvwxyz". curPtr іgapLenДДДД>ґ ЪДВДВДВДВДВДВДВДВДВДВДВДВДВДВДВДВДВДВДВДВДВДВДВДВДВДЕДВДВДВДВДВДґ іaіbіcіdіeіfіgіhіiіjіkіxіxіxіoіpіqіrіsіtіuіvіwіxіyіzі і і і і і і ГДБДБДБДБДБДБДБДБДБДБДБДБДБДБДБДБДБДБДБДБДБДБДБДБДБДЕДБДБДБДБДБДґ Г<ДДДДДДДДДДДДДДДДДbufLenДДДДДДДДДДДДДДДДДДДДДДДДДД>ґ і Г<ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДbufSizeДДДДДДДДДДДДДДДДДДДДДД>ґ Рис. 14.2. Буфер после вставки текста. Поле curPtr содержит позицию курсора, gapLen - это длина ин- тервала, а в bufLen записано общее число символов в буфере. Раз- мер буфера сохраняется в bufSize и он всегда равен сумме gapLen и bufLen. Если курсор в дальнейшем переместится за символы "xxx", то буфер будет выглядеть следующим образом: curPtr іgapLenДДДДДґ ЪДВДВДВДВДВДВДВДВДВДВДВДВДВДЕДВДВДВДВДВДЕДВДВДВДВДВДВДВДВДВДВДВДґ іaіbіcіdіeіfіgіhіiіjіkіxіxіxі і і і і і іoіpіqіrіsіtіuіvіwіxіyіzі ГДБДБДБДБДБДБДБДБДБДБДБДБДБДЕДБДБДБДБДБДЕДБДБДБДБДБДБДБДБДБДБДБДґ Г<ДДДДДДДДДbufLenДДДДДДДДДД>ґ + Г<ДДДДДДДbufLenДДДДДДДД>ґ ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДbufSizeДДДДДДДДДДДДДДДДДДДДДДДДД>ґ Рис. 14.3. Буфер после перемещения курсора. Заметьте, что интервал сохраняется до курсора. Это позволяет быстро вставлять символы без передвижения текста. Если "xxx" уда- ляется с помощью клавиши "Backspace", символы копируются в конец интервала, а курсор перемещается в другую сторону. В поле delCount содержится число удаляемых символов. curPtr іgapLenДДДДДДДДДД>ґ ЪДВДВДВДВДВДВДВДВДВДВДЕДВДВДВДВДВДВДВДВДЕДВДВДВДВДВДВДВДВДВДВДВДї іaіbіcіdіeіfіgіhіiіjіkі і і і і і іxіxіxіoіpіqіrіsіtіuіvіwіxіyіzі ГДБДБДБДБДБДБДБДБДБДБДЕДБДБДБДБДБДЕДБДБДЕДБДБДБДБДБДБДБДБДБДБДБДґ і і delCountГ<ДДД>ґ і Г<ДДДДДДДДДbufLenДДДД>ґ + Г<ДДДДДДДbufLenДДДДДДДД>ґ Г<ДДДДДДДДДДДДДДДДДДДДДДДbufSizeДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД>ґ Рис. 14.4. Буфер после удаления символов "xxx". Когда символы вставляются, то значение счетчика вставляемых символов insCount увеличивается на число вставленных символов. Это позволяет узнать, сколько символов надо будет удалить при отмене действия. Если теперь будут введены "lmn", то буфер будет выглядеть следующим образом: curPtr іgapLenДДДД>ґ ЪДВДВДВДВДВДВДВДВДВДВДВДВДВДЕДВДВДВДВДВДЕДВДВДВДВДВДВДВДВДВДВДВДї іaіbіcіdіeіfіgіhіiіjіkіlіmіnі і і іxіxіxіoіpіqіrіsіtіuіvіwіxіyіzі ГДБДБДБДБДБДБДБДБДБДБДЕДБДБДЕДБДБДЕДБДБДЕДБДБДБДБДБДБДБДБДБДБДБДґ і insCountГ<ДДД>ґ Г<ДДД>ґdelCount і Г<ДДДДДДДДДbufLenДДДДДДДДДД>ґ + Г<ДДДДДДДbufLenДДДДДДДД>ґ ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДbufSizeДДДДДДДДДДДДДДДДДДДДДДДД>ґ Рис. 14.5. Буфер после вставки символов "lmn". Поле insCount содержит число вставленных символов. Если те- перь потребуется отмена действия, то символы "lmn" будут удалены, а поверх них будут скопированы символы "xxx", вернув таким обра- зом буфер к тому виду, который он имел до редактирования. curPtr іgapLenДДДД>ґ ЪДВДВДВДВДВДВДВДВДВДВДВДВДВДЕДВДВДВДВДВДЕДВДВДВДВДВДВДВДВДВДВДВДґ іaіbіcіdіeіfіgіhіiіjіkіxіxіxі і і і і і іoіpіqіrіsіtіuіvіwіxіyіzі ГДБДБДБДБДБДБДБДБДБДБДБДБДБДЕДБДБДБДБДБДЕДБДБДБДБДБДБДБДБДБДБДБДґ Г<ДДДДДДДДДbufLenДДДДДДДДДДДґ + Г<ДДДДДДДbufLenДДДДДДДД>ґ Г<ДДДДДДДДДДДДДДДДДДДДДДДДДДДДbufSizeДДДДДДДДДДДДДДДДДДДДДДДДДД>ґ Рис. 14.6. Буфер после отмены действия. Если курсор перемещается перед выполнением отмены действия, вся связанная с отменой действия информация в связи с тем, что интервал переместится, будет утрачена. Отмена действия будет вы- полняться лишь для операций, выполняемых между перемещениями кур- сора. После перемещения курсора все выполненные операции редакти- рования считаются "принятыми". Имейте также в виду, что операция отмены действия занимает определенное пространство в буфере, что может помешать пользователю вставить в него текст. Это пространс- тво можно восстановить перемещением курсора. Выделение блока Выделение или маркировка блока производится всегда до или после местоположения курсора. Если текст в редакторе вставляется либо нажатием клавиши, либо с помощью метода insertText, то он заменяет содержимое выделенного блока. Если никакой блок не выде- лен, то текст вставляется произвольным образом. Выделенный блок обозначается полями selStart и selEnd. Выделение блока выполняет- ся с помощью вызова метода setSelect, который также перемещает курсор. Опции TEditor предусматривает ряд опций, значения которых хра- нятся в полях типа Boolean. Поле canUndo указывает, что в редак- торе записывается информация для отмены действия. Поскольку отме- на действия (undo) временно отнимает пространство у вставляемых элементов текста, то может оказаться полезным заблокировать свойство отмены действия. Для "кармана" это выполняется автомати- чески. Поле overwrite указывает, находится ли редактор в режиме замены или вставки. Поле autoIndent фиксирует, будет ли редактор при нажатии клавиши Enter смещать курсор вправо к столбцу первого непробельного символа предыдущей строки (автоотступ). Это особен- но удобно при использовании редактора для редактирования исходно- го текста программы. Переопределение функциональных и управляющих клавиш Клавиши привязаны ко многим сочетаниям символов, используе- мым в интегрированной среде разработки программ фирмы Borland. Исключение составляют команды работы с блоками. Поскольку класс TEditor не использует постоянные блоки, то команды работы с бло- ками имитируются при помощи копирования информации в "карман" и из него. Например, команды Ctrl-K Ctrl-B выполняют операцию выде- ления текста. Команды Ctrl-K Ctrl-K копирует текст в "карман". Ctrl-K Ctrl-C передает содержимое из этого буфера в редактор. Вместо использования назначений клавиш Ctrl-K выделение блока можно выполнить с помощью нажатия клавиши регистра (Shift) при одновременном выполнении любой команды перемещения курсора. Данные переопределения функциональных клавиш можно изменить с помощью замещения их методом convertEvent, выполняющего преоб- разование заданного события, связанного с нажатием клавиши, в со- бытие, связанное с командой. Константы Константы, приводимые в данном разделе, определены в файле EDITORS.H. Максимальная длина строки maxLineLength определена равной 256. Таблица 14.1. Константы TEditor. ----------------------------------------------------------------- Константа Значение Константа Значение ----------------------------------------------------------------- Командные константы: cmSave = 80, cmPageDown = 509, cmSaveAs = 81, cmTextStart = 510, cmFind = 82, cmTextEnd = 511, cmReplace = 83, cmNewLine = 512, cmSearchAgain = 84; cmBackSpace = 513, cmCharLeft = 500 cmDelChar = 514,, cmCharRight = 501 cmDelWord = 515,, cmWordLeft = 502 cmDelStart = 516,, cmWordRight = 503 cmDelEnd = 517,, cmLineStart = 504 cmDelLine = 518,, cmLineEnd = 505 cmInsMode = 519,, cmLineUp = 506 cmStartSelect = 520,, cmLineDown = 507 cmHideSelect = 521,, cmPageUp = 508 cmIndentMode = 522,, cmUpdateTitle = 523; Диалоговые константы TEditor: edOutOfMemory = 0, edSaveAs = 6, edReadError = 1, edFind = 7, edWriteError = 2, edSearchFailed = 8, edCreateError = 3, edReplace = 9, edSaveModify = 4, edReplacePrompt = 10, edSaveUntitled = 5, Флаги редактора TEditor: efCaseSensitive = 0x0001, efReplaceAll = 0x0008, efWholeWordsOnly = 0x0002, efDoReplace = 0x0010, efPromptOnReplace = 0x0004, efBackupFiles = 0x0100, Палитры редактора: cpIndicator "\x02\x03" cpEditor "\x06\x07" cpMemo "\x1A\x1B" ----------------------------------------------------------------- Поля TEditor autoIndent Boolean autoIndent; Имеет значение True, если редактор находится в режиме автоматического отступа вправо. buffer char *buffer; Указатель буфера, используемого для хранения текста. bufLen ushort bufLen; Содержит объем текста между началом буфера и те- кущим положением курсора. Об этом см. выше в ком- ментарии к Рис. 14.2. bufSize ushort bufSize; Содержит размер буфера. canUndo Boolean canUndo; Принимает значение True, если редактор поддержи- вает операцию undo. В противном случае имеет зна- чение False. См. также: TEditor::undo. clipboard static TEditor *clipboard; Указатель на "кармана". Таким буфером может быть любой класс TEditor. Его следует лишь присвоить данной переменной. "Карман" не должен поддержи- вать операцию отмены действия (т.к. его поле canUndo должно иметь значение False). curPos TPoint curPos; Содержит столбец и строку местонахождения курсора в файле. curPtr ushort curPtr; Содержит смещение курсора. delCount ushort delCount; Обозначает число символов в конце интервала, ко- торые были удалены из текста: используется для реализации операции undo. delte TPoint deltа; Содержит верхнюю строку и самый левый столбец в отображаемом объекте. drawLine int drawLine; Содержит местоположение на экране столбца, в ко- тором подчеркнуты вставленные символы. Предназна- чен для внутреннего использования методом draw. drawPtr ushort drawPtr; Содержит смещение буфера, соответствующее текуще- му положению курсора. Предназначено для внутрен- него использования методом draw. editorDialog static TEditorDialog editorDialog; Тип данных TEditorDialog служит указателем функ- ции, возвращающей ushort и имеющей один цело- численный аргумент int и переменное число допол- нительных аргументов. Он определяется в файле EDITORS.H следующим образом: typedef ushort(*TEditorDialog)(int, ...); Поле editorDialog является указателем на функцию, используемую объектами, а TEditor служит для изображения различных панелей диалога. Поскольку панели диалога в значительной степени зависят от типа прикладной программы, объект TEditor не вы- дает непосредственно изображение собственных па- нелей диалога. Он управляет ими с помощью этого указателя функции. Пример функции editorDialog приводится в файле TVEDIT.CPP. Мнемоника имен различных диалоговых значений, пе- редаваемых в первом аргументе int, для знающих английский язык очевидна и не требует дополни- тельных объяснений. edOutOfMemory edSaveAs edReadError edFind edWriteError edSearchFailed edCreateError edReplace edSaveModify edReplacePrompt edSaveUntitled Используемое по умолчанию значение поля editorDialog в defEditorDialog возвращает просто cmCancel. editorFlags static ushort editorFlags; Поле editorFlags содержит различные флаги, ис- пользуемые в редакторе: efCaseSensitive Является значением по умо- лчанию при поиске с разли- чием регистра букв. efWholeWordsOnly Является значением по умо- лчанию при поиске только полных слов. efPromptOnReplace Подсказка при замене. efReplaceAll Замена для всех случаев появления. efDoReplace Выполнение замены. efBackupFiles Создание файлов с расшире- нием .BAK для сохраненных значений. Значением данного элемента по умолчанию является: efBackupFiles і efPromptOnReplace. findStr static char findStr[80]; Содержит значение последней строки, использовав- шееся для операции поиска. См. также: TEditor::doSearchReplace. gapLen ushort gapLen; Содержит размер "интервала" между текстом, распо- ложенным от курсора и после курсора. Пояснение по этому полю см. в комментарии к Рис. 14.2. hScrollBar TScrollBar *hScrollBar; Является указателем горизонтальной полосы прок- рутки; равно 0, если строка прокрутки не сущест- вует. indicator TIndicator *indicator; Является указателем индикатора; равно 0, если ин- дикатор не существует. insCount ushort insCount; Обозначает число символов, которые были вставлены в текст с момента последнего перемещения курсора. Используется для реализации операции отмены дейс- твия. isValid Boolean isValid; Принимает значение True, если отображаемый объект корректен. Используется функцией valid. См. также: TEditor::valid. keyState int keyState; Обозначает, что была нажата специальная клавиша, такая как Ctrl-K. Используется методом handleEvent для отслеживания "двойных" клавиш уп- равления, таких как Ctrl-K-H и Ctrl-K-B. limit TPoint limit; Содержит максимальное число изображаемых столбцов и число строк в файле. Сохраняет предельные зна- чения строк прокрутки. lockCount uchar lockCount; Содержит семафор блокировки счетчика, который ак- тивизируется в момент перерисовки отображаемого объекта. Приращение lockCount выполняется с по- мощью функции lock, а его уменьшение - с помощью функции unlock. См. также: TGroup::lock, TGroup::unlock, TGroup:: lockFlag. modified Boolean modified; Принимает значение True, если буфер был модифици- рован. overwrite Boolean overwrite; Принимает значение True, если редактор работает в режиме замены текста. В противном случае редактор будет находиться в режиме вставки. replaceStr static char replaceStr[80]; Хранит значение последней строки операции замены. См. также: TEditor::doSearchReplace. selecting Boolean selecting; Принимает значение True, если редактор работает в режиме выделения (т.е. если была нажата клавиша Ctrl-K Ctrl-B). selEnd ushort selEnd; Содержит смещение конца текста, выделенного с по- мощью клавиши Ctrl-K Ctrl-K. См. об этом выше в разделе о переопределении функциональных клавиш. selStart ushort selStart; Содержит смещение начала текста, выделенного с помощью клавиши Ctrl-K Ctrl-K. См. об этом там же. updateFlags uchar updateFlags; Представляет собой набор флагов, обозначающих состояние редактора. Функция doUpdate и другие функции просматривают эти флаги, чтобы опреде- лить, следует ли перерисовывать отображаемый объ- ект. vScrollBar TScrollBar *vScrollBar; Служит указателем на вертикальную строку прокрут- ки; равно 0, если строка прокрутки отсутствует. Методы constuctor TEditor( const TRect& bounds, TScrollBar *aHScrollBar, TScrollBar *aVScrollBar, TIndicator *anIndicator, ushort aBufSize); Вызывает метод TView(bounds), создавая отображае- мый объект с заданными границами. Поля hScrollBar, vScrollBar, indicator и BufSize уста- навливаются по заданным аргументам. Если вам не требуются эти объекты, строка прокрутки и аргу- менты признаков можно установить в значение 0. Следующие значения устанавливаются по умолчанию: canUndo True selecting False overwrite False autoIndent False lockCount 0 keyState 0 growMode gfGrowHiX і gfGrowHiY options ofSelectable eventMask evMouseDown і evKeyDown і evCommand і evBroadcast Выполняется выделение буфера и он очищается. Если обнаружится нехватка памяти, то с помощью метода editorDialog выдается изображение панели диалога edOutOfMemory, а поле isValid устанавливается в значение False. В противном случае isValid прини- мает значение True. Поля, связанные с буфером ре- дактирования, инициализируются очевидным образом: bufLen устанавливается в значение 0, gapLen - на bufSize, selStart - в 0, modified - в False и т.д. См. также: TView::Tview, TEditor::editorDialog, класс TScrollBar. destructor virtual ~TEditor(); Уничтожает редактор и удаляет буфер. bufChar char bufChar( ushort p); Возвращает p-й символ файла, внесенный в интер- вал. bufPtr ushort bufPtr( ushort p); Возвращает смещение в буфере buffer p-го символа файла, внесенного в интервал. build static TStreamable *build(); Вызывается для создания объекта в определенных ситуациях, связанных с чтением из потоков. См. также: TStreamableClass, ipstream::readData. changeBounds virtual void changeBounds( const TRect& bounds ); Изменяет границы отображаемых объектов, настраи- вая значение delta и обновляя при необходимости изображения строк прокрутки и отображаемых объек- тов. Переопределяется, чтобы обеспечить сохране- ние положения файла внутри отображаемого объекта при изменении размеров владельца. charPos int charPos( ushort p, ushort target ); Вычисляет и возвращает фактическую позицию курсо- ра, проверяя символы в буфере между полями p и target. Все встречающиеся коды табуляции считают- ся пробелами (в зависимости от шага табуляции). charPtr ushort charPtr( ushort p, ushort target ); Функция, обратная функции charPtr. Вычисляет и возвращает местоположение в буфере, соответствую- щее местоположению курсора. checkScrollBar void checkScrollBar( const TEvent& event, TScrollBar *p, int& d); Вызывается подпрограммой handleEvent в ответ на переданное событие cmScrollBarChanged. Если теку- щее значение строки прокрутки отлично от d, то строка прокрутки обновляется. clipCopy Boolean clipCopy(); Возвращает значение False, если данный редактор не имеет активного "кармана". В противном случае копирует выделенный текст из редактора в "кар- ман" с помощью следующего выражения: clipboard->insertFrom( this ); Выделение текста отменяется (подсветка удаляет- ся), а отображаемый объект обновляется. При ус- пешном выполнении возвращается значение True. См. также: TEditor::insertFrom. clipCut void clipCut(); Действует подобно методу clipCopy, но выделенный текст после копирования в "карман" удаляется. См. также: TEditor::clipCopy, TEditor:: insertFrom. clipPaste void clipPaste(); Метод, обратный методу clipCopy: содержимое "кар- мана" (если таковое имеется) копируется в текущую позицию курсора, используя: insertFrom( clipboard ); См. также: TEditor::clipCopy, TEditor::insert- From. convertEvent virtual void convertEvent( TEvent& ev ); Используется методом handleEvent для обеспечения основных операций редактирования путем преобразо- вания различных событий, связанных с клавишами, в события, связанные с командами. Вы можете изме- нить или расширить эти определения функциональных клавиш, заданные по умолчанию, с помощью переоп- ределения метода convertEvent. См. об этом выше в разделе о переопределении функциональных клавиш. См. также: TEditor::handleEvent. cursorVisible Boolean cursorVisible(); Принимает значение True, если курсор (точка вставки) является видимым внутри отображаемого объекта. deleteRange void deleteRange( ushort startPtr, ushort endPtr, Boolean delSelect); Если поле delSelect имеет значение True и сущест- вует текущий выделенный блок, то этот выделенный блок удаляется. В противном случае диапазон между startPtr и endPtr выделяется и удаляется. См. также: TEditor::deleteSelect. deleteSelect void deleteSelect(); Удаляет выделенный блок, если таковой существует. Например, после успешного выполнения метода clipCopy выделенный блок удаляется. См. также: TEditor::deleteRange. doneBuffer virtual void doneBuffer(); Удаляет буфер. doSearchReplace void doSearchReplace(); Может использоваться как в операциях поиска, так и в операциях поиска/замены, в зависимости от состояния поля editorFlags, ввода пользователя и панели диалога. Если флаг edDoReplace не установ- лен, то метод doSearchReplace действует в режиме простого поиска findStr без выполнения замены. В противном случае данный метод стремится заменить поля findStr полями replaceStr. Во всех случаях, если искомая строка не обнаружена, активизируется editorDialog( doSearchFailed ). Если ofPromptOnReplace устанавливается в значение editorFlags, то появляется панель диалога edReplacePrompt. Замена в этом случае будет опре- деляться реакцией пользователя. Если установлено поле efRelaceAll, то выполняется замена всех сов- падающих строк без подсказки до обнаружения ко- манды cmCancel. См. также: TEditor::findStr, TEditor::replaceStr, TEditor::editorDialog, TEditor::find, TEditor:: replace, TEditor::editorFlags. doUpdate void doUpdate(); Если поле updateFlags равно 0, то ничего не про- исходит. В противном случае вид и его строки прокрутки модифицируются и отображаются заново в зависимости от состояния бит updateFlags. Напри- мер, если установлен флаг ufView, то отображаемый объект перерисовывается с помощью метода drawView. Если отображаемый объект находится в состоянии sfActive, то команда модифицируется с помощью функции updateCommands. После выполнения этих модификаций поле updateFlags принимает зна- чение 0. draw virtual void draw(); Переопределяет TView::draw для изображения редак- тора. drawLines void drawLines( int y, int count, ushort linePtr ); Отображает count копий строки linePtr, начиная с позиции строки y. find void find(); Выполняет поиск существующего поля findStr или новых строк, указанных пользователем. Метод find выводит подсказку редактора для ввода искомой строки или принятия к обработке существующей строки findStr. Если вводится новая строка поис- ка, то она заменит предыдущую строку findStr (если пользователь ее не отменит). Вначале метод find создает объект TFindDialogRec, определяемый следующим образом: struct TFindDialogRec { TFindDialogRec( const char *str, ushort flgs ) { strcpy( find, str ); options = flgs; } char find[80]; ushort options; }; Выполняется вызов конструктора со строкой str, установленным в текущих полях findStr и flgs, ус- тановленных в текущее поле editorFlags. Диалог редактора edFind затем вызывает изменение или принятие строки findStr. Наконец, для выполнения простой операции поиска без замены (efDoReplace выключено), вызывается метод doSearchReplace. См. также: TEditor::findStr, TEditor::replaceStr, TEditor::doSearchReplace, TEditor::editorDialog, TEditor::replace, TEditor::editorFlags. formatLine void formatLine(void *buff, ushort linePtr, int x, ushort color ); Форматирует строку в поле linePtr в заданном цве- те (color) и заносит результат в буфер (buffer). Используется функцией drawLines. getMousePtr ushort getMousePtr( TPoint m); Возвращает указатель на символы в буфере, соот- ветствующие точке m на экране. См. также: TEditor::charPtr. getPalette virtual TPalette& getPalette() const; Возвращает заданную по умолчанию палитру TEditor - cpEditor, определяемую как "\x06\x07\". Если вы хотите изменить палитру редактора, ее следует пе- реопределить. handleEvent virtual void handleEvent( TEvent& ev ); Этот метод обеспечивает для редактора обработку событий. Если вы хотите расширить обрабатываемый редактором набор команд, его следует переопреде- лить. Обработчик, заданный по умолчанию, вызывает метод TView::handleEvent(ev), затем с помощью вы- зова convertEvent преобразует все соответствующие события, связанные с нажатием клавиши, в события, связанные с командами. hasSelection Boolean hasSelection(); Возвращает значение True, если было выполнено вы- деление, т.е. если поле selStart не равно полю selEnd. Если эти два поля равны, то выделения не существует, и возвращается значение False. См. также: TEditor::setSelect. hideSelect void hideSelect(); Устанавливает selecting в значение False и с по- мощью метода setSelect( curPtr, CurPtr, false ) отменяет текущее выделение. См. также: TEditor::setSelect, TEditor:: selecting. initBuffer virtual void initBuffer(); Выделяет буфер размера bufSize и устанавливает на нем buffer. insertBuffer Boolean insertBuffer( char *p, ushort offset, ushort length, Boolean allowUndo, Boolean selectText); Этот метод вставки текста самого нижнего уровня. Он выполняет вставку length байт текста из масси- ва p (начиная с p[offset]) в буфер (начиная с по- ля curPtr). Если поле allowUndo имеет значение True, то метод insertBuffer выполняет запись дан- ных, восстанавливаемых во время отмены действия. Если поле selectText установлено в значение True, то будет выполнено выделение вставленного текста. Метод insertBuffer в случае успешного выполнения операции возвращает значение True. В случае неу- дачного выполнения активизируется панель диалога, и возвращается значение False. Метод insertBuffer используется методами insertFrom и insertText. Их непосредственный вызов выполняется редко. См. также: TEditor::insertFrom, TEditor:: insertText. insertFrom virtual Boolean insertFrom( TEditor *editor ); Выполняет вставку текущего выделенного блока из editor в текущий редактор. Этот метод реализует функции clipCut, clipCopy и clipPaste. Реализация позволит вам понять функции insertFrom и insertBuffer: Boolean TEditor::insertFrom( TEditor *editor ) { return insertBuffer( editor->buffer, editor ->bufPtr(editor->sel- Start), editor->selEnd - editor->selStart, canUndo, isClipboard() ); } Имейте в виду, что аргумент allowUndo установлен в значение поля canUndo. Аргумент selectText бу- дет иметь значение True, если для этого редактора имеется активный "карман". См. также: TEditor::insertBuffer, TEditor::is- Clipboard. insertText Boolean insertText( void *text, ushort length, Boolean selectText ); Копирует length байт из заданного текста text в буфер данного объекта. Если selectText имеет зна- чение True, то будет выполнено выделение встав- ленного текста. Данная функция является упрощен- ным вариантом функции insertBuffer. См. также: TEditor::insertBuffer. isClipboard Boolean isClipboard(); Возвращает значение True, если данный буфер имеет прикрепленный "карман". В противном случае возв- ращается значение False. См. также: TEditor::clipboard. lineEnd ushort lineEnd( ushort p); Возвращает указатель буфера (смещение) конца строки, содержащий заданный указатель p. См. также: TEditor::lineStart. lineMove ushort lineMove( ushort p, int count); Перемещает строку, содержащую указатель (смеще- ние) p вверх или вниз на число строк count (в за- висимости от знака count). См. также: TEditor::prewLine, TEditor::nextLine. lineStart ushort lineStart( ushort p); Возвращает указатель буфера (смещение) начала строки, содержащий заданный указатель p. См. также: TEditor::lineEnd. lock void lock(); Выполняет увеличение семафора lockCount (инкре- мент). См. также: TEditor::lockCount, TEditor::unlock. newLine void newLine(); Вставляет новую строку (операция возврат карет- ки/перевод строки) в текущее местоположение ука- зателя. Если установлен режим автоотступа (autoIndent), то соответствующие символы табуля- ции, если это необходимо, вставляются в начало новой строки. См. также: TEditor::autoIndent. nextChar ushort nextChar( ushort p ); Возвращает смещение буфера символа, следующего за символом, находящимся на заданном смещении p. nextLine ushort nextLine( ushort p); Возвращает смещение в буфере начала строки, сле- дующей за строкой, содержащей заданное смещение p. nextWord ushort nextWord( ushort p); Возвращает смещение в буфере для начала слова, следующего за словом, содержащим заданное смеще- ние p. prevChar ushort prevChar( ushort p); Возвращает смещение в буфере символа, предшеству- ющего символу с заданным смещением p. prevLine ushort prevLine( ushort ); Возвращает смещение в буфере начала строки, пред- шествующей строке, содержащей заданное смещение p. prevWord ushort prevWord( ushort ); Возвращает смещение в буфере, соответствующее на- чалу слова, предшествующему слову, на котором в данный момент находится курсор. read virtual void *read( ipstream& is ); Считывает редактируемый объект из входного потока is. См. также: TStreamableClass, ipstream. replace void replace(); Заменяет существующую строку findStr (или новую строку поиска, задаваемую пользователем) на су- ществующую строку replaceStr (или новую строку замены, задаваемую пользователем). Функция replace выводит панель диалога редактора, запра- шивающего ввод обеих строк или принятию существу- ющих строк findStr и replaceStr. Если вводится новая строка, то она заменит предыдущие значения (если пользователь ее не отменит). Вначале функ- ция replace создает объект TReplaceDialogRec, оп- ределяемый следующим образом: struct TReplaceDialogRec { TReplaceDialogRec( const char *str, const char *rep, ushort flgs ) { strcpy( find str ); strcpy( replace, rep ); options = flgs; } char find[80]; char replace[80]; ushort options; }; Конструктор вызывается с помощью str и rep, уста- новленных на текущее положение findStr и replaceStr, а также fld, установленного на теку- щее положение editorFlags. Диалог редактора edReplace далее запрашивает замену или принятие двух строк. Наконец, для выполнения операции по- иска-замены вызывается метод doSearchReplace (efDoReplace включено). См. также TEditor::findStr, TEditor::replaceStr, TEditor::doSearchReplace, TEditor::editorDialog, TEditor::find, TEditor::editorFlags. ScrollTo void ScrollTo( int x, int y); Перемещает столбец x и строку y в левый верхний угол редактора. search Boolean search( const char *findStr, ushort opts); Выполняет поиск заданной строки в буфере редакти- рования (начиная с curPtr) с заданными опциями. Этими опциями являются: efCaseSensitive Поиск с различием регистра букв efWholeWordsOnly Поиск только полных слов Возвращает значение True, если совпадение обнару- жено. В противном случае возвращает значение False. Если совпадение обнаружено, то выполняется выделение совпавшего текста. setBufLen void setBufLen( ushort length); Устанавливает для поля bufLen длину length, затем настраивает в соответствии с ним gapLen и limit. Поля selStart, selEnd, curPtr, delta.x, delta.y, drawLine, drawPtr, delCount и insCount устанавли- ваются в 0. Поле curPos устанавливается в значе- ние delta, modified - в значение False, а отобра- жаемый объект модифицируется и при необходимости обновляется. Конструктор TEditor вызывает setBufLen (0). Метод setBufLen используется также методом insertBuffer. См. также: TEditor::update, TEditor::TEditor, поля TEditor, TEditor::insertBuffer. См. об этом выше в комментарии к Рис. 14.2. setBufSize virtual Boolean setBufSize( ushort newSize ); Должна вызываться перед изменением размера буфера на newSize. Он возвращает значение True, если бу- фер может иметь этот новый размер. По умолчанию если размер newSize окажется меньше или равным размеру bufSize, возвращает значение True. setSmdState void setSmdState( ushort command, Boolean enable ); Разрешает или запрещает выполнение данной команды в зависимости от того, имеет ли enable значение True или False, и находится ли редактор в состоя- нии sfActive. Если редактор не является выбранным отображаемым объектом, команда всегда запрещена. Данная функция представляет собой удобный альтер- нативный вариант для функций enableCommands и disableCommands. setCurPtr void setCurPtr( ushort p, uchar selectMode ); Вызывает метод setSelect и перемещает curPtr на величину смещения p. Если curPtr находится в на- чале или в конце выделенного текста, то в зависи- мости от значения selectMode может выполняться некоторая настройка. См. также TEditor::setSelect, TEditor::curPtr. setSelect void setSelect( ushort newStart, ushort newEnd, Boolean curStart); Устанавливает выделенные блоки на заданные смеще- ния в файле и при необходимости выводит отобража- емый объект заново. Эта подпрограмма в зависимос- ти от значения curStart (соответственно, True или False) будет помещать курсор либо перед, либо после выделенного блока, setState virtual void setState( ushort aState, Boolean enable ); Переопределяет TView::setState таким образом, что она сможет "скрывать" и демонстрировать индикатор и строки прокрутки. Вначале, чтобы блокировать и разблокировать команды, она вызывает TView:: setState, Если вы пожелаете разрешить или запре- тить дополнительные команды, то следует переопре- делить метод updateCommands. Эта функция вызыва- ется всякий раз, если требуется модифицировать состояния команд. shutDown virtual void shutDown(); Служит для внутреннего использования методом TObject::destroy, чтобы обеспечить корректное разрушение порожденных и связанных объектов. Метод shutDown переопределяется во многих клас- сах, чтобы обеспечить правильную установку свя- занных полей при вызове метода destroy. См. также: глава 6, "Разработка надежных прог- рамм". startSelect void startSelect(); Вызывается методом handleEvent при обнаружении Ctrl-K Ctrl-B (выделенного фрагмента). Отменяет предыдущий выделенный фрагмент и устанавливает selecting в значение True. См. также: TEditor::handleEvent, TEditor::hideSe- lect. toggleInsMode void toggleInsMode(); Переключает overwrite с True на False и с False на True. Изменяет форму курсора с помощью вызова setState. См. также: TEditor::overwrite, sfCursorIns. trackCursor void trackCursor( Boolean center ); Обеспечивает видимость курсора. Если center имеет значение True, курсор переводится в центр экрана в направлении y (по строке). Положение курсора x (столбец) не изменяется. undo void undo(); Отменяет изменения, сделанные после последнего перемещения курсора. unlock void unlock(); Уменьшает значение поля lockCount до тех пор, по- ка оно не достигнет 0; в этот момент будет иници- ирован метод doUpdate. Механизм блокировки/разб- локировки предотвращает слишком частое обновление отображаемого объекта. См. также: TEditor::doUpdate, TEditor::lock, TEditor::lockCount. update void update( uchar aFlags ); Устанавливает aFlags в поле updateFlags. Если lockCount имеет значение 0, то вызывается метод doUpdate. См. также: TEditor::doUpdate, TEditor::lock, TEditor::lockCount, TEditor::updateFlags. updateCommands void updateCommands(); Данная функция всегда вызывается при необходимос- ти модификации команд. Он используется для разре- шения или запрещения таких команд как cmUndo, cmClip и cmCopy. valid virtual Boolean valid( ushort command ); Определяет достоверность отображаемого объекта для заданной команды (command). По умолчанию возвращается значение isValid, которое равно True, если буфер buffer не равен 0. write virtual void write( opstream& os ); Выполняет запись выходного потока os. См. также: TStreamableClass, opstream. Дружественные-функции Дружественной-функцией по отношению к TEditor является функ- ция genRets. Родственные функции С TEditor связаны определенные функции-операции, которые не являются методами. Подробнее об этом см. в главе 13. TEditWindow EDITORS.H ----------------------------------------------------------------- ЪДДДДДДДДДДДДДї і TView і АДДВДДДВДДДВДДЩ ЪДДДДДДДДДДДЩ і АДДДДДДДДДДДї ЪДДДДДДБДДДДДДї ЪДДДДДДБДДДДДДї ЪДДДДДДБДДДДДДї і TWimdow і і TEditor і і TIndicator і АДДДДДДВДДДДДДЩ АДДДВДДДДВДДДДЩ АДДДДДДДДДДДДДЩ і і АДДДДДДДДДДДДДї ЙННННННПНННННН» ЪДДДБДДДДДДДї ЪДДДДДДБДДДДДДї є TEditWindow є і TMemo і і TFileEditor і ИНННННННННННННј АДДДДДДДДДДДЩ АДДДДДДДДДДДДДЩ Класс TEditWindow представляет собой окно, предназначенное для хранения TFileEditor или "кармана". При изображении имени ре- дактируемого файла его заголовок изменяется и инициализируются строки прокрутки и индикатор для редактора. Если передаваемое в TEditWindow имя окажется пустым, это будет означать, что вы ини- циализируете "карман". Поля editor TFileEditor *editor; Указатель на редактор, связанный с данным окном. Методы constuctor TEditWindow( const TRect& bounds, const char *fileName, int aNumber); Создает объект TWindow, который будет выполнять редактирование файла с заданным именем в окне с номером aNumber. Инициализирует управляемое окно с рамкой, имеющее строки прокрутки и индикатор. Если fileName равно 0, то файл воспринимается как не имеющий названия. Если поле editor равно полю Clipboard, то редактор будет считаться работающим с "карманом". build static TStreamable *build(); Вызывается для создания объектов в определенных ситуациях, связанных с чтением информации из по- токов. См. также: TStreamableClass, ipstream::readData. close virtual void close(); Переопределяет TWindow::close т.о., чтобы выпол- нялось "сокрытие", а не закрытие окна, если ре- дактор работает с "карманом". См. также: TWindow::close. getTitle virtual const char *getTitle( int ); Возвращает имя редактируемого файла, либо "Clip- board", если редактор работает с "карманом". handleEvent virtual void handleEvent( TEvent& ev ); Управляет cmUpdateTitle при обновлении рамки ок- на. Используется в TFileEditor::saveAs для изме- нения заголовка окна, если изменяется имя редак- тируемого файла. См. также: TFileEditor::saveAs. read virtual void *read( ipstream& is ); Считывает информацию из входного потока is. См. также: TStreamableClass, ipstream. write virtual void write( opstream& os ); Записывает информацию в выходной поток os. См. также: TStreamableClass, opstream. Родственные функции С TEditWindow связаны определенные функции-операции, которые не являются методами. Подробнее об этом см. в главе 13. TFileEditor EDITORS.H ----------------------------------------------------------------- ЪДДДДДДДДДДДДДї і TView і АДДВДДДВДДДВДДЩ ЪДДДДДДДДДДДЩ і АДДДДДДДДДДДї ЪДДДДДДБДДДДДДї ЪДДДДДДБДДДДДДї ЪДДДДДДБДДДДДДї і TWimdow і і TEditor і і TIndicator і АДДДДДДВДДДДДДЩ АДДДВДДДДВДДДДЩ АДДДДДДДДДДДДДЩ і і АДДДДДДДДДДДДДї ЪДДДДДДБДДДДДДї ЪДДДБДДДДДДДї ЙННННННПНННННН» і TEditWindow і і TMemo і є TFileEditor є АДДДДДДДДДДДДДЩ АДДДДДДДДДДДЩ ИНННННННННННННј Класс TFileEditor является специализированным порожденным от класса TEditor классом, предназначенным для редактирования содер- жимого файла. Поля fileName char fileName[MAXPATH]; Методы constuctor TEditor( const TRect& bounds, TScrollBar *aHScrollBar, TScrollBar *aVScrollBar, TIndicator *anIndicator, const char aFileName); Создает объект TFileEditor с заданными строками прокрутки и индикатором и загружает содержимое заданного файла. Если файл не обнаружен или недо- пустим, выдается сообщение об ошибке и метод valid объекта возвращает значение False. Перемен- ная options устанавливается в значение sfSelectable, а eventMask устанавливается т.о., чтобы позволить обработку передаваемых событий. Если вам не требуются аргументы aHScrollBar, aVScrollBar или anIndicator, установите их в зна- чение 0. build static TStreamable *build(); Вызывается для создания объектов в определенных ситуациях, связанных с чтением информации из по- токов. См. также: TStreamableClass, ipstream::readData. doneBuffer virtual void doneBuffer(); Удаляет буфер. handleEvent virtual void handleEvent( TEvent& event ); Вызывает TEditor::handleEvent, затем обрабатывает команды cmSave и cmSaveAs. Команда cmSave активи- зирует save, команда cmSaveAs активизирует saveAs. См. также: TFileEditor::save, TFileEditor::save- As. initBuffer virtual void initBuffer(); Выделяет в памяти bufSize байт для буфера редак- тора. loadFile Boolean loadFile(); Считывает файл fileName с диска и выполняет про- верку ошибок. Если они не обнаружены, возвращает- ся значение True. В противном случае возвращается значение False. В зависимости от причин неудачно- го выполнения выводится изображение панели диало- га edReadError либо edOutOfMemory. См. также: TEditor::editorDialog. read virtual void *read( ipstream& is ); Считывает информацию из входного потока is. См. также: TStreamableClass, ipstream. save Boolean save(); Вызывает функцию saveAs, если редактируемый файл не имеет заголовка (является "Untitled" - т.е. для него не выделено поле fileName) и возвращает значение из saveAs. Если имеется достоверное fileName, активизируется saveFile, и save возвра- щает значение из saveFile. См. также: TFileEditor::saveAs, TFileEditor::sa- veFile. saveAs Boolean saveAs(); Активизирует панель диалога edSaveAs, в котором запрашивается подсказка имени сохраняемого файла "save as". Если сообщается корректное имя файла, то текущий текст будет сохранен под этим именем с помощью функции saveFile. Владельцу редактора файла сообщается об этом событии через передавае- мое сообщение cmUpdateTitle. Функция saveAs возв- ращает значение значение True, если вызов saveFile будет выполнен успешно, в противном слу- чае возвращается значение False. Значение False возвращается также при отмене панели диалога edSaveAs. См. также: TFileEditor::saveFile, TFileEditor:: editorDialog. saveFile Boolean saveFile(); Сохраняет файл с именем fileName на диске. Если сохранение будет неудачным, то возвращается зна- чение False. В противном случае возвратится зна- чение True. Если в editorFlags установлен бит efBackupFiles, то создается файл a.BAK. Причина неудачи будет указана в панели диалога edCreateError или edWriteError. См. также: TEditor::editorDialog, TFileEditor:: saveAs, TFileEditor::save. setBufSize virtual Boolean setBufSize( ushort newSize ); Переопределяет метод TEditor::setBufSize таким образом, что при его увеличении размер буфера бу- дет уменьшаться с шагом 4К. Значение gapLen будет соответствующим образом настраиваться. updateCommands virtual void updateCommands(); Вызывает метод TEditor::updateCommands, затем разблокирует команды cmSave и cmSaveAs. Эти ко- манды допустимы только в том случае, если выде- ленный отображаемый объект является редактором, в противном случае они будут заблокированы. См. также: TEditor::updateCommands. valid virtual Boolean valid( ushort ); Переопределяет метод TEditor::valid, чтобы сооб- щить о необходимости сохранения файла перед выхо- дом из программы. Панели диалога edSaveUntitled или edSaveModify выводятся на экран соответствую- щим образом. Если пользователь отменяет сохране- ние, возвращает значение False. write virtual void write( opstream& os ); Записывает информацию в выходной поток os. См. также: TStreamableClass, opstream. Родственные функции С TFileEditor связаны определенные функции-операции, которые не являются его методами. Подробнее об этом см. в главе 13. TIndicator EDITORS.H ----------------------------------------------------------------- ЪДДДДДДДДДДДДДї і TView і АДДВДДДВДДДВДДЩ ЪДДДДДДДДДДДЩ і АДДДДДДДДДДДї ЪДДДДДДБДДДДДДї ЪДДДДДДБДДДДДДї ЙННННННПНННННН» і TWimdow і і TEditor і є TIndicator є АДДДДДДВДДДДДДЩ АДДДВДДДДВДДДДЩ ИНННННННННННННј і і АДДДДДДДДДДДДДї ЪДДДДДДБДДДДДДї ЪДДДБДДДДДДДї ЪДДДДДДБДДДДДДї і TEditWindow і і TMemo і і TFileEditor і АДДДДДДДДДДДДДЩ АДДДДДДДДДДДЩ АДДДДДДДДДДДДДЩ Класс TIndicator является счетчиком строк и столбцов в ниж- нем левом углу редактора. Он инициализируется конструктором TEditWindow и передается конструктору TEditor в качестве четвер- того аргумента. Поля location TPoint location; Сохраняет местоположение, предназначенное для изображения на экране. Модифицируется TEditor. modified Boolean modified; Имеет значение True, если связанный с ним TEditor был модифицирован. См. также: TEditor::draw. Методы constuctor TEditor( const TRect& bounds); Создает объект TIndicator. build static TStreamable *build(); Вызывается для создания объекта в определенных ситуациях, связанных с чтением из потоков. См. также: TStreamableClass, ipstream::readData. draw virtual void draw(); Выполняет отображение индикатора. Если modified имеет значение True, выдается изображение специ- ального символа (значение 15 кода ASCII). getPalette virtual TPalette& getPalette() const; Возвращает cpIndicator = "\x02\x03" (палитра TIndicator, принятая по умолчанию). read virtual void *read( ipstream& is ); Считывает информацию из входного потока is. См. также: TStreamableClass, ipstream. setState virtual void setState( ushort aState, Boolean enable ); Если отображаемый объект перемещается, выполняет изображение индикатора в цвете перемещаемой рам- ки. setValue void setValue( const TPoint& aLocation, Boolean aModified); Метод вызывается TEditor для модификации и изоб- ражения значений полей ассоциированного объекта TIndicator. write virtual void write( opstream& os ); Записывает информацию в выходной поток os. См. также: TStreamableClass, opstream. Родственные функции С TIndicator связаны определенные функции-операции, которые не являются его методами. Подробнее об этом см. в главе 13. TMemo EDITORS.H ----------------------------------------------------------------- ЪДДДДДДДДДДДДДї і TView і АДДВДДДВДДДВДДЩ ЪДДДДДДДДДДДЩ і АДДДДДДДДДДДї ЪДДДДДДБДДДДДДї ЪДДДДДДБДДДДДДї ЪДДДДДДБДДДДДДї і TWimdow і і TEditor і і TIndicator і АДДДДДДВДДДДДДЩ АДДДВДДДДВДДДДЩ АДДДДДДДДДДДДДЩ і і АДДДДДДДДДДДДДї ЪДДДДДДБДДДДДДї ЙНННПННННННН» ЪДДДДДДБДДДДДДї і TEditWindow і є TMemo є і TFileEditor і АДДДДДДДДДДДДДЩ ИНННННННННННј АДДДДДДДДДДДДДЩ Класс TMemo, потомок TEditor, предназначен для работы в сос- таве панели диалога или формы. Он поддерживает поле dataSize и допускает обработку клавиши Tab классом TDialog. Его палитра так- же отличается от палитры TEditor. В dataSize используется следую- щая структура: struct TMemoRec { ushort length; char *buffer; } задавая размер (bufSize + sizeof( ushort )). Методы constructor TMemo(); Создает объект TMemo через его базовые конструк- торы. build static TStreamable *build(); Вызывается для создания объекта в определенных ситуациях, связанных с чтением из потоков. См. также: TStreamableClass, ipstream::readData. dataSize virtual ushort dataSize(); Используется методами setData и getData при сох- ранении и восстановлении объектов TMemo. Поля setData и getData унаследованы от TView. По умол- чанию, возвращает (sizeof( ushort ) + bufSize). См. также: TView::getData, TView::setData. getPalette virtual TPalette& getPalette() const; Возвращает cpMemo = "\x1a\x1B" (палитра текстово- го поля (memo), задаваемая по умолчанию). handleEvent virtual void handleEvent( TEvent& event ); Не допускает обработку событий, связанных с нажа- тием клавиши kbTab, TMemo. В противном случае она обрабатывает события таким же образом, что и TEditor. См. также: TEditor::handleEvent. read virtual void *read( ipstream& is ); Считывает информацию из входного потока is. См. также: TStreamableClass, ipstream. write virtual void write( opstream& os ); Записывает информацию в выходной поток os. См. также: TStreamableClass, opstream. Родственные функции С TMemo связаны определенные функции-операции, которые не являются его методами. Подробнее об этом см. в главе 13. ГЛАВА 15. СТАНДАРТНЫЕ ДИАЛОГОВЫЕ ОКНА ----------------------------------------------------------------- Глава описывает расширение Turbo Vision, предоставляющее большое количество стандартных возможностей по созданию панелей диалога. TChDirDialog STDDLG.H ----------------------------------------------------------------- ЪДДДДДДДДДї і TDialog і АДДДДВДДДДЩ ЙННННННПННННННН» є TChDirDialog є ИННННННННННННННј TChDirDialog - это панель диалога с меткой "Смена каталога". Строка ввода обеспечивает ввод имени каталога от пользователя. Окна протокола и списка каталогов с вертикальной прокруткой пре- доставляют соответственно предыдущие выборы каталогов и дерево всех доступных каталогов. Выбор пунктов осуществляется обычным способом управления подсветкой с помощью клавиатуры или "мыши". В панели отображаются следующие опции: Directory name Directory tree OK(по умолчанию) Chdir Revert Help TChDirDialog::handleEvent посылает соответствующие команды для каждого выбора. TDirListBox является дружественным классом для TChDirDialog, поэтому методы TDirListBox имеют доступ к полям TChDirDialog: setUpDialog, dirInput, dirList, okButton и chDirButton. Константы команд ------------------------------------------------------------ Следующие команды посылаются TChDirDialog: Таблица 15.1 Команды TChDirDialog. ------------------------------------------------------------ Константа Значение Назначение ------------------------------------------------------------ cmChangeDir 1005 посылается, когда выбрано Chdir. cmRevert 1006 посылается, когда выбрано Revert ------------------------------------------------------------ Методы TChDirDialog ------------------------------------------------------------ Конструктор TChDirDialog(ushort aOptions, ushort histId); Cоздает диалоговый объект для смены каталога с данным идентификатором протокола (ID). aOptions может принимать следую- щие значения: юcdNormal: - опция немедленного использования диалога. юcdNoLoadDir: - опция инициализации диалога без загрузки те- кущего каталога в диалог. Применяется, если вы намеревае- тесь используя setData перезагрузить каталог, или сохранить в потоке. юcdHelpButton: - опция помещения кнопки помощи в диалог. Конструктор создает и размещает объект TInputLine (с меткой "Directory ~n~ame"), объект THistory, список с вертикальной прок- руткой, объект TDirListBox (с меткой "Directory ~t~ree") и три кнопки ("O~K~", "~C~hdir", "~R~evert"). Если aOptions имеет набор флагов cdHelpButton, то создается четвертая кнопка помощи. Если не выбрана опция cdNoLoadDir то панель диалога загружается с те- кущим каталогом. Метод build static TStreamable *build(); Вызывается для создания объектов при некоторых ситуациях чтения из потока. См. также TStreamableClass, ipstream::readData Метод dataSize virtual ushort dataSize(); По умолчанию dataSize возвращает 0. Переопределяется для возвращения размера данных (в байтах), используемых getData и setData для запоминания и поиска входных данных панели диалога. См. также: TView::dataSize, TView::setData, TView::getData Метод getData virtual void getData(void *rec); По умолчанию getData ничего не делает. Переопределяется для копирования dataSize байт из отображаемого объекта в rec. Исполь- зуется в комбинации с dataSize и setData для запоминания и поиска входных данных панели диалога. См. также: TView::dataSize, TView::setData, TView::getData Метод handleEvent virtual void handleEvent(TEvent& event); Вызывает TDialog::handleEvent затем обрабатывает события cmRevert (восстанавливает предыдущий текущий каталог) и сmChangeDir (переключает на выбранный каталог). Если необходимо панель диалога перерисовывается. См. также: TDialog::handleEvent Метод read virtual void *read(ipstream& os); Читает из входного потока is. Cм. также: TStreamableClass, ipstream Метод setData virtual void setData(void *rec); По умолчанию setData ничего не делает. Переопределяется для копирования байтов dataSize из отображаемого объекта в rec. Ис- пользуется в комбинации с методами dataSize и setData для запоми- нания и поиска входных данных панели диалога. См. также: TView::dataSize, TView::setData, TView::getData Метод shutDown virtual void shutDown(); Используется методом TObject::destroy для обеспечения кор- ректного уничтожения производных и родственных объектов. Метод shutDown переопределяется во многих классах для обеспечения пра- вильного установления родственных полей когда вызывается destroy. См. также: Глава 6, "Написание надежных программ" Метод valid virtual Boolean valid(ushort command); Возвращает значение True, если command отлична от cmOK. Если кнопка OK "нажата", valid проверяет введенную строку и возвращает True для правильного каталога. Неправильный каталог вызывает окно с сообщением "неправильный каталог" и возвращает False. См. также: TDialog::valid Метод write virtual void write(opstream& os); Записывает в выходной поток os. См. также: TStreamableClass, opstream Родственные функции ------------------------------------------------------------ Некоторые функции-операции родственны TChDirDialog, но не являются методами. TDirCollection STDDLG.H ----------------------------------------------------------------- ЪДДДДДДДДДДДДДї і TCollection і АДДДДДДВДДДДДДЩ ЙНННННННПНННННННН» є TDirCollection є ИННННННННННННННННј Класс TDirCollection является простым наследником класса TCollection используемым для хранения объектов TDirEntry. TDirCollection - это потоковый класс, наследующий TStreamable из его базового класса. Методы TDirCollection ------------------------------------------------------------- Конструктор TDirCollection(ccIndex aLimit, ccIndex aDelta) : TCollection(aLimit, aDelta); Вызывает базовый конструктор TCollection для создания кол- лекции каталогов с данными limit и delta. См. также: TCollection::TCollection Метод at TDirEntry *at(ccIndex index); Возвращает указатель на объект TDirEntry, вставленный в дан- ную коллекцию каталогов в позицию index. См. также: TNSCollection::at Метод atInsert void atInsert(ccIndex index, TDirEntry *item); Помещает данный элемент в коллекцию в позицию index и смеща- ет последующие элементы вниз на одну позицию. Если будет превыше- но значение limit, коллекция будет расширена на delta. См. также: TNSCollection::atInsert Метод atPut void atPut(ccIndex index, TDirEntry *item); Заменяет элемент в позицию index на данный элемент item. См. также: TNSCollection::atPut Метод build static TStreamable *build(); Вызывается для создания объектов при некоторых ситуациях чтения из потока. См. также: TStreamableClass, ipstream::readData Метод firstThat TDirEntry *firstThat(ccTestFunc Test, void *arg); Этот итератор возвращает указатель на первый объект TDirEntry в коллекции, для которого функция Test возвращает True. Смотрите описание TNSCollection::firstThat для детального объяс- нения. См. также: TDirCollection::lastThat Метод free void free(TDirEntry *item); Удаляет данный элемент из коллекции и освобождает место в коллекции. См. также: TNSCollection::free, TNSCollection::remove Метод indexOf virtual ccIndex indexOf(TDirEntry *item); Возвращает позицию index данного элемента item в данной кол- лекции каталогов. См. также: TNSCollection::indexOf Метод insert virtual ccIndex insert(TDirEntry *item); Вставляет элемент item в коллекцию (набор) и при необходи- мости корректирует индексы. По умолчанию вставка производится в конец коллекции. Возвращается индекс вставленного элемента. См. также: TNSCollection::insert Метод lastThat TDirEntry *lastThat(ccTestFunc Test, void *arg); Этот итератор просматривает коллекцию от последнего объекта TDirEntry к первому. Он возвращает указатель на первый (т.е. ближайший к концу) элемент набора для которого функция Test возвращает True. Для подробного объяснения смотрите метод TNSCollection::lastThat. См. также: TDirCollection::firstThat Метод read virtual void *read(ipstream& os, void * t); Считывает из входного потока is. См. также: TStreamableClass, ipstream Метод readItem void *TDirCollection::readItem( ipstream& is ); Вызывается для каждого элемента в коллекции. Нуждается в пе- реопределении всех производных от TCollection или TSortedCollection для корректного чтения элементов. TSortedCollection переопределяет эту функцию. См. также: TStreamableClass, TStreamable, ipstream Метод remove void remove(TDirEntry *item); Удаляет данный элемент item из коллекции. (Место в коллекции не освобождается). См. также: TNSCollection::remove, TNSCollection::free Метод write virtual void write(opstream& os); Записывает в выходной поток os. См. также: TStreamableClass, opstream Метод writeItem void TDirCollection::writeItem( void *obj, opstream& os ); Вызывается для каждого элемента в коллекции. Для корректной записи элементов нуждается в переопределении всех порожденных от TCollection или TSortedCollection классов. TSortedCollection уже переопределяет эту функцию. См. также: TStreamableClass, TStreamable, opstream Родственные функции ------------------------------------------------------------ Некоторые функции-операции родственны TDirCollection, но не являются методами. TDirEntry STDDLG.H ----------------------------------------------------------------- ЙННННННННННННН» є TDirEntry є ИНННННННННННННј Класс TDirEntry - это простой класс, обеспечивающий описания и маршруты каталогов. Объекты TDirEntry хранятся в объектах TDirCollection. TDirEntry имеет два поля, доступных через методы dir и text. Методы TDirEntry ------------------------------------------------------------ Метод constructor TDirEntry(const char *txt, const char *dir); inline TDirEntry::TDirEntry((const char *txt, const char *dir) : displayText(newStr(txt)), directory(newStr(dir)) Метод dir char *dir(); Возвращает текущий каталог (значение поля directory). Метод text char *text(); Возвращает текущий отображаемых текст (значение поля displayText). TDirListBox STDDLG.H ----------------------------------------------------------------- ЪДДДДДДДДДї і TView і АДДДДВДДДДЩ ЪДДДДДДДБДДДДДДДДї і TListViewer і АДДДДДДДВДДДДДДДДЩ ЪДДДДДБДДДДДДї і TListBox і АДДДДДВДДДДДДЩ ЙННННННННПНННННННН» є TDirListBox є ИНННННННННННННННННј Класс TDirListBox является наследником TListBox и специали- зируется на отображении и выборе каталогов хранящихся в объектах TDirCollection. По умолчанию эти каталоги отображаются в виде од- ного столбца с вертикальной прокруткой. Методы TDirListBox ------------------------------------------------------------ Конструктор TDirListBox(const TRect& bounds, TScrollBar *aScrollBar); Для создания списка с вертикальной прокруткой в форме одного столбца в данных границах вызывает метод TListBox::TListBox(bounds, 1, aScrollBar) См. также: TListBox::TListBox Метод destructor ~TDirListBox(); Вызывает свой базовый деструктор для удаления окна со спис- ком. Метод build static TStreamable *build(); Вызывается для создания объектов при некоторых ситуациях чтения из потока. См. также: TStreamableClass, ipstream::readData Метод getText virtual void getText(char *dest, short item, short maxLen); Считывает строку текста с индексом item и копирует ее в dest. Метод handleEvent virtual void handleEvent(TEvent& event); С помощью метода putEvent(cmChangeDir) обрабатывает событие от "мыши" (двойное нажатие кнопки). Это позволяет с помощью двойного нажатия переключаться на выбранный каталог. Другие события обра- батываются TListBox::handleEvent. См. также: TView::putEvent, TListBox::handleEvent Метод isSelected virtual Boolean isSelected(short item); Возвращает значение True если выбран элемент item, в против- ном случае возвращает False. Метод list TDirCollection *list(); Возвращает указатель на объект TDirCollection связанный с данным окном списка каталогов. См. также: TSortedListBox::list Метод newDirectory void newDirectory(const char *); Удаляет существующий объект TDirEntry связанный с данным оконным списком и заменяет его на коллекцию файлов данный в aList. Первый элемент в коллекции будет активизирован. См. также: TSortedListBox::newList Метод read virtual void *read(ipstream& os); Читает из входного потока is. См. также: TStreamableClass, ipstream Метод setState virtual void setState(ushort aState, Boolean enable); По умолчанию использует метод, унаследованный от TListViewer::setState. См. также: TListViewer::setState Метод write virtual void write(opstream& os); Записывает в выходной поток os. См. также: TStreamableClass, opstream Родственные функции ------------------------------------------------------------ Некоторые функции-операции родственны TDirListBox, но не яв- ляются методами. TFileCollection STDDLG.H ----------------------------------------------------------------- ЪДДДДДДДДДДДДДДДДДДДї і TSortedCollection і АДДДДДДДДДВДДДДДДДДДЩ ЙНННННННННПННННННННН» є TFileCollection є ИНННННННННННННННННННј TFileCollection является простым наследником TSorted- Collection дающим отсортированную коллекцию имен файлов. Имена файлов хранятся как объекты типа TSearchRec, определенного следу- ющим образом: struct TSearchRec { uchar attr; long time; long size; char name[MAXFILE+MAXEXT-1]; }; Поля TSearchRec имеют свое обычное DOS-значение. Дисковод и маршрут каталога обрабатываются объектами TDirEntry раздельно. Методы TFileCollection ------------------------------------------------------------ Метод constructor TFileCollection(ccIndex aLimit, ccIndex aDelta) : TSortedCollection(aLimit, aDelta) {} Вызывает базовый конструктор TSortedCollection для создания коллекции с данными limit и delta. См. также: TSortedCollection::TSortedCollection Метод at TSerchRec *at(ccIndex index) Возвращает указатель на объект TSearhRec, вставляемый по по- зиции index в данную коллекцию файлов. См. также: TNSCollection::at Метод atInsert void atInsert(ccIndex index, TSearchRec *item) Вставляет файл TSearchRec, на который ссылается элемент item в коллекцию по данному индексу index и сдвигает последующие эле- менты на одну позицию вниз. Если вставка нового элемента вызовет превышение значения limit, коллекция будет расширена на delta. См. также: TNSCollection::atInsert Метод atPut void atPut(ccIndex index, TSerchRec *item) Заменяет файл TSearchRec, находящийся по позиции index на указанном элементе item. См. также: TNSCollection::atPut Метод build static TStreamable *build(); Вызывается для создания объектов при некоторых ситуациях чтения их потока. См. также: TStreamableClass, ipstream::readData Метод compare ("частный") virtual int compare(void *key1, void *key2); Выполняет стандартное строковое сравнение файлов и возвраща- ет значение в зависимости от результатов. юВозвращает 0, если имена файлов key1 и key2 одинаковы. юВозвращает > 0, * Если имя key1 лексикографически больше key2 * Если имя key1 есть каталог ".." * Если имя key1 есть каталог, а key2 не каталог юВозвращает < 0, * Если имя key1 лексикографически меньше key2 * Если key2 ссылается на каталог ".." * Если key2 есть каталог, а key1 не каталог. См. также: TSortedCollection::compare Метод firstThat TSearchRec *firstThat(ccTestFunc Test, void *arg); Этот итератор возвращает указатель на первый объект TSearchRec в коллекции, для которого функция Test возвращает зна- чение True. Для детального пояснения смотрите TNSCollection::firstThat. См. также: TFileCollection::lastThat Метод free void free(TSearchRec *item) Удаляет данный файловый элемент TSearchRec из коллекции и освобождает место в коллекции. См. также: TNSCollection::free, TNSCollection::remove Метод indexOf virtual ccIndex indexOf(TSearchRec *item) Возвращает индекс index данного файлового элемента TSearchRec в данной коллекции файлов. См. также: TNSCollection::indexOf Метод insert virtual ccindex insert(TSearchRec *item) Вставляет TSearchRec item в коллекцию и при необходимости корректирует индексы. По умолчанию вставка производится в конец коллекции. Возвращается индекс вставленного элемента. См. также: TNSCollection::insert Метод lastThat TSearchRec *lastThat(ccTestFunc Test, void *arg); Этот итератор просматривает коллекцию от последнего объекта TDirEntry к первому. Он возвращает указатель на первый (т.е. ближайший к концу) элемент коллекции для которого функция Test возвращает значение True. Смотрите TNSCollection::lastThat для детального объяснения. См. также: TFileCollection::firstThat Метод read virtual void *read(ipstream& os); Считывает из входного потока is. См. также: TStreamableClass, ipstream Метод readItem void *TFileCollection::readItem( ipstream& is ); Вызывается для каждого элемента в коллекции. Для корректного чтения элементов нуждается в переопределении. См. также: TStreamableClass, TStreamable, ipstream Метод remove void remove(TSearchRec *item) Удаляет данный файловый элемент TSearchRec из коллекции фай- лов. (Место в коллекции не освобождается). См. также: TNSCollection::remove, TNSCollection::free Метод write virtual void write(opstream& os); Пишет в выходной поток os. См. также: TStreamableClass, opstream Метод writeItem void TFileCollection::writeItem( void *obj, opstream& os ); Вызывается для каждого элемента в коллекции. Нуждается в пе- реопределении для корректной записи элементов. См. также: TStreamableClass, TStreamable, opstream Родственные функции ------------------------------------------------------------ Некоторые функции-операции родственны TFileCollection, но не являются методами. TFileDialog STDDLG.H ----------------------------------------------------------------- ЪДДДДДДДДДї і TDialog і АДДДДВДДДДЩ ЙННННННПНННННН» є TFileDialog є ИНННННННННННННј TFileDialog исполняет файловую панель диалога, список прото- кола, строку ввода, в которой могут быть введены, отредактирова- ны, выбраны или открыты для редактирования имена файлов (включая полное имя файла). Опции ------------------------------------------------------------ Эти опции выполняют специфические операции. Таблица 15.2 Опции TFileDialog. ------------------------------------------------------------ Константа Значение Назначение ------------------------------------------------------------ fdOKButton 0x0001 Помещает в панель диалога кнопку OK. fdOpenButton 0x0002 Помещает в панель диалога кнопку Open. fdReplaseButton 0x0004 Помещает в панель диалога кнопку Replase. fdClearButton 0x0008 Помещает в панель диалога кнопку Clear. fdHelpButton 0x0010 Помещает в панель диалога кнопку Help. fdNoLoadDir 0x0100 Не загружайте содержимого текущего каталога в панель диалога при инициали- зации, т.к. это будет означать, что вы намереваетесь изменить полное имя файла используя setData или записать диалог в потоке. ------------------------------------------------------------ Командные константы ------------------------------------------------------------ Следующие команды возвращаются TFileDialog: Таблица 15.3 Командные константы TFileDialog. -------------------------------------------------------------- Константа Значение Назначение -------------------------------------------------------------- cmFileOpen 1001 Посылается, когда нажата кнопка Open. cmFileReplase 1002 Посылается, когда нажата Replase. cmFileClear 1003 Посылается, когда нажата кнопка Clear. cmFileInit 1004 используется методом TFileDialog::valid. -------------------------------------------------------------- Поля ------------------------------------------------------------ Поле directory const char *directory; Содержит текущий каталог. Поле fileList TFileList *fileList; Указатель на ассоциированный список файлов. См. также TFileList Поле fileName TFileInputLine *fileName; Указатель на ассоциированную строку ввода. См. также TFileInput Поле wildCard char wildCard[MAXPATH]; Текущие дисковод, маршрут и имя файла. Методы TFileDialog ------------------------------------------------------------ Конструктор TFileDialog(const char *aWildCard, const char *aTitle, const char *inputName, ushort aOptions, uchar histId); Создает панель диалога фиксированного размера с рамкой и указанным заголовком. Объект TFileInputLine (на который ссылается поле fileName) с заголовком inputName и с полем data установлен- ным в WildCard создается и вставляется. Аргумент маршрута расши- ряется (если необходимо) для обеспечения объекта TFileList, на который ссылается поле fileList. Создается и вставляется объект THistory с данным идентификатором протокола (ID). Также создается и вставляется список с вертикальной прокруткой. В зависимости от флагов aOptions устанавливаются присваивающие кнопки (см. выбор опций в TFileDialog). Создается и вставляется объект TFileInfoPane. Если не установлен флаг fdNoLoadDir, то файлы те- кущего каталога загружаются в список файлов. См. также: TDialog::TDialog, TFileInputLine::TFileInputLine, TFileList::TFileList,THistory::THistory Метод destructor ~TFileDialog(); Удаляет directory, затем уничтожает диалог. Метод build static TStreamable *build(); Вызывается для создания объектов при некоторых ситуациях чтения из потока. См. также: TStreamableClass, ipstream::readData Метод getFileName void getFileName(char *s); Считывает поле fileName->data и расширяет его до формата полного пути. Результат устанавливается в значение s. Метод handleEvent virtual void handleEvent(TEvent& event); Вызывает TDialog::handleEvent, а затем обрабатывает события cmFileOpen, cmFileReplace и cmFileClear. Все они вызывают endModal и передают свои команды отображаемому объекту, который открыл панель диалога. См. также: TDialog::handleEvent, TView::endModal Метод read virtual void *read(ipstream& os); Считывает из входного потока is. См. также: TStreamableClass, ipstream Метод shutDown virtual void shutDown(); Используется методом TObject::destroy для обеспечения кор- ректного уничтожения порожденных и родственных объектов. Для обеспечения соответствующего установления родственных методов когда вызывается метод destroy, метод shutDown во многих классах переопределяется. См. также: Глава 6, "Написание надежных программ". Метод valid virtual Boolean valid(ushort command); Возвращает True, если command есть cmValid, указывая на пра- вильную конструкцию. В противном случае вызывает метод TDialog::valid. Если он возвращает True, то текущее fileName про- веряется на правильность. Правильные имена возвращают True. Неп- равильные имена вызывают оконное сообщение "неправильное имя фай- ла" и возвращают False. См. также: TDialog::valid Метод write virtual void write(opstream& os); Записывает в выходной поток os. См. также: TStreamableClass, opstream Родственные функции ------------------------------------------------------------ Некоторые функции-операции родственны TFileDialog, но не яв- ляются методами. TFileInfoPane STDDLG.H ----------------------------------------------------------------- ЪДДДДДДДї і TView і АДДДВДДДЩ ЙНННННННПННННННН» є TFileInfoPane є ИНННННННННННННННј TFileInfoPane - простой потоковый отображаемый объект для отображения информации о файле в соответствующем окне файлового диалога. Поля ------------------------------------------------------------ Поле file_block TSearchRec file_block; Имя и атрибуты файла для этого инфоэлемента. TSearchRec оп- ределена следующим образом: struct TSearchRec { uchar attr; long time; long size; char name[MAXFILE+MAXEXT-1]; }; где поля имеют свое обычное DOS файловое значение. Методы TFileInfoPane ------------------------------------------------------------ Конструктор TFileInfoPane(const TRect& bounds); Вызывает метод TView::TView(bounds) для создания файлового инфоэлемента с данными границами bounds. Поле evBroadcast прини- мает значение eventMask. Метод build static TStreamable *build(); Вызывается для создания объектов при некоторых ситуациях чтения из потока. См. также: TStreamableClass, ipstream::readData Метод draw virtual void draw(); Отображает инфоэлемент файла с палитрой, принятой по умолча- нию. Отображаются размер файла и дата/время. Метод getPalette virtual TPalette& getPalette() const; Возвращает палитру cpInfoPane="\x1E" принятую по умолчанию. Метод handleEvent virtual void handleEvent(TEvent& event); Вызывает метод TView::handleEvent, затем обрабатывает пере- даваемые cmFileFocused события (срабатывает, когда активизируется новый файл в списке файлов), отображая инфоэлемент файла. См. также: TView::handleEvent, команды TFileList Метод read virtual void *read(ipstream& os); Считывает из входного потока is. См. также: TStreamableClass, ipstream Метод write virtual void write(opstream& os); Записывает в выходной поток os. См. также: TStreamableClass, opstream Родственные функции ------------------------------------------------------------ Некоторые функции-операции родственны TFileInfoPane, но не являются методами. TFileInputLine STDDLG.H ----------------------------------------------------------------- ЪДДДДДДДї і TView і АДДДВДДДЩ ЪДДДДДБДДДДДДї і TInputLine і АДДДДДВДДДДДДЩ ЙННННННННПННННННН» є TFileInputLine є ИННННННННННННННННј TFileInputLine реализует специализированную строку ввода TInputLine позволяющую редактировать имена файлов, включая необя- зательные маршруты и полные имена. Объект TFileInputLine ассоции- рован с файловой панелью диалога. Методы TFileInputLine ------------------------------------------------------------ Конструктор TFileInputLine(const TRect& bounds, short aMaxLen); Вызывает метод TInputLine::TInputLine(bounds, aMaxLen) для создания строки ввода файлов с данными границами и максимальной длиной maxLen. evBroadcast устанавливается в значение eventMask. См. также: TInputLine::TInputLine Метод build ctatic TStreamable *build(); Вызывается для создания объектов при некоторых ситуациях чтения из потока. См. также: TStreamableClass, ipstream::readData Метод handleEvent virtual void handleEvent(TEvent& event); Вызывает TInputLine::handleEvent, затем обрабатывает переда- ваемые cmFileFocused события копируя, введенное имя файла в стро- ку ввода поля data и перерисовывая объект. Если редактируемое имя является каталогом, то текущее имя файла в объекте TFileDialog размещается первым. См. также: TInputLine::handleEvent Метод read virtual void *read(ipstream& os); Считывает из входного потока is. См. также: TStreamableClass, ipstream Метод write virtual void write(opstream& os); Записывает в выходной поток os. См. также: TStreamableClass, opstream Родственные функции ------------------------------------------------------------ Некоторые функции-операции родственны TFileInfoPane, но не являются методами. TFileList STDDLG.H ----------------------------------------------------------------- ЪДДДДДДДДї і TView і АДДДВДДДДЩ ЪДДДДДДБДДДДДДї і TListViewr і АДДДДДДВДДДДДДЩ ЪДДДДБДДДДДї і TListBox і АДДДДВДДДДДЩ ЪДДДДДДДБДДДДДДДДї і TSortedListBox і АДДДДДДДВДДДДДДДДЩ ЙНННННПНННННН» є TFileList є ИННННННННННННј TFileList реализует окно с отсортированным в два столбца списком имен файлов (содержащихся в объекте TFileCollection). Вы можете выбрать имя файла с помощью "мыши" или клавиатуры. Доступ- на вертикальная прокрутка. TFileList наследует функции класса TSortedListBox. Константы команд ------------------------------------------------------------ Следующие общие команды посылаются TFileList: Таблица 15.4 Константы команд TFileList. ------------------------------------------------------------ Константа Значение Назначение ------------------------------------------------------------ cmFileFocused 102 Новый файл был активизирован в объекте TFileList. cmFileDoubleClicked 103 Файл был выбран в объекте TFileList. ------------------------------------------------------------ Методы TFileList ------------------------------------------------------------ Конструктор TFileList(const TRect& bounds, const char *aWildCard, TScrollBar *aScrollBar); Вызывает конструктор TSortedListBox для создания двухстолб- цового объекта TFileList c данными границами bounds и, если aScrollBar не ноль, строкой вертикальной прокрутки. Аргумент aWildCard - это строка с дисководом, маршрутом, файлом и расшире- нием (стандартное имя файла DOS расширяется, если присутствует) из которого вызовом readDirectory посылается коллекция файлов. Метод destructor ~TFileList(); Уничтожает список файлов. Метод build static TStreamable *build(); Вызывается для создания объектов при некоторых ситуациях чтения из потока. См. также: TStreamableClass, ipstream::readData Метод focusItem virtual void focusItem(short item); Активизирует данный элемент в списке. Вызывает метод TSortedListBox::focusItem и посылает общее событие cmFileFocused. См. также: TSortedListBox::focusItem Метод getText virtual void getText(char *dest, short item, short maxLen); Считывает объект TSearchRec в item и устанавливает имя файла в dest. "\\" присоединяется если имя есть каталог. Метод handleEvent virtual void handleEvent(TEvent& event); Наследует обработчик событий TSortedListBox без модификаций, обрабатывает все нормальные события окна со списком: выбор и подсветка имени файла "мышью" или клавиатурой. См. также: TSortedListBox::handleEvent,TListBox::handleEvent Метод list TFileCollection *list(); Возвращает локальное поле items, указатель на объект TFileCollection ассоциированный с данным списком файлов. См. также: TSortedListBox::list, TListBox::items Метод newList void newList(TFileCollection *aList); Вызывает метод TSortedListBox::newList для уничтожения су- ществующего объекта TFileCollection ассоциированного с данным оконным списком и замены его коллекцией файлов, заданных парамет- ром aList. Первый элемент в новой коллекции будет активизирован. См. также: TSortedListBox::newList Метод read virtual void *read(ipstream& os); Читает из входного потока is. См. также: TStreamableClass, ipstream Метод readDirectory void readDirectory(const char *dir, const char *wildCard); void readDirectory(const char *wildCard); Расширяет строку wildCard для генерации коллекции файлов ас- социированного с данным списком файлов. Первая форма позволяет раздельно передавать относительный и абсолютный маршруты в аргу- менте dir. Как '/' так и '\' могут быть использованы в качестве разделителей подкаталогов (но '/' преобразуется в '\'). Результи- рующий объект TFileCollection (отсортированное множество объектов TSearchRec) присваивается полю items (доступному через метод list). Если включено слишком много файлов, то появляется предуп- реждающее сообщение. readDirectory знает об атрибутах файла и не будет включать имена скрытых файлов. См. также: TFileList::TFileList Метод write virtual void write(opstream& os); Пишет в выходной поток os. См. также: TStreamableClass, opstream Родственные функции ------------------------------------------------------------ Некоторые функции-операции родственны TFileList, но не явля- ются методами. TSortedListBox STDDLG.H ----------------------------------------------------------------- ЪДДДДДДДДДДї і TListBox і АДДДДДВДДДДЩ ЙННННННННПННННННН» є TSortedListBox є ИННННННННННННННННј TSortedListBox - специализированный потомок класса TListBox, располагающий элементы в отсортированную последовательность. Это используется как база для других классов оконных списков, таких как TFileList. Методы TSortedListBox ------------------------------------------------------------ Конструктор TFileList(const TRect& bounds, ushort aNumCols, TScrollBar *aScrollBar); Вызывает метод TListBox::TListBox(bounds, aNumCols, aScrollBar) для создания оконного списка данного размера, с дан- ным количеством столбцов и вертикальной прокруткой элементов. shiftState устанавливается в 0 и курсор устанавливается на первый элемент. Метод getKey virtual void *getKey(const char *s); "частный" Вы должны переопределять этот метод во всех порожденных классах для обеспечения средств возвращения ключа для данной строки s. Это будет зависеть от стратегии сортировки, принятой в ваших порожденных классах. По умолчанию getKey возвращает s. Метод handleEvent virtual void handleEvent(TEvent& event); Вызывает TListBox::handleEvent, затем обрабатывает события специальных клавиш и события от "мыши", используемые для выбора элементов в списке. См. также: TListBox::handleEvent Метод list TSortedCollection *list(); Возвращает указатель на объект TSortedCollection ассоцииро- ванный со списком окна сортировки. Это дает доступ к локальному полю items, указателю элементов подлежащих размещению в списке и выбору. Порожденные классы окон сортировки со списком обычно пе- реопределяют list для обеспечения указателя на объекты классов, порожденных от TSortedCollection. Например TFileList::list возв- ращает указатель на объект TFileCollection, определяемый методом TFileList::items. См. также: TSortedListBox::list, TListBox::list, TFileList::list Метод newList void newList(TSortedCollection *aList); Вызывает TListBox::newList для удаления существующего TSortedCollection объекта с данным оконным списком и замены его коллекцией данных в aList. Первый элемент в коллекции будет акти- визирован. См. также: TListBox::newList ГЛАВА 16. ГЛОБАЛЬНЫЙ СПРАВОЧНИК ----------------------------------------------------------------- Эта глава описывает все элементы Turbo Vision, которые не являются частью иерархии стандартных объектов Turbo Vision. Эле- менты этой главы включают typedefs, enumerations, константы, пе- ременные и функции, определенные в заголовочных файлах Turbo Vision. Стандартные классы описаны в главе 13; классы редактора и диалога описаны в 14 и 15 главах соответственно. Типичный элемент данной главы выглядит так: Функция sample SAMPLE.H ----------------------------------------------------------------- Описание: void sample(int arg); Функция: Sample считывает аргумент int и выполняет ряд по- лезных функций. См. также: родственные классы, функции и т.д. Константы apXXXX APP.H ----------------------------------------------------------------- Значения: Определены следующие константы палитры: Таблица 16.1 Константы палитры. ------------------------------------------------------------ Константа Значение Назначение ------------------------------------------------------------ apColor 0 Палитра для цветного монитора apBlackWhite 1 Палитра для жидкокристаллического монитора apMonochrome 2 Палитра для монохромного монитора ------------------------------------------------------------ Функция: Константы, начинающиеся с ap, используются для указания того, с какой из трех стандартных палитр будет работать программа, созданная с помощью Turbo Vision. Три палитры исполь- зуются для цветного, черно-белого и монохромного дисплеев. Boolean enumeration TTYPES.H ----------------------------------------------------------------- Описание: enum Boolean ( False, True ); Функция: Присваивает int значение 0 и 1 соответственно для False и True. Заметьте, что проверки if (testfunc() ) {...} и ( True == testfunc() ) {...} могут быть не эквивалентны. BUILDER typedef TOBJSTRM.H ----------------------------------------------------------------- Описание: typedef TStreamable*(*BUILDER)(); Функция: Каждый потоковый класс имеет функцию "построителя" типа BUILDER. Построитель обеспечивает память корректного размера и инициализирует указатели vtable, когда объекты созданы, через некоторые операции чтения из потока. Функция read из потокового класса читает данные из потока в объекты-заготовки созданные "построителем". См. также: TView::build, TStreamable Константы bfXXXX DIALOGS.H ----------------------------------------------------------------- Значения: определены следующие флаги кнопки: Таблица 16.2 Флаги кнопки. ------------------------------------------------------------ Константа Значение Назначение ------------------------------------------------------------ bfNormal 0x00 Обычная кнопка bfDefault 0x01 Кнопка, используемая по умолчанию bfLeftJust 0x02 Метка кнопки выровнена влево ------------------------------------------------------------ Функция: Комбинация этих значений передается в aFlags конструктора TButton для определения вновь созданного типа кнопки. bfNormal указывает на обычную (не назначенную по умолчанию) кнопку. bfDefault указывает что, кнопка будет кнопкой по умолчанию. Программист обязан обеспечить, чтобы кнопка была единственной умалчиваемой кнопкой в TGroup. Значение bfLeftJust может быть добавлено к bfDefault или bfNormal и воз- действует на позицию отображаемого текста внутри кнопки: если сброшено, то метка центрируется; если установлено, то метка вы- равнивается влево. См. также: TButton::flags, TButton::makeDefault, TButton::draw ccAppFunc typedef TTYPES.H ----------------------------------------------------------------- Описание: typedef void (*ccAppFunc)(void *item, void *arg); Функция: Используется в функциях-итераторах для указания на функцию и аргументы для обработки элементов коллекции. См. также: TNSCollection::forEach, ccTestFunc ccIndex typedef TTYPES.H ----------------------------------------------------------------- Описание: typedef int ccIndex; Функция: Используется для индексации и подсчета элементов коллекции. См. также: TNSCollection::at константа ccNotFound TTYPES.H ----------------------------------------------------------------- Описание: const ccNotFound = -1 Функция: Значение ccIndex возвращается различными функциями поиска в коллекции, если поиск не удался. См. также: TNSCollection::indexOf ccTestFunc typedef TTYPES.H ----------------------------------------------------------------- Описание: typedef Boolean (*ccTestFunc)( void *item, void *arg ); Функция: Используется в функциях-итераторах для указания на функцию и аргументы для обработки элементов коллекции. См. также: TNSCollection::firstThat,TNSCollection::lastThat, ccAppFunc Константы cmXXXX VIEWS.H ----------------------------------------------------------------- Функция: Эти константы представляют предопределенные команды Turbo Vision. Они передаются в поля TEvent::command событий evMessage(evCommand и evBroadcast) и заставляют методы handleEvent стандартных объектов Turbo Vision выполнять различные задачи. Turbo Vision резервирует значения констант от 0 до 99 и от 256 до 999 для своих целей. Обработчики событий стандартных объ- ектов Turbo Vision реагируют на эти предопределенные константы. Программисты могут определить свои собственные константы в диапа- зонах от 100 до 255 и от 1000 до 65535 без конфликтов с предоп- ределенными командами. Значения: Следующие стандартные команды определены в Turbo Vision и используются стандартными объектами Turbo Vision: Таблица 16.3 Коды стандартных команд ----------------------------------------------------------------- Команда Значение Назначение ----------------------------------------------------------------- cmValid 0 Передается в TView::valid для проверки вновь созданных образцов отображаемых объектов. cmQuit 1 Заставляет TProgram::handleEvent вызывать endModal(cmQuit), завершая программу. Строка состояния или одно из меню обычно содержат элемент, который отображает клавишу kbAltX в ко- манду cmQuit. cmError 2 Не обрабатывается никаким объектом. Может ис- пользоваться для представления нереализованных или неподдерживаемых команд. cmMenu 3 Заставляет метод TMenuView::handleEvent вызывать execView для выполнения выбора пункта меню, в ре- зультате чего может посылаться новая команда (с помощью putEvent). Строка состояния обычно содер- жит элемент, который отображает клавишу kbF10 в команду cmMenu. cmClose 4 Обрабатывается TWindow::handleEvent, если поле infoPtr события установлено в значение 0, или указывает на окно. Если окно модальное (как мо- дальный диалог), то посредством putEvent посыла- ется evCommand со значением cmCancel. Если окно немодальное, то вызывается метод close при усло- вии, что окно поддерживает закрытие (смотри флаг wfClose). нажатие на кнопку закрытия окна переда- ет событие evCommand с сommand = cmClose и указа- тель infoPtr, который указывает на окно. Строка состояния или одно из меню обычно содержит эле- мент, который отображает клавишу kbAltF3 в коман- ду cmClose. cmZoom 5 Заставляет TWindow::handleEvent вызывать метод TWindow::zoom, если окно поддерживает возможность распахивания (смотри флаг wfZoom) и если поле infoPtr записи события установлен в 0 или указы- вает на окно. Нажатие кнопки мыши на кнопке рас- пахивания окна или двойное нажатие в строке заго- ловка окна передает событие evCommand с command = cmZoom, а infoPtr указывает на окно. Строка сос- тояния или одно из меню обычно содержит элемент, который отображает клавишу kbF5 в команду cmZoom. cmResize 6 Заставляет TWindow::handleEvent вызывать метод TView::dragView, если окно поддерживает изменение размеров (смотри флаги wfMove и wfGrow). Строка состояния или одно из меню обычно содержит элемент, который отображает клавишу kbCtrlF5 в команду cmResize. cmNext 7 Заставляет TDeskTop::handleEvent сдвигать последнее окно в оперативном поле экрана на пе- редний план. Строка состояния или одно из меню обычно содержит элемент, который отображает кла- вишу kbF6 в команду cmNext. cmPrev 8 Заставляет TDeskTop::handleEvent сдвигать первое окно оперативной области экрана на самый задний план. Строка состояния или одно из меню обычно содержит элемент, который отображает клавишу kbShiftF6 в команду cmPrev. ----------------------------------------------------------------- Следующие стандартные команды используются для определения поведения объектов панели диалога по умолчанию: Таблица 16.4 Стандартные команды панели диалога. ----------------------------------------------------------------- Команда Значение Назначение ----------------------------------------------------------------- cmOK 10 Была нажата кнопка OK cmCancel 11 Панель диалога была отменена кнопкой Cancel, кнопкой закрытия или клавишей Esc cmYes 12 Была нажата кнопка Yes cmNo 13 Была нажата кнопка No cmDefault 14 Была нажата кнопка, назначенная по умолча- нию ----------------------------------------------------------------- События с командами cmOK, cmCancel, cmYes или cmNo завершают модальный диалог TDialog::handleEvent и возвращают значение команды (вызывая endModal). Модальный диалог обычно содержит по крайней мере одну кнопку TButton с одним из этих зна- чений команд. Метод TDialog::handleEvent будет посылать команду событие cmCancel в ответ на событие от клавиатуры kbEsc. Команда cmDefault заставляет TButton::handleEvent для ис- пользуемой по умолчанию кнопки (см. флаг bfDefault) моделировать нажатие кнопки. Метод TDialog::handleEvent в ответ на событие клавиатуры kbEnter будет посылать событие команды cmDefault. Определены следующие стандартные команды для использования стандартными отображаемыми объектами и программами редактора: Таблица 16.5 Стандартные команды отображаемых объектов. ----------------------------------------------------------------- Команда Значение Назначение ----------------------------------------------------------------- cmCut 20 Коды команд редактора cmCopy 21 cmPaste 22 cmUndo 23 cmClear 24 cmTile 25 cmCasade 26 cmReceivedFocus 50 TView::setState использует функцию cmReleasedFocus 51 message для передачи события evBroadcast с одним из этих значений в свой TView::owner, как только sfFocused изменяется. infoPtr события указывает на сам отображаемый объект. Это информирует любой равный отображаемый объект, что отображаемый объект стал или перестал быть активным, и что они должны корректи- роваться соответственно. Объект Tlabel, например, реагирует на эти команды, вклю- чая или выключая свою подсветку. cmCommandSetChanged 52 Метод TProgram::idle посылает событие evBroadcast, как только он обнаружит из- менение в текущем наборе команд (вызывая методы enableCommands, desableCommands или setCommands для TView). Общее сообще- ние cmCommandSetChanged посылается в handleEvent каждого отображаемого объекта иерархии (если только их eventMask специ- фически не маскируют события evBroadcast). Если изменения в наборе ко- манд затрагивают появление отображаемого объекта, он должен реагировать на cmCommandSetChanged своей перерисовкой. Объекты TButton, TMenuView и TStatusLine, например, реагируют на эту команду, отоб- ражаясь заново. cmScrollBarChanged 53 TScrollBar использует функцию message для cmScrollBarClicked 54 передачи события evBroadcast с одним из этих значений своему владельцу TView::owner, как только обнаруживается отметка "мышью" на строке прокрутки. Ука- затель infoPtr события указывает на поло- су прокрутки. Общие сообщения создаются любыми равными отображаемыми объектами, управляемыми строкой прокрутки, такими как объекты TScroller и TListViewer. cmSelectWindowNum 55 Заставляет метод TWiondow::handleEvent вызывать метод TView::select, если infoInt записи события соответствует TWindow::number. TProgram::handleEvent реагирует на события от клавиатуры от Alt -1 до Alt-9 общим сообщением cmSelectWindowNum с infoInt от 1 до 9. cmListItemSelected 56 Посылает сообщение TListViewer о том, что элемент выбран. cmRecordHistory 60 Заставляет объект THistory записывать текущее содержимое объекта TInputLine. TButton посылает сообщение cmRecordHistory своему владельцу, когда он выбран, в результате, заставляя сохра- нять все объекты THistory в панели диало- га. ----------------------------------------------------------------- См. также: TView::handleEvent, TCommandSet функция cstrlen UTIL.H ----------------------------------------------------------------- Описание: int cstrlen( const char *s ); Функция: Возвращает длину строки s, где s - это управляющая строка, использующая символы тильда ('~') для указания символов оперативных клавиш. Символы тильда исключаются из длины строки, поскольку они не будут появляться на экране. Например, для строки '~B~roccoly', cstrlen возвращает 8. См. также: moveCStr функция ctrlToArrow UTIL.H ----------------------------------------------------------------- Описание: ushort ctrlToArrow( ushort keyCode); Функция: Преобразует управляющие WordStar-совместимые коды клавиатуры в соответствующие коды клавиш управления курсором. Ес- ли младший байт keyCode соответствует одному из значений управля- ющих клавиш, описанных в Таблице 16.6, результатом будет соот- ветствующая константа kbXXXX. В противном случае, keyCode возвра- щается неизмененным. Таблица 16.6 Преобразование управляющих клавиш. ------------------------------------------------------ Комбинация клавиш Код Результат ------------------------------------------------------ Ctrl-A 0x01 kbHome Ctrl-D 0x04 kbRight Ctrl-E 0x05 kbUp Ctrl-F 0x06 kbEnd Ctrl-G 0x07 kbDel Ctrl-S 0x13 kbLeft Ctrl-V 0x16 kbIns Ctrl-X 0x18 kbDown ------------------------------------------------------ DEFAULT_SAFETY_POOL_SIZE BUFFERS.H ----------------------------------------------------------------- Описание: const DEFAULT_SAFETY_POOL_SIZE = 4096 Функция: Содержит инициализированный для умолчания размер резервного буфера в байтах. Вы можете изменить это значение ре- дактированием описания. Если вы вызовете метод TVMemMgr::resizeSafetyPool без аргумента размера, то будет приня- то значение, назначенное по умолчанию. См. также: TVMemMgr::resizeSafetyPool константы dmXXXX VIEWS.H ----------------------------------------------------------------- Значения: Биты dragMode определены следующим образом: Рис. 16.1 Флаги режима dragMode. ЪДД dragMode Дї і і старший бит младший бит ЪДВДВДВДДДДДДДДДДД dmLimitAll = 0xF0 ЙПСПСПСПСНСНСНСН» ИСПСПСПСПНПНПСПСј і і і і і АДДД dmDragMove = ox01 і і і і АДДДДД dmDragGrow = 0x02 і і і АДДДДДДДДДДД dmLimitLoX = 0x10 і і АДДДДДДДДДДДДД dmLimitLoY = 0x20 і АДДДДДДДДДДДДДДД dmLimitHiX = 0x40 АДДДДДДДДДДДДДДДДД dmLimitHiY = 0x80 Функция: Эти константы используются для компоновки параметра mode метода TView::dragView. Они указывают, разрешены ли движение и/или изменение размера и как интерпретировать параметр limits. Константы dragMode определены следующим образом: Таблица 16.7 Константы режима dragMode. ------------------------------------------------------------ Константа Назначение ------------------------------------------------------------ dmDragMove Позволяет отображаемому объекту перемещаться. dmDragGrow Позволяет отображаемому объекту менять размер. dmLimitLoX Левая сторона отображаемого объекта не может выходить за limits. dmLimitLoY Верхняя сторона отображаемого объекта не может выходить за limits. dmLimitHiX Правая сторона отображаемого объекта не может выходить за limits. dmLimitHiY Нижняя сторона отображаемого объекта не может выходить за limits. dmLimitAll Никакая часть отображаемого объекта не может выходить за пределы limits. ------------------------------------------------------------ Поле dragMode объекта TView может содержать любую комбинацию флагов dmLimitXX. По умолчанию конструктор TView устанавливает это поле в значение dmLimitLoY. Поле dragMode используется с по- токами только в методе TWindow::dragView, когда окно передвигает- ся или изменяет размер. константа EOS TTYPES.H ----------------------------------------------------------------- Описание: const char EOS = '\0'; Функция: Синоним нулевого символа конца строки. константа eventQSize CONFIG.H ----------------------------------------------------------------- Описание: const eventQSize = 16; Функция: Задает размер очереди событий. константы evXXXX SYSTEM.H ----------------------------------------------------------------- Функция: Эти мнемоники обозначают типы событий для обработ- чиков событий Turbo Vision. Константы evXXXX используются в нес- кольких местах: в поле event события, в поле eventMask отображае- мого объекта и в переменных positionalEvents и focusedEvents. Значения: Следующие значения флагов событий обозначают стан- дартные типы событий: Таблица 16.8 Флаги стандартных событий ------------------------------------------------------------ Константа Значение Смысл ------------------------------------------------------------ evMouseDown 0x0001 Нажата кнопка "мыши" evMouseUp 0x0002 Отпущена кнопка "мыши" evMouseMove 0x0004 "Мышь" изменила положение evMouseAuto 0x0008 Периодическое событие до тех пор, пока нажата кнопка "мыши" evKeyDown 0x0010 Нажата клавиша evCommand 0x0100 Командное событие evBroadcast 0x0200 Общее событие ------------------------------------------------------------ Следующие константы могут использоваться для маскирования типов событий: Таблица 16.9 Маски стандартных событий. ------------------------------------------------------------ Константа Значение Смысл ------------------------------------------------------------ evNothing 0x0000 Событие уже обработано evMouse 0x000F Событие от мыши evKeyboard 0x0010 Событие от клавиатуры evMessage 0xFF00 Событие сообщение (команда, общее сообщение или определено пользователем). ------------------------------------------------------------ Биты маски события определены следующим образом: ЪДДДДДД Флаги события ДДДДДДДДї і і старший бит младший бит ЪДВДВДВДВДВДВДВДДДДДДДДДДДДДДДДДДД> evMessage = 0xFF00 і і і і і і і і ЪДДДДДДДДДДД> evKeyboard = 0x0010 і і і і і і і і і ЪДВДВДВДДД> evMouse = 0x000F ЙПСПСПСПСПСПСПСПСНСНСНСПСПСПСПСП» ИНПНПНПНПНПНПСПСПНПНПНПСПСПСПСПСј і і і і і і АДДД> evMouseDown = 0x0001 і і і і і АДДДДД> evMouseUp = 0x0002 і і і і АДДДДДДД> evMouseMove = 0x0004 і і і АДДДДДДДДД> evMouseAuto = 0x0008 і і АДДДДДДДДДДД> evKeyDown = 0x0010 і АДДДДДДДДДДДДДДДДДДД> evCommand = 0x0100 АДДДДДДДДДДДДДДДДДДДДД> evBroadcast = 0x0200 Рис. 16.2 Биты маски события. Маски стандартных событий могут быть использованы для быст- рого определения того, принадлежит ли событие конкретному классу событий. Например: if ( (event.what & evMouse) != 0 ) doMouseEvent(); См. также: TEvent, TView::eventMask, getKeyEvent, getMouseEvent, handleEvent, positionalEvents, focusedEvents. константа focusedEvents VIEWS.H ----------------------------------------------------------------- Описание: focusedEvents = evKeyboard | evCommand; Функция: Определяет классы событий, которые являются фокуси- руемыми. Значения focusedEvents и positionalEvents используются методом TGroup::handleEvent для определения того, как передать событие подобъектам группы. Если класс события не содержит focusedEvents или positionalEvents, то оно понимается как общее событие. См. также: positionalEvents, TGroup::handleEvent, TEvent, evXXXX функция genRefs GENINC.H ----------------------------------------------------------------- Описание: char genRefs(); Функция: genRefs используется GENINC.CPP для генерации ассемблерного сдвига для полей многих классов. GENINC.EXE создает файл TVWRITE.INC необходимый для построения TV.LIB. Функция genRefs является дружественной функцией для TDrawBuffer, TEditor, TEventQueue, TTerminal, TView и TGroup. Она будет интересна толь- ко опытным пользователям, которые разрабатывают свои собственные Turbo Vision библиотеки. функция getAltChar UTIL.H ----------------------------------------------------------------- Описание: char getAltChar( ushort keyCode); Функция: Возвращает символ сh, для которого Alt-сh вырабаты- вает двухбайтовый скэн-код, заданный в аргументе keyCode. Эта функция возвращает значение, обратное к getAltCode. См. также: getAltCode. функция getAltCode UTIL.H ----------------------------------------------------------------- Описание: ushort getAltCode( char ch ); Функция: Возвращает двухбайтовый скан код ( код клавиши ), соответствующий Alt-сh. Эта функция делает обратное к getAltChar отображение. См. также: getAltChar. константы gfXXXX VIEWS.H ----------------------------------------------------------------- Функция: Эти мнемоники используются для установки полей growMode во всех TView и порожденных объектах. Биты, установлен- ные в growMode, определяют, как отображаемый объект будет изме- няться в зависимости от изменений размера его владельца. Значения: Биты growMode определены следующим образом: ЪДД growMode Дї і і cтарший бит младший бит ЪДВДВДВДДД gfGrowAll = 0x0F ЙНСНСНСНСПСПСПСП» ИСПНПСПСПСПСПСПСј АДВДЩ і і і і АДДД gfGrowLoX = 0x01 і і і і АДДДДД gfGrowLoY = 0x02 Неопределены і і АДДДДДДД gfGrowHiX = 0x04 і АДДДДДДДДД gfGrowHiY = 0x08 АДДДДДДДДДДД gfGrowRel = 0x10 Рис. 16.3 Биты режима growMode. Таблица 16.10 Определения флага режима growMode. ----------------------------------------------------------------- Константа Назначение ----------------------------------------------------------------- gfGrowLoX Если установлен, то левая сторона отображаемого объекта будет находиться на одном расстоянии от правой стороны владельца. Если не установлен, то указанное движение происходить не будет. gfGrowLoY Если установлен, то верхняя сторона отображае- мого объекта будет находиться на одном расстоянии от нижней стороны владельца. gfGrowHiX Если установлен, то правая сторона отображаемого объекта будет находиться на одном расстоянии от правой стороны владельца. gfGrowHiY Если установлен, то нижняя сторона отображаемого объекта будет находиться на одном расстоянии от нижней стороны владельца. gfGrowAll Если установлен, то отображаемый объект будет сдвигаться вместе с правым нижним углом его вла- дельца. gfGrowRel Для использования с объектами TWindow, которые находятся в рабочей области экрана. Отображаемый объект будет изменять размер относительно размера владельца. Окно будет обрабатываться соответственно размеру владельца, даже когда происходит переключе- ние между режимами 25 и 43/50 строк. ----------------------------------------------------------------- Заметим, что LoX= левая сторона; LoY = верхняя сторона; HiX = правая сторона; HiY = нижняя сторона. См. также: TView::growMode константы hcXXXX VIEWS.H ----------------------------------------------------------------- Значения: Определены следующие константы контекста подсказ- ки: Таблица 16.11 Константы контекста подсказки. ------------------------------------------- Константа Значение Назначение ------------------------------------------- hcNoContext 0 Контекст не задан hcDragging 1 Объект перемещается ------------------------------------------- Функция: Значение TView::helpCtx по умолчанию - hcNoContext, которое указывает, что для отображаемого объекта нет контекста подсказки. TView::getHelpCtx возвращает hcDragging, как только отображаемый объект становится перемещаемым (это указывается сос- тоянием флага sfDragging). Turbo Vision резервирует для контекста подсказки значения от 0 до 999. Программисты могут определять свои константы в диапазо- не от 1000 до 65535. См. также: TView::helpCtx, TStatusLine::update. функция historyAdd UTIL.H ----------------------------------------------------------------- Описание: void historyAdd( uchar id, const char *str); Функция: Добавляет строку str в протокол, указываемый с по- мощью идентификатора id. функция historyCount UTIL.H ----------------------------------------------------------------- Описание: void historyCount( uchar id ); Функция: Возвращает количество строк в протоколе, соответс- твующее номеру ID. функция historyStr UTIL.H ----------------------------------------------------------------- Описание: const char *historyStr( uchar id, int index); Функция: Возвращает строку в протоколе в позиции index, со- ответствующую номеру ID. функция inputBox MSGBOX.H ----------------------------------------------------------------- Описание: ushort inputBox( const char *title, const char *aLabel, char *s, uchar limit); Функция: отображает окно ввода с данным заголовком и типом элементов ввода. Принимает ввод в строку s с максимальным размером limit символов. См. также: inputBoxRect функция inputBoxRect MSGBOX.H ----------------------------------------------------------------- Описание: ushort inputBoxRect( const TRect &bounds, const char *aLabel, char *s, uchar limit ); Функция: Отображает окно ввода с данными границами заголовком и типом элементов ввода. Принимает ввод в строку s с максимальным размером limit символов. См. также: inputBox константы kbXXXX TKEYS.H ----------------------------------------------------------------- Значения: Следующие значения определяют состояние клавиатуры и могут быть использованы при проверке регистров Shift клавиату- ры, которое находится в байте с абсолютным адресом 0x40:0x17. Таблица 16.12 Состояние клавиатуры и маски Shift ------------------------------------------------------------------ Константа Значение Назначение ------------------------------------------------------------------ kbRightShift 0x0001 Равно 1, если правая клавиша Shift нажата kbLeftShift 0x0002 Равно 1, если левая клавиша Shift нажата kbCtrlShift 0x0004 Равно 1, если нажата клавиша Ctrl kbAltShift 0x0008 Равно 1, если нажата клавиша Alt kbScrollState 0x0010 Равно 1, если клавиатура находится в состоянии Scroll Lock kbNumState 0x0020 Равно 1, если клавиатура находится в состоянии Num Lock kbCapsState 0x0040 Равно 1, если клавиатура находится в состоянии Caps Lock kbInsState 0x0080 Равно 1, если клавиатура в состоянии Ins Lock ----------------------------------------------------------------- Следующие значения определяют скэн-коды клавиатуры и могут использоваться при проверке поля TEvent::keyCode, поля evKeyDown события: Таблица 16.13 Коды Alt-буква. ----------------------------------------------------------- Константа Значение Константа Значение ----------------------------------------------------------- kbAltA 0x1E00 kbAltN 0x3100 kbAltB 0x3000 kbAltO 0x1800 kbAltC 0x2E00 kbAltP 0x1900 kbAltD 0x2000 kbAltQ 0x1000 kbAltE 0x1200 kbAltR 0x1300 kbAltF 0x2100 kbAltS 0x1F00 kbAltG 0x2200 kbAltT 0x1400 kbAltH 0x2300 kbAltU 0x1600 kbAltI 0x1700 kbAltV 0x2F00 kbAltJ 0x2400 kbAltW 0x1100 kbAltK 0x2500 kbAltX 0x2D00 kbAltL 0x2600 kbAltY 0x1500 kbAltM 0x3200 kbAltZ 0x2C00 ----------------------------------------------------------- Таблица 16.14 Коды специальных клавиш. ----------------------------------------------------------- Константа Значение Константа Значение ----------------------------------------------------------- kbAltEqual 0x8300 kbEnd 0x4F00 kbAltMinus 0x8200 kbEnter 0x1C0D kbAltSpace 0x0200 kbEsc 0x011B kbBack 0x0E08 kbGrayMinus 0x4A2D kbCtrlBack 0x0E7F kbHome 0x4700 kbCtrlDel 0x0600 kbIns 0x5200 kbCtrlEnd 0x7500 kbLeft 0x4B00 kbCtrlEnter 0x1C0A kbNoKey 0x0000 kbCtrlHome 0x7700 kbPgDn 0x5100 kbCtrlIns 0x0400 kbPgUp 0x4900 kbCtrlLeft 0x7300 kbrayPlus 0x4E2B kbCtrlPgDn 0x7600 kbRight 0x4D00 kbCtrlPgUp 0x8400 kbShiftDel 0x0700 kbCtrlPrtSc 0x7200 kbShiftIns 0x0500 kbCtrlRight 0x7400 kbShiftTab 0x0F00 kbDel 0x5300 kbTab 0x0F09 kbDown 0x5000 kbUp 0x4800 Таблица 16.15 Коды Alt-число. ----------------------------------------------------------- Константа Значение Константа Значение ----------------------------------------------------------- kbAlt1 0x7800 kbAlt6 0x7D00 kbAlt2 0x7900 kbAlt7 0x7E00 kbAlt3 0x7A00 kbAlt8 0x7F00 kbAlt4 0x7B00 kbAlt9 0x8000 kbAlt5 0x7C00 kbAlt0 0x8100 ----------------------------------------------------------- Таблица 16.16 Коды функциональных клавиш. ----------------------------------------------------------- Константа Значение Константа Значение ----------------------------------------------------------- kbF1 0x3B00 kbF6 0x4000 kbF2 0x3C00 kbF7 0x4100 kbF3 0x3D00 kbF8 0x4200 kbF4 0x3E00 kbF9 0x4300 kbF5 0x3F00 kbF0 0x4400 ----------------------------------------------------------- Таблица 16.17 Коды Shift-функциональная клавиша. ----------------------------------------------------------- Константа Значение Константа Значение ----------------------------------------------------------- kbShiftF1 0x5400 kbShiftF6 0x5900 kbShiftF2 0x5500 kbShiftF7 0x5A00 kbShiftF3 0x5600 kbShiftF8 0x5B00 kbShiftF4 0x5700 kbShiftF9 0x5C00 kbShiftF5 0x5800 kbShiftF0 0x5D00 ----------------------------------------------------------- Таблица 16.18 Коды Ctrl-функциональная клавиша. ----------------------------------------------------------- Константа Значение Константа Значение ----------------------------------------------------------- kbCtrlF1 0x5E00 kbCtrlF6 0x6300 kbCtrlF2 0x5F00 kbCtrlF7 0x6400 kbCtrlF3 0x6000 kbCtrlF8 0x6500 kbCtrlF4 0x6100 kbCtrlF9 0x6600 kbCtrlF5 0x6200 kbCtrlF0 0x6700 ----------------------------------------------------------- Таблица 16.19 Коды Alt-функциональная клавиша. ----------------------------------------------------------- Константа Значение Константа Значение ----------------------------------------------------------- kbAltF1 0x6800 kbAltF6 0x6D00 kbAltF2 0x6900 kbAltF7 0x6E00 kbAltF3 0x6A00 kbAltF8 0x6F00 kbAltF4 0x6B00 kbAltF9 0x7000 kbAltF5 0x6C00 kbAltF0 0x7100 ----------------------------------------------------------- См. также: evKeyDown, getKeyEvent. функция lowMemory UTIL.H ----------------------------------------------------------------- Описание: Boolean lowMemory(); Функция: Вызывает метод TVMemMgr::safetyPoolExhausted для проверки состояния резервного буфера. См. также: TVMemMgr::safetyPoolExhausted Переменная maxCollectionSize CONFIG.H ----------------------------------------------------------------- Описание: const maxCollectionSize = (int)((65536uL - 16)/sizeof( void * ); Функция: Определяет максимальное число элементов, которые может содержать коллекция. По существу это число указателей, ко- торое помещается в сегменте памяти размером 64К. константа maxFindStrLen CONFIG.H ----------------------------------------------------------------- Описание: const maxFindStrLen = 80; Функция: Содержит максимальную длину строки поиска в прог- раммах TEditor. константа maxReplaceStrLen CONFIG.H ----------------------------------------------------------------- Описание: const maxReplaceStrLen = 80; Функция: Дает максимальную длину строки замены в программах TEditor. константа maxViewWidth VIEWS.H ----------------------------------------------------------------- Описание: maxViewWidth = 132; Функция: Устанавливает максимальную ширину отображаемого объекта. См. также: поле TView::size. константа mbXXXX SYSTEM.H ----------------------------------------------------------------- Функция: Эти константы могут использоваться при проверке по- ля TEvent::buttons события evMouse. Например: if ( (event.what == evMouseDown) && (event.button == mbLeftButton) ) doLeftButtonDownAction(); Значения: Определены следующие константы: Таблица 16.20 Константы кнопок мыши ----------------------------------------------------------------- Константа Значение Назначение ----------------------------------------------------------------- mbLeftButton 0x01 Равно 1, если была нажата левая кнопка mbRightButton 0x02 Равно 1, если была нажата правая кнопка ----------------------------------------------------------------- См. также: getMouseEvent. функция message UTIL.H ----------------------------------------------------------------- Описание: void *message(TView *receiver, ushort what, ushort command, void *infoPtr); Функция: Устанавливает событие с аргументами event, command или infoPtr, затем, если возможно, вызывает метод receiver->handleEvent для обработки этого события. message возв- ращает значение 0, если receiver имеет значение 0 или, если собы- тие не обработано успешно. Если событие успешно обработано (handleEvent возвращает event.what = evNothing), функция возвра- щает event.infoPtr. Это можно использовать для определения того, каким отображаемым объектом обработано событие. Аргумент event обычно устанавливается в значение evBroadcast. Например, по умол- чанию TscrollBar::scrollDraw посылает следующее сообщение в стро- ку прокрутки владельца: message( owner, evBroadcast, cmScrollBarChanged, this ); Это сообщение гарантирует, что соответствующие отображаемые объекты перерисуются, как только значение строки прокрутки value изменится. См. также: TView::handleEvent, TEvent, константы cmXXXX, константы evXXXX. функция messageBox MSGBOX.H ----------------------------------------------------------------- Описание: ushort messageBox( const char *msg, ushort aOptions ); ushort messageBox( ushort aOptions, const char *msg, ... ); Функция: Первая форма отображает данное сообщение. Вторая форма использует msg как строку формата, используя дополнительные параметры, которые следуют за ней. aOptions устанавливается в значение одной из констант оконного сообщения mfXXXX. См. также: mfXXXX функция messageBoxRect MSGBOX.H ----------------------------------------------------------------- Описание: ushort messageBoxRect( const TRect &r, const char *msg, ushort aOptions); ushort messageBoxRect( const TRect &r, ushort aOptions, const char *msg, ... ); Функция: Первая форма отображает данное сообщение в указан- ном окне. Вторая форма использует msg как строку формата исполь- зуя дополнительные параметры, которые следуют за ней. aOptions устанавливается в одну из констант оконного сообщения mfXXXX. См. также: mfXXXX константы mfXXXX MSGBOX.H ----------------------------------------------------------------- Значения: Следующие константы оконных сообщений определены для использования с messageBox: Таблица 16.21 Константы messageBox. ----------------------------------------------------------------- Константа Значение Назначение ----------------------------------------------------------------- mfWarning 0x0000 Отображает окно предупреждения mfError 0x0001 Отображает окно ошибки mfInformation 0x0002 Отображает окно информации mfConfirmation 0x0003 Отображает окно подтверждения mfYesButton 0x0100 Помещает в диалог кнопку Yes mfNoButton 0x0200 Помещает в диалог кнопку No mfOKButton 0x0400 Помещает в диалог кнопку OK mfCanselButton 0x0800 Помещает в диалог кнопку Cancel ----------------------------------------------------------------- Определяется стандартная панель диалога "Yes,No,Cancel": mfYesNoCansel = mfYesButton | mfNoButton | mfCanselButton; Определяется стандартная панель диалога "OK,Cancel": mfOKCansel = mfOKButton | mfCanselButton; См. также: messageBox функция moveBuf UTIL.H ----------------------------------------------------------------- Описание: void moveBuf( void *dest, const void *sourse, ushort attr, ushort count); Функция: Копирует текст в буфер. dest указывает на буфер созданный пользователем; sourse должен быть массивом символов. Count байт перемещается из sourse в младшие байты соответствующих слов в dest. Старшие байты слов в dest устанавливаются в attr или остаются неизмененными, если параметр attr равен нолю. См. также: TDrawBuffer, moveChar, moveCStr, moveStr. функция moveChar UTIL.H ----------------------------------------------------------------- Описание: void moveChar( void *dest, char c, ushort attr, ushort count); Функция: Копирует символы в буфер. dest указывает на буфер, созданный пользователем. Младшие биты первых count слов в dest устанавливаются в c или остаются неизмененными, если с равно '\0'. Старшие биты слов устанавливаются в attr или остаются неиз- мененными если параметр attr равен нолю. См. также: TDrawBuffer, moveBuf, moveCStr, moveStr функция moveCStr UTIL.H ----------------------------------------------------------------- Описание: void moveCStr( void *dest, const char *str, ushort attrs); Функция: Копирует двухцветную строку в буфер. dest указывает на буфер созданный пользователем. Символы из str копируются в младшие байты соответствующих слов в dest. Старшие байты слов устанавливаются в lo(attr) или hi(attr). Символы тильда(~) в строке используются для переключения между двумя атрибутами байт, передаваемыми в слово attr. См. также: TDrawBuffer, moveChar, moveBuf, moveStr функция moveStr UTIL.H ----------------------------------------------------------------- Описание: void moveStr( void *dest, const char *str, ushort attrs); Функция: Копирует строку в буфер. dest указывает на буфер созданный пользователем. Символы из str копируются в младшие байты соответствующих слов в dest. Старшие байты слов устанавливаются в attr или остаются неизмененными, если параметр attr равен нулю. См. также: класс TDrawBuffer, moveChar, moveCStr, moveBuf функция newStr UTIL.H ----------------------------------------------------------------- Описание: char *newStr( const char *s); Функция: Динамическое создание строки. Если s пустая, то newStr возвращает нулевой указатель. В противном случае размещаются strlen(s)+ 1 байт, в которые копируется s ( с разделителем '\0' ) и возвращается указатель на первый байт. Вы можете использовать для удаления таких строк delete. константы ofXXXX VIEWS.H ----------------------------------------------------------------- Функция: Эти мнемонические обозначения используются для ссылок на битовые позиции поля TView::options. Установка позиции бита в 1 указывает, что отображаемый объект имеет отдельный атри- бут; очистка битовой позиции означает, что атрибут отключен или запрещен. Например: myWindow.options = ofTileable | ofSelectable; Значения: Определены следующие параметры флагов: Таблица 16.22 Параметры флагов. ----------------------------------------------------------------- Константа Назначение ----------------------------------------------------------------- ofSelectable Установлен, если отображаемый объект выделяется автоматически (см. sfSelectable), например, от- меткой мышью в отображаемом объекте или клавишей Tab в панели диалога. ofTopSelect Установлен, если отображаемый объект помещается перед всеми другими равными отображаемыми объек- тами, когда он выделен. Когда бит ofTopSelect ус- тановлен, вызов метода TView::select соответству- ет вызову метода TView::makeFirst. Окна (TWindow и его потомки) по умолчанию имеют этот бит уста- новленным, что заставляет их располагаться перед всеми другими окнами в рабочей области экрана, когда они выбираются. См. также TView::select, TGroup::makeFirst. ofFirstClick Если бит сброшен, то отметка "мышью", которая выделяет отображаемый объект, не имеет эффекта. Если установлен, такая отметка "мышью" будет ра- ботать как обычный отметка "мышью после выбора отображаемого объекта. Не имеет эффекта, если флаг ofSelectable не установлен. См. также TView::handleEvent, sfSelect, ofSelectable. ofFramed Установлен, если отображаемый объект имеет рамку. TWindow и его потомки имеют TFrame, как свой пос- ледний подобъект. Когда отображаемый объект рисуется, TFrame рисует рамку вокруг любого дру- гого подобъекта, у которого установлен бит ofFrame. См. также TFrame, TWindow. ofPreProcess Установлен, если отображаемый объект получает ак- тивные события до того, как они были посланы ак- тивному объекту. В противном случае сброшен. См. также sfFocused, ofPostProcess, TGroup::phase. ofPostProcess Установлен, если отображаемый объект получает ак- тивное событие в случае, когда активный объект не может их обработать. В противном случае сбрасыва- ется. См. также sfFocused, ofPreProcess, TGroup:: phase. ofBuffered Используется только для объектов TGroup и производных классов. Установлен, если кэш-буфер распределяет доступную память. Буфер группы содержит образ экрана для всей группы, таким образом увеличивая скорость перерисовки. При отсутствии буфера, метод TGroup::draw вызывает методы каждого подобъекта drawView. Если впос- ледствии не выделяется достаточно памяти, буфера группы будут удалены из памяти. ofTileable Установлен, если рабочая область экрана может расположить этот отображаемый объект с перекрыти- ем (каскадное расположение). Обычно используется только с объектами TWindow. ofCenterX Установлен, если отображаемый объект центрирует- ся по оси x своего владельца при вставке в группу с использованием TGroup::insert. ofCenterY Установлен, если отображаемый объект центрирует- ся по оси y своего владельца при включении в группу с использованием метода TGroup::insert. ofCentered Установлен, если отображаемый объект центрируется по обоим осям своего владельца при включении в группу с использованием метода TGroup::insert. ----------------------------------------------------------------- Биты options определены следующим образом: ЪДДДДДДДДДД options ДДДДДДДДДДї і і старший бит младший бит ЪДВДДДДДДДДДДДДДДДДДДД> ofCentered = 0x0300 ЙНСНСНСНСНСНСПСПСНСНСНСНСНСНСНСН» ИСПНПНПНПНПСПСПСПСПСПСПСПСПСПСПСј АДДДДВДДДДЩ і і і і і і і і і АДДД> ofSelectable = 0x0001 і і і і і і і і і АДДДДД> ofTopSelect = 0x0002 Резерв і і і і і і і АДДДДДДД> ofFirstClick = 0x0004 і і і і і і АДДДДДДДДД> ofFramed = 0x0008 і і і і і АДДДДДДДДДДД> ofPreProcess = 0x0010 і і і і АДДДДДДДДДДДДД> ofPostProcess = 0x0020 і і і АДДДДДДДДДДДДДДД> ofBuffered = 0x0040 і і АДДДДДДДДДДДДДДДДД> ofTileable = 0x0080 і АДДДДДДДДДДДДДДДДДДД> ofCenterX = 0x0100 АДДДДДДДДДДДДДДДДДДДДД> ofCenterY = 0x0200 Рис. 14.4 Битовые флаги options. См. также: TView::options операция + MENUS.H ----------------------------------------------------------------- Описание: TSubMenu& operator + ( TSubMenu& s,TMenuItem& i); TSubMenu& operator + ( TSubMenu& s1,TSubMenu& s2); Функция: Эти переопределяемые операции + используются с конструкторами TSubMenu, TMenuItem, TStatusDef и TStatusItem для создания строк состояния и вложенных меню. операция delete NEW.CPP ----------------------------------------------------------------- Описание: void *operator delete( void *blk ); Функция: Освобождает место в динамически распределяемой об- ласти оперативной памяти. Если резервный буфер исчерпан, то вызы- вается метод TVMemMgr::resizeSafetyPool. Он освобождает старый резервный буфер и создает новый, с размером по умолчанию (обычно 4096 байт). См. также: TVMemMgr::resizeSafetyPool операция new NEW.CPP ----------------------------------------------------------------- Описание: void *operator new( size_t sz ); Функция: Пытается выделить sz байт в динамически распределя- емой области оперативной памяти. Возвращается указатель на разме- щение, если оно успешно. Если выделение памяти не удалось, то кэш буферы (если имеются) освобождаются один за другим и попытка раз- мещения возобновляется. Если это не удается и резервный буфер ис- черпан, то new вызывает abort. В противном случае предпринимается попытка размещения в резервном буфере. Эта попытка, независимо от того удачна она или нет, устанавливает указатель TVMemMgr::safetyPool в 0 (указывая, что резервный буфер исчер- пан). Если операция new выполнила выделение памяти в резервном буфере успешно, то возвращается указатель на размещение; в про- тивном случае вызывается abort. Операция new является дружествен- ной для TBufListEntry. См. также: TVMemMgr::safetyPool, TVMemMgr::safetyPoolExhausted, TVMemMgr::resizeSafetyPool константа positionalEvents VIEWS.H ----------------------------------------------------------------- Описание: positionalEvents = evMouse; Функция: Определяет классы событий как positionalEvents. Переменные focusedEvents и positionalEvents используются методом TGroup::handleEvent, чтобы установить соответствие собы- тия подобъектам группы. Если класс события не принадлежит focusedEvents или positionalEvents, то оно интерпретируется как общее событие. См. также: TGroup::handleEvent, TEvent, evXXXX, focusedEvents константы sbXXXX VIEWS.H ----------------------------------------------------------------- Функция: Эти константы определяют различные области TScrollBar, в которых воспринимается отметка мышью. Функция TScrollBar::scrollStep осуществляет преобразование этих констант в действительные значения шага прокрутки. Хотя она определена, константа sbIndicator никогда не передается в TScrollBar::scrollStep. Таблица 16.23 Константы строки прокрутки. ----------------------------------------------------------- Константа Значение Назначение ----------------------------------------------------------- sbLeftArrow 0 Левая стрелка горизонтальной строки прокрутки. sbRightArrow 1 Правая стрелка горизонтальной строки прокрутки. sbPageLeft 2 Левая страничная область горизонтальной строки прокрутки. sbPageRight 3 Правая страничная область горизонтальной строки прокрутки. sbUpArrow 4 Стрелка вверх вертикальной строки прокрутки. sbDownArrow 5 Стрелка вниз вертикальной строки прокрутки. sbPageUp 6 Верхняя страничная область вертикальной строки прокрутки. sbPageDown 7 Нижняя страничная область вертикальной строки прокрутки. sbIndicator 8 Индикатор на строке прокрутки. ----------------------------------------------------------- ^ >ДД sbUpArrow ± ± >ДД sbPageUp ± sbIndicator ДДДДДДДД< і ± і ± і ± і ± >ДД sbPageDown і ± і ± v v >ДД sbDownArrow <±±±±±±±±±±±±±±± ±±±±±±±±±±±±±±±±±±±>ДЩ ^ ^ ^ ^ і і і і і sbPageLeft sbPageRight і sbLeftArrow sbRightArrow Рис. 16.5 Строка прокрутки. В метод TWindow::standardScrollBar могут передаваться следу- ющие значения. Таблица 16.24 Константы standardScrollBar. ----------------------------------------------------------- Константа Значение Назначение ----------------------------------------------------------- sbHorizontal 0x0000 Строка прокрутки горизонтальна sbVertical 0x0001 Строка прокрутки вертикальна sbHandleKeyboard 0x0002 Строка прокрутки реагирует на команды клавиатуры ----------------------------------------------------------- См. также: TScrollBar, TScrollBar::scrollStep, TWindow::standardScrollBar: selectMode enumeration VIEWS.H ----------------------------------------------------------------- Описание: selectMode = (normalSelect, enterSelect, leaveSelect); Функция: Служит для внутреннего использования в Turbo Vision. См. также: TGroup::execView, TGroup::setCurrent. константы sfXXXX VIEWS.H ----------------------------------------------------------------- Функция: Эти константы используются для доступа к соответс- твующим битам поля TView::state. Поля TView::state никогда не должны изменяться непосредственно, вместо этого вы должны исполь- зовать метод TView::setState. Значения: Определены следующие флаги состояния: Таблица 16.25 Константы флагов состояния. ----------------------------------------------------------------- Константа Назначение ----------------------------------------------------------------- sfVisible Установлен, если отображаемый объект виден в своем владельце; в противном случае 0. Отображаемые объек- ты по умолчанию имеют флаг состояния sfVisible. Ме- тоды TView::show и TView::hide могут использоваться для модификации флага sfVisible. При sfVisible = 1 отображаемый объект не обязательно видим на экране, поскольку его владелец может быть невидим. Для про- верки видимости на экране, проверьте бит sfExposed или вызовите функцию TView::exposed. sfCursorVis Установлен, если курсор отображаемого объекта ви- дим, в противном случае сброшен. По умолчанию сбро- шен. Методы TView::showCursor и TView::hideCursor могут использоваться для модификации sfCursorVis. sfCursorIns Установлен, если курсор отображаемого объекта представляет собой сплошной блок (прямоугольник), очищен, если курсор отображаемого объекта - символ подчеркивания. По умолчанию сброшен. Методы TView:: blockCursor и TView::normalCursor могут использо- ваться для модификации sfCursorIns. sfShadow Установлен, если отображаемый объект имеет тень, в противном случае, сброшен. sfActive Установлен, если отображаемый объект - это активное окно или подобъект активного окна. sfSelected Установлен, если отображаемый объект - это текущий выбранный подобъект внутри своего владельца. Каждый объект TGroup имеет поле current, которое указывает на текущий выбранный подобъект (или 0, если никаких подобъектов не выбрано). Может быть только один выб- ранный подобъект в TGroup. sfFocused Установлен, если отображаемый объект является те- кущим. Отображаемый объект будет текущим, если он выделен и все владельцы выше его также выделены, т.е. если отображаемый объект находится в цепи, об- разованной указателями current всех TGroup, начиная с application (самый верхний отображаемый объект в иерархии отображаемых объектов). Последний отобража- емый объект цепочки - это конечное назначение для всех focused events. sfDragging Установлен, если отображаемый объект можно переме- щать; в противном случае, сброшен. sfDisabled Установлен, если отображаемый объект запрещен; очи- щен, если разрешен. Запрещенные отображаемые объекты будут игнорировать все передаваемые им события. sfModal Установлен, если отображаемый объект - модальный. В выполняемой программе, написанной с помощью Turbo Vision, всегда существует точно один отображаемый объект (обычно, объекты TAppplication или TDialog). Когда отображаемый объект начинает выполняться (че- рез вызов execView), этот отображаемый объект стано- вится модальным. Модальный отображаемый объект представляет вершину (корень) активного дерева собы- тий, получая события и управляя ими до тех пор пока не вызван его метод endModal. Во время этого "ло- кального" цикла событий события передаются нижним подобъектам в дереве отображаемых подобъектов. Собы- тия от этих нижних отображаемых объектов передаются по дереву, но не далее модального отображаемого объ- екта. См. также sfSelected, sfFocused, TView:: setState, TView::handleEvent, TGroup::execView. sfDefault Это свободный флаг, доступный для определения пользователем какого-либо состояния по умолчанию. sfExposed Установлен, если у отображаемого объекта прямой или косвенный владелец - объект application и следова- тельно он может быть виден на экране. Метод TView::exposed использует этот флаг при отсечении, определяя, какая часть отображаемого объекта действительно видна на экране. См. также TView::exposed. ----------------------------------------------------------------- Значения: Биты флага state определены так: ЪДДДДДДДДДДДД state ДДДДДДДДДДї і і старший бит младший бит ЙНСНСНСНСНСНСНСНСНСНСНСНСНСНСНСН» ИНПНПНПНПСПНПСПСПСПСПСПСПСПСПСПСј і і і і і і і і і і АДДД sfVisible = 0x0001 і і і і і і і і і АДДДДД sfCursorVis = 0x0002 і і і і і і і і АДДДДДДД sfCursorIns = 0x0004 і і і і і і і АДДДДДДДДД sfShadow = 0x0008 і і і і і і АДДДДДДДДДДД sfActive = 0x0010 і і і і і АДДДДДДДДДДДДД sfSelected = 0x0020 і і і і АДДДДДДДДДДДДДДД sfFocused = 0x0040 і і і АДДДДДДДДДДДДДДДДД sfDragging = 0x0080 і і АДДДДДДДДДДДДДДДДДДД sfDisabled = 0x0100 і АДДДДДДДДДДДДДДДДДДДДД sfModal = 0x0200 АДДДДДДДДДДДДДДДДДДДДДДДДД sfExposed = 0x0800 Рис. 16.6 Биты флага состояния. См. также: TView::state переменная specialChars TTYPES.H ----------------------------------------------------------------- Описание: extern const uchar spesialChar[] = { 175, 174, 26, 27, ' ',' ' }; Функция: Определяет символы индикатора, используемые для подсветки активного отображаемого объекта в монохромном видеоре- жиме. Эти символы отображаются, если переменная showMarkers имеет значение True. См. также: переменная showMarkers StreamableInit enumeration TTYPES.H ----------------------------------------------------------------- Описание: enum StreamableInit { StreamableInit }; Функция: Каждый потоковый класс имеет специального "построи- теля", который берет аргумент streamableinit. Это определено в данном enumeration, обеспечивая уникальный тип данных для этого аргумента конструктора. См. также: TView::TView( StreamableInit ); TScrollChars typedef VIEWS.H ----------------------------------------------------------------- Описание: typedef char TScrollChars[5]; Функция: Массив, представляющий символы, используемые для отображения TScrollBar. См. также: TScrollBar uchar typedef TTYPES.H ----------------------------------------------------------------- Описание: typedef unsigned char uchar; Функция: Синоним для unsigned char. ushort typedef TTYPES.H ----------------------------------------------------------------- Описание: typedef unsigned short ushort; Функция: Синоним для unsigned short. константы wfXXXX VIEWS.H ----------------------------------------------------------------- Функция: Эти мнемонические обозначения определяют биты в по- ле flags объектов TWindow. Если биты установлены, окно будет иметь соответствующие атрибуты: окно может перемещаться, изменять размер, закрываться или распахиваться. Значения: Флаги окна определены следующим образом: Рис. 16.7 Флаги окна ЪДДД flags ДДДї і і старший бит младший бит ЙНСНСНСНСНСНСНСН» ИСПНПНПСПСПСПСПСј АДДВДДЩ і і і АД wfMove = 0x01 і і і АДДД wfGrow = 0x02 Неопределеныі АДДДДД wfClose = 0x04 АДДДДДДД wfZoom = 0x08 Таблица 16.26 Константы флагов окна. ------------------------------------------------------------ Константа Значение Смысл ------------------------------------------------------------ wfMove 0x01 Окно можно перемещать wfGrow 0x02 Можно изменять размеры окна соответствующей кнопкой в нижнем правом углу wfClose 0x04 Рамка окна имеет закрывающую кнопку wfZoom 0x08 Рамка окна имеет кнопку распахивания ------------------------------------------------------------ Если отдельный бит установлен (=1), то соответствующая воз- можность разрешена, в противном случае (=0), эта возможность зап- рещена. См. также: TWindows::flags константa wnNoNumber VIEWS.H ----------------------------------------------------------------- Описание: const ushort wnNoNumber = 0; Функция: Если поле TWindow::number содержит эту константу, то это указывает, что окно не может иметь номера и не может выби- раться через Alt+number. Если поле number имеет значение от 1 до 9, то номер окна отображается и выбор Alt+number доступен. См. также: TWindow::number структура write_args VIEWS.H ----------------------------------------------------------------- Описание: struct write_args { void far *self; void far *target; void far *buf; ushort offset; }; Функция: Используется методом TView::writeView. константы wpXXXX VIEWS.H ----------------------------------------------------------------- Функция: Эти константы определяют три стандартных цвета, отражая их назначение. По умолчанию, TWindow::palette имеет палитру wpBlueWindow. По умолчанию, объекты TDialog имеют палитру wpGrayWindow. Значения: Три стандартных палитры окна определены следующим образом: Таблица 16.27 Стандартные палитры окна. ------------------------------------------------------------ Константа Значение Назначение ------------------------------------------------------------ wpBlueWindow 0 Желтый текст на синем фоне wpCuanWindow 1 Синий текст на бирюзовом фоне wpGrayWindow 2 Черный текст на сером фоне ------------------------------------------------------------ См. также: TWindow::palette, TWindow::getPalette |