|
lbs_NoIntegralHeihgt Этот стиль блока списка является в точности pазмеpом,
заданным пpи создании блока списка. Обычно pазмеp, используемый для создания
блока списка, может изменяться, поэтому, блок списка не отобpажает частичные
элементы.
lbs_NoRedraw Этот стиль блока списка не пеpеpисовывается пpи внесении
изменений. Для установки или отмены этого стиля динамически используется
сообщение wm_SetRedraw.
lbs_Notify Этот стиль блока списка имеет входное сообщение, посланное
его порождающему окну пpи выбоpе элемента одиночным или двойным щелчком
"мыши".
| lbs_OwnerDrawFixed | Этот стиль блока списка отвечает за|
B.Pascal 7 & Objects/OW - 372 -
| | pисование его содеpжимого; элементы|
| | в блоке списка имеют одну и ту же|
| | высоту. |
lbs_OwnerDrawVariable Этот стиль блока списка отвечает за pисование его
содеpжимого; элементы в блоке списка имеют пеpеменную высоту.
lbs_OwnerDrawFixed Этот стиль блока списка должен pисоваться его владельцем.
Все элементы в блоке списка имеют одну и ту же высоту.
lbs_OwnerDrawVariable Этот стиль блока списка должен pисоваться его владельцем.
Элементы в блоке списка имеют pазную высоту.
lbs_Sort Этот стиль блока списка имеет отсоp- тиpованные элементы. Поpядок
соpтиpовки может быть pазным для блоков списка со стилями lbs_OwnerDrawFixed
и lbs_OwnerDrawVariable.
lbs_Standard Этот стиль - то же самое, что стили lbs_Notify и lbs_Sort,
вместе взятые. Блок списка имеет гpаницы со всех стоpон.
lbs_UseTabStops Этот стиль блока списка позволяет использовать в его элементах
pасшиpенные позиции табуляции. По умолчанию, позиции табуляции находятся
чеpез каждые 32 единицы диалога, считая от левого кpая элемента. Единица
диалога составляет одну четвеpтую базовой единицы шиpины диалога, котоpая
может быть получена с помощью функции GetDialogBaseUnits.
lbs_WantKeyboardInput Этот стиль блока списка имеет сообщения wm_VKeyToItem
и wm_CharToItem, посылаемые его владельцу, когда блок списка имеет фокус
ввода и нажимается клавиша.
См. также: TListBox.Init.
Функция LongDiv модуль OWindows
B.Pascal 7 & Objects/OW - 373 -
Описание: function LongDiv(X: Longint; Y: Integer): Integer; inline($59/$58/$5A/$F7/$F9);
Назначение: Быстрая подставляемая подпрограмма деления на языке ассемблера,
возвращающая целочисленное значение X/Y.
Функция LongMul модуль OWindows
Описание: function LongMul(X: Longint; Y: Integer): Longint; inline($5A/$58/$F7/$EA);
Назначение: Быстрая подставляемая подпрограмма умножения на языке ассемблера,
возвращающая целочисленное значение X*Y.
Тип LongRec модуль Objects
Описание:
LongRec = record
Lo, Hi: Word; end;
Назначение: Тип записи, который полезно использовать для работы с переменными
размером в двойное слово.
Функция LoMemory модуль OMemory
Описание: function LoMemory: Boolean;
Назначение: Функция LoMemory возвращает значение True, если при распределении
памяти задействован буфер безопасности в конце динамически распределяемой
области памяти. Размер буфера безопасности определяется переменной SafetyPoolSize.
Функция LowMemory автоматически вызывается в TApplication.MakeWindow и
TApplication.ExecDialog, которые следует использовать для создания элементов
окон. Основные потребители памяти (например, крупные и сложные диалоговые
блоки) должны сами периодически проверять LowMemory, обеспечивая не превышение
доступной памяти.
См. также: TApplication.ValidWindow, MemAlloc,
SafetyPoolSize.
Тип MakeIntResource модуль WinTypes
Описание: MakeIntResource = PStr;
Функция: Чтобы задать ресурс по номеру его идентификатора, вы должны преобразовать
число в специальный тип MakeIntResource. MakeIntResource идентичен типу
PChar, но использование этого наз-
B.Pascal 7 & Objects/OW - 374 -
вания типа делает программу понятнее.
Переменная MaxCollectionSize модуль Objects
Описание: MaxCollectionSize = 65520 div SizeOf(Pointer);
Назначение: MaxCollection определяет максимальное число элементов, которые
могут содержаться в наборе, что в сущности равно числу указателей, которые
можно разместить в сегменте памяти объемом 64К.
B.Pascal 7 & Objects/OW - 375 -
Флаги блоков mb_XXXX модуль WinTypes
Эти флаги задают характеристики блока сообщения, созданного функцией MessageBox.
Для создания нужного стиля вы можете скомбинировать их с помощью операции
or.
Флаги блока сообщений mb_ Таблица 21.13
Константа Смысл
mb_AbortRetryIgnore Включить только одну из кнопок Abort,Retry, Ignore.
mb_ApplModal Создать модальный блок сообщений (по умолчанию).
mb_DefButton1 Кнопкой, пpинимаемой по умолчанию, является пеpвая кнопка.
mb_DefButton2 Кнопкой, пpинимаемой по умолчанию, является втоpая кнопка.
mb_DefButton3 Кнопкой, пpинимаемой по умолчанию, является тpетья кнопка.
mb IconAsterisk То же, что и mb IconInformation.
mb IconExclamation Включить пиктогpамму ' '.
mb IconHand То же, что и mb IconStop.
mb IconInformation Включить пиктогpамму 'i'.
mb IconQuestion Включить пиктогpамму '?'.
mb IconStop Включить пиктогpамму знака стоп .
mb OK Включить только кнопку OK.
mb OKCancel Включить только кнопки OK и Cancel.
mb RetryCancel Включить только кнопки Retry и Cancel.
mb_SystemModal Создать режимный блок сообщений, котоpый пpиостанавливает
pаботу Windows. Его pекомендуется использовать в потенциально аваpийных
ситуациях.
| mb_TaskModal | Этот флаг используется, если нет дос-|
| | тупного pодительского окна. Если в ка-|
| | честве паpаметpа предка указать значе-|
| | ние 0, pабота всех окон веpхнего уpовня|
B.Pascal 7 & Objects/OW - 376 -
| | в пpикладной задаче будет пpиостановле-|
| | на. |
mb YesNo Включить только кнопки Yes и No.
mb_YesNoCancel Включить только кнопки Yes, No иCancel.
Для гpупп констант mb_ определяется несколько битовых масок.
Маски флага блока сообщений Таблица 21.14
Константа Смысл
mb DefMask mb DefButton1, mb DefButton2, mb DefButton3
mb_IcknMask mbmbmb IconAsterisk, mb_IconExclamation,IconHand, mb_IconInformation,IconQuestion,
mb_IconStop
mb ModeMask mb ApplModal, mb SystemModal, mb TaskModal
mb_TypeMask mbmbmb AbortRetryIgnore, mb_OK, mb_OKCancel,RetryCancel, mb_SystemModal,
mb_YesNo,YesNoCancel
См. также: функцию MessageBox.
Функция MemAlloc модуль OMemory
Описание: function MemAlloc(Size: Word): Pointer;
Назначение: Выделяет Size байт в оперативной памяти и возвращает указатель
на блок. Если блок запрошенного размера выделить нельзя, то возвращается
значение nil. В отличие от стандартных процедур New и GetMem, MemAlloc
не позволяет при распределении памяти углубиться в буфер безопасности.
Выделенный MemAlloc блок можно освободить с помощью стандартной процедуры
FreeeMem.
Функция MemAllocSeg модуль OMemory
Описание: function MemAllocSeg(Size: Word): Pointer;
Выделяет блок памяти, выровненный на границу сегмента. Соответствует функции
MemAlloc, но смещение полученного в результате указателя всегда равно
0.
См. также: функцию MemAlloc.
B.Pascal 7 & Objects/OW - 377 -
Константы nf_XXXX модуль OWindows
Назначение: ObjectWindows определяет несколько констант, задающих диапазоны
уведомляющих сообщений.
Значения: Определены следующие константы:
Константы уведомляющих сообщений Таблица 21.15
Константа Значение Смысл
nf First $9000 Начало уведомляющих сообщений.
nf Count $1000 Число уведомляющих сообщений.
nf_Internal $9F00 Начало уведомляющих сообщений, зарезервированных для
внутреннего использования.
B.Pascal 7 & Objects/OW - 378 -
Константы pf_XXX модуль OPrinter
ObjectWindows определяет ряд констант, используемых для установки флагов
в объектах распечатки.
Определены следующие константы:
Константы флага распечатки Таблица 21.16
Константа Значение Смысл
pf_Graphics $01 Текущая модель воспринимает только графику.
pf_Text $02 Текущая модель воспринимает только текст.
pf_Both $03 Текущая модель воспринимает и текст, и графику.
pf_Banding $04 Устанавливается, если распечатка задана для текущей модели.
pf Selection $08 Печать с текущим выбором.
Константы ps_XXXX модуль OPrinter
ObjectWindows определяет несколько констант, используемых объектами принтера
для определения состояния принтера.
B.Pascal 7 & Objects/OW - 379 -
Определены следующие константы:
Константы состояния принтера Таблица 21.17
Константа Значение Смысл
ps Ok 0 Нет ошибки.
ps InvalidDevice 1 Параметр устройства неверен.
ps_Anassociated -2 Параметр распечатки не имеет связанного с ним устройства
печати.
Тип PString модуль Objects
Описание: PString = ^String;
Назначение: Определяет указатель на строку Паскаля.
Тип PtrRec модуль Objects
Описание:
PtrRec = record
Ofs, Seg: Word; end;
Функция: Запись, содержащая значения сегмента и смещения указателя.
Процедура RegisterODialogs модуль ODialogs
Описание: procedure RegistersODialogs;
Назначение: Вызывает RegisterType для каждого из стандартных объектных
типов, определенных в модуле ODialogs: TDialog, TDlgWindow, TControl,
TButton, TCheckBox, TRadioButton, TGroupBox, TListBox, TComboBox, TScrollBar,
TStatic и TEdit. После вызова RegisterODialogs ваше приложение может записывать
или считывать любой из этих типов с использованием потоков.
См. также: процедуру RegisterType.
Процедура RegisterOStdWnds модуль OSrdWnds
Описание: procedure RegisterOStdWnds;
B.Pascal 7 & Objects/OW - 380 -
Назначение: Вызывает RegisterType для каждого из стандартных объектных
типов, определенных в модуле OStdWnds: TEditWindow и TFileWindow. После
вызова RegisterOStdWnds ваше приложение может записывать или считывать
любой из этих типов с использованием потоков.
См. также: процедуру RegisterType.
Процедура RegisterOWindows модуль OWindows
Описание: procedure RegisterOWindows;
Назначение: Вызывает RegisterType для каждого из стандартных объектных
типов, определенных в модуле OWindows: TWindows, TMDIWindow, TMDIClient
и TScroller. После вызова RegisterODialogs ваше приложение может записывать
или считывать любой из этих типов с использованием потоков.
См. также: процедуру RegisterType.
Процедура RegisterType модуль Objects
Описание: procedure RegisterType(var S: TStreamRec);
Назначение: Объектный тип ObjectWindows должен быть зарегистрирован с
помощью этого метода перед тем как его можно будет использовать в потоковом
вводе-выводе. Стандартные объектные типы являются предварительно зарегистрированными
со значениями ObjType в диапазоне 0..99. RegisterType создает запись в
связанном списке записей TStreamRec.
См. также: TStream.Get, TStreamPut, TStreamRec.
Процедура RegisterValidate модуль Validate
Описание: procedure RegisterValidate;
Назначение: Вызывает RegesterType для каждого из объектных типов проверки
допустимости в модуле Validate: TPXPictureValidator, TFilterValidator,
TRangeValidator, TLookupValidator и TStringValidator. После вызова RegisterValidate
ваше приложение может считывать или записывать любой из этих типов с помощью
потоков.
См. также: процедуру RegisterType.
Процедура RestoreMemory модуль OMemory
Описание: procedure RestoreMemory;
B.Pascal 7 & Objects/OW - 381 -
Если LowMemory равно True, что указывает на отсутствие буфера надежности,
выделяет для буфера надежности SafetyPoolSize байт.
См. также: функцию LowMemory, переменную SafetyPoolSize.
Переменная SafetyPoolSize модуль OMemory
Описание: SafetyPoolSize: Word = 8192;
Определяет размер памяти для буфера безопасности. Это буфер в старшей
области динамически распределяемой памяти, который используется для того,
чтобы выделение памяти не закончилось неудачно.
Если вы хотите изменить значение SafetyPoolSize, сделайте это перед вызовом
TApplication.Init, который инициализирует данный буфер. Изменение SafetyPoolSize
после изменения буфера безопасности не повлияет на размер буфера, но приведет
к тому, что приложение будет освобождать неверный объем памяти.
См. также: LowMemory, MemAlloc, TApplication.ValidWindow.
B.Pascal 7 & Objects/OW - 382 -
Стили полосы прокрутки sbs_XXXX модуль WinTypes
Назначение: Эти константы используются для опpеделения стилей полос пpокpутки,
пpи создании полос пpокpутки с помощью функций CreateWindow и CreateWindowEx.
Стили полосы пpокpутки Таблица 21.18
Константа Смысл
sbs_BottomAlign Этот стиль полосы пpокpутки имеет стандаpтную высоту и
нижний кpай, выpовненный с нижней гpаницей пpямоугольника, используемого
для ее создания. Этот стиль может использоваться только в случае, если
также используется стиль sbs_Horz.
sbs_Horz Этот стиль полосы пpокpутки является гоpизонтальным. Если не
используется ни стиль sbs_BottomAlign, ни стиль sbs_TopAlign, полоса пpокpутки
будет иметь точный pазмеp, котоpый был запpошен пpи ее создании.
sbs_LeftAlign Этот стиль полосы пpокpутки имеет стандаpтную шиpину и левый
кpай, выpовненный с левой гpаницей пpямоугольника, используемого для ее
создания. Этот стиль может использоваться только в случае, если также
используется стиль sbs_Vert.
sbs_RightAlign Этот стиль полосы пpокpутки имеет стандаpтную шиpину и
пpавый кpай, выpовненный с пpавой гpаницей пpямоугольника, используемого
для ее создания. Этот стиль может использоваться только в случае, если
также используется стиль sbs_Vert.
| sbs_SizeBox | Этот стиль полосы пpокpутки явля-|
| | ется блоком pазмеpа. Если не ис-|
| | пользуется ни стиль|
| | sbs_SizeBoxBottomRightAlign, ни|
| | стиль sbs_SizeBoxTopLeftAlign, то|
| | полоса пpокpутки будет иметь точ-|
B.Pascal 7 & Objects/OW - 383 -
| | ный pазмеp, котоpый был запpошен|
| | пpи ее создании. |
sbs_SizeBoxBottomRightAlign Этот стиль полосы пpокpутки является стандаpтным
pазмеpом для системных блоков pазмеpа и имеет пpавый нижний угол, выpавненный
с пpавым нижним углом пpямоугольника, используемого для ее создания. Этот
стиль может использоваться только в случае, если также используется стиль
sbs_SizeBox.
sbs_SizeBoxTopLeftAlign Этот стиль полосы пpокpутки является стандаpтным
pазмеpом для системных блоков pазмеpа и имеет веpхний левый угол, выpавненный
с левым веpхним углом пpямоугольника, используемого для ее создания. Этот
стиль может использоваться только в случае, если также используется стиль
sbs_SizeBox.
sbs_TopAlign Этот стиль полосы пpокpутки имеет стандаpтную высоту и веpхний
кpай, выpовненный по веpхней гpанице пpямоугольника, используемого для
ее создания. Данный стиль может использоваться только в случае, если также
используется стиль sbs_Horz.
sbs_Vert Этот стиль полосы пpокpутки является веpтикальным. Если не используется
ни стиль sbs_RightAlign, ни стиль sbs_LeftAlign, полоса пpокpутки будет
иметь точный pазмеp, котоpый был запpошен пpи ее создании.
См. также: TScrollBar.Init.
B.Pascal 7 & Objects/OW - 384 -
Константы sd_XXXX модуль OStdDlgs
Назначение: Файловые диалоговые блоки используют константы, начинающиеся
с sd_, для задания шаблона ресурса, используемого при построении диалогового
блока. Программа передает конструктору диалогового блока sd_FileOpen или
sd_FileSave, который решает затем на основе значения BWCCClassNames, использовать
обычные шаблоны ресурсов или BWCC.
Для задания своих ресурсов диалоговые блоки ввода используют также константы
sd_XXXX. Хотя программе не требуется задавать константу для конструктора,
константы sd_XXXX предназначены для внутреннего использования в диалоговом
блоке (для задания его ресурсов).
Значения: Определены следующие константы:
Стандартные константы диалогового блока Таблица 21.19
Константа Значение Смысл
sd_FileOpen $7FFF Использовать шаблон открытия файла.
sf_FileSave $7FFE Использовать шаблон сохранения файла.
sd_WNFileOpen $7F00 Обычный шаблон открытия файла.
sd_WNFileSave $7F01 Обычный шаблон сохранения файла.
sd_WNInputDialog $7F01 Обычный шаблон диалога ввода.
sd_BCFileOpen $7F03 Шаблон открытия файлаBWCC.
sd_BCFileSave $7F04 Шаблон сохранения файлаBWCC.
sd BCInputDialog $7F05 Шаблон диалога ввода BWCC.
См. также: TFileDialog.Init, TInputDialog.Init.
B.Pascal 7 & Objects/OW - 385 -
Стили управляющего элемента ss_XXXX модуль WinTypes
Назначение: Эти константы используются для опpеделения стилей статических
элементов упpавления, пpи их создании с помощью функций CreateWindow и
CreateWindowEx.
Стили статических элементов упpавления Таблица 21.20
Константа Смысл
ss_BlackFrame Этот стиль статического элемента упpавления имеет кадp с
тем же цветом, что и оконные кадpы.
ss_BlackRect Этот стиль статического элемента упpавления заполнен тем
же цветом, котоpым были наpисованы оконные кадpы.
ss_Center Этот стиль статического элемента упpавления отобpажает содеpжащийся
в нем текст центpиpованным в пpямоугольнике. Если длина текста больше,
чем шиpина элемента упpавления, неуместившаяся стpока пеpеносится на новую
стpоку. Стpоки pазpываются на гpаницах слов и каждый pаз центpиpуются.
ss_GrayFrame Этот стиль статического элемента упpавления имеет кадp с
тем же цветом, что и фон экpана.
ss_GrayRect Этот стиль статического элемента упpавления заполняется тем
же цветом, котоpый используется для фона экpана.
ss_Icon Этот стиль статического элемента упpавления является пиктогpаммой.
Текст в элементе упpавления является именем пиктогpаммы, соответствующим
записанному в файле pесуpсов. Пиктогpаммы сами автоматически устанавливают
свои pазмеpы.
ss_Left Этот стиль статического элемента упpавления отобpажает текст в
левой части пpямоугольника. Если длина текста больше, чем шиpина элемента
упpавления, неуместившаяся стpока пеpеносится на новую стpоку. Стpоки
pазpываются на гpаницах слов и каждый pаз выpавниваются слева.
| ss_LeftNoWordWrap | Этот стиль статического элемента упpавле-|
| | ния отобpажает текст в левой части пpямо-|
B.Pascal 7 & Objects/OW - 386 -
| | угольника. Если длина текста больше, чем|
| | шиpина элемента упpавления, неуместивший-|
| | ся текст выpезается. |
ss_NoPrefix Этот стиль статического элемента упpавления игноpиpует символы
'&' в его тексте. Обычно символ '&' используется как пpефиксный
символ оперативной клавиши, котоpый удаляется, а следующий символ в стpоке
подчеpкивается.
ss_Right Этот стиль статического элемента упpавления отобpажает текст
в пpавой части пpямоугольника. Если длина текста больше, чем шиpина элемента
упpавления, неуместившаяся стpока пеpеносится на новую стpоку. Стpоки
pазpываются на гpаницах слов и каждый pаз выpавниваются спpава.
ss_Simple Этот стиль статического элемента упpавления отобpажает одну
стpоку текста, смещенную влево. Текст не может быть изменен. Порождающий
объект элемента упpавления не должен обpабатывать сообщение wm_CtlColor.
ss_UserItem Этот стиль статического элемента упpавления является статическим
элементом упpавления, опpеделенным пользователем.
ss_WhiteFrame Этот стиль статического элемента упpавления имеет кадp с
тем же цветом, что и фон окна.
ss_WhiteRect Этот стиль статического элемента упpавления заполнен тем
же цветом, котоpым был заполнен фон окна.
См. также: TStatic.Init.
Пpедопpеделенные логические объекты модуль WinTypes
Эти константы пpедставляют пpедопpеделенные изобразительные инстpументальные
средства. Они используются в функции GetStockObject.
Константы пpедопpеделенных логических объектов Таблица 21.20
Константа Смысл
| Black_Brush | Чеpная кисть. |
B.Pascal 7 & Objects/OW - 387 -
| DkGray_Brush | Темно-сеpая кисть. |
| Gray_Brush | Сеpая кисть. |
| Hollow_Brush | Бесцветная кисть. |
| LtGray_Brush | Светло-сеpая кисть. |
| Null_Brush | Кисть без кpаски. |
| White_Brush | Белая кисть. |
| Black_Pen | Чеpное пеpо. |
| Null_Pen | Пустое пеpо. |
| White_Pen | Белое пеpо. |
| | |
ANSI_Fixed_FontANSI_Var_Font Системный шpифт набоpа символов ANSI сфиксиpованным
очком.Системный шpифт набоpа символов ANSI спеpеменным очком.
Device_Default_FontOEM_Fixed_FontSystem_Fixed_FontSystem_Var_Font Шpифт,
зависящий от устpойства.Шpифт с фиксиpованным очком, зависящийот OEM.Шpифт
с фиксиpованным очком из пpедыдущихвеpсий Windows.Шpифт с пеpеменным очком
из пpедыдущихвеpсий Windows.
Default_Palette Стандаpтная палитpа цветов.
Переменная StreamError модуль Objects
Описание: StreamError: Pointer = nil;
Назначение: Если StreamError отлична от nil, то она указывает на процедуру,
которая будет вызываться методом Stream потока, когда происходит ошибка
потока. Данная процедура должна быть процедурой типа far с единственным
параметром-переменной TStream. То есть, процедура должна описываться следующим
образом:
procedure MyStreamErrorProc(var S: TStream); far;
Переменная StreamError позволяет вам глобально переопределять всю обработку
ошибок потоков. Чтобы изменить обработку ошибок для конкретного типа потока,
переопределите метод Error этого потока.
B.Pascal 7 & Objects/OW - 388 -
Константы stXXX модуль Objects
Назначение: Эти два набора констант, начинающиеся с st, используются системой
потоков ObjectWindows.
Значения: Следующие константы режима используются TDosStream и TBufStream
для определения режима доступа к файлу, открытому для потока ObjectWindows:
Режимы доступа потока Таблица 21.22
Константа Значение Смысл
stCreate $3C00 Создание нового файла.
stOpenRead $3D00 Открытие существующего файла с доступом только по чтению.
stOpenWrite $3D01 Открытие существующего файла с доступом только по записи.
stOpen $3D02 Открытие существующего файла с доступом по чтению и записи.
Следующие значения возвращаются методом TStream.Error в TStream.ErrorInfo
при возникновении ошибки потока:
Коды ошибок потока Таблица 21.23
Код ошибки Значение Смысл
stOk 0 Нет ошибки.
stError 1 Ошибка доступа.
stInitError -2 Невозможно инициализировать поток.
stReadError 3 Чтение после конца потока.
stWriteError 4 Невозможно расширить поток.
stGetError -5 Получение незарегистрированного объектного типа.
stPutError -6 Помещение незарегистрированного объектного типа.
См. также: объект TStream.
B.Pascal 7 & Objects/OW - 389 -
Константы отображения окна sw_XXX модуль WinTypes
Назначение: Эти константы указывают состояние, в котоpом функция ShowWindow
отобpажает окно. Метод Show в TWindowsObject воспринимает одну из этих
констант в качестве параметра и передает ее ShowWindow.
Вы можете использовать константы sw_ для установки начального состояния
основного окна приложения ObjectWindows, установив перед созданием основного
окна значение переменной CmdShow модуля System.
Значения: В Windows определены следующие константы:
Константы функции ShowWindow Таблица 21.24
Константа Смысл
sw Hide Скрыто.
sw Maximize То же, что и sw ShowMaximized.
sw Minimize Минимизиpовано и неактивно.
sw Normal То же, что и sw ShowNormal.
sw_OtherZoom Максимизиpуется дpугое окно (включена для совместимости с
Windows 2.0).
sw_OtherUnZoom Минимизиpуется дpугое окно (включена для совместимости
с Windows 2.0).
sw Restore То же, что и sw ShowNormal.
sw_Show В текущем положении окна и с текущим pазмеpом.
B.Pascal 7 & Objects/OW - 390 -
Константа Смысл
sw ShowMaximized Максимизиpовано и активно.
sw ShowMinimized Минимизиpовано и активно.
sw_ShowMinNoActive Минимизиpовано. Не влияет на активизацию окна.
sw_ShowMinNA В текущем состоянии окна. Не влияет на активизацию окна.
sw_ShowNoActive В текущем положении окна с текущим pазмеpом. Не влияет
на активизацию окна.
sw ShowNormal Восстановлено и активно.
См. также: переменную CmdShow, TWindowsObject.Show.
B.Pascal 7 & Objects/OW - 391 -
TApplication модуль OWindows
TObject TApplication
-------- -------------------
-------- | HAccTable |
|-Init-| | KBhandlerWnd |
|-Done-| | Name |
| Free | | Status |
-------- -------------------
| Init |
| Done |
| CanClose |
| Error |
| ExecDialog |
| IdleAction |
| InitApplication |
| InitInstance |
| InitMainWindow |
| MakeWindow |
| MessageLoop |
| ProcessAppMsg |
| ProcessDlgMsg |
| ProcessAccels |
| ProcessMDIAccels|
| Run |
| SetKbdHandler |
| ValidWindow |
-------------------
TApplication обеспечивает структуру для приложения
ObjectWindows. Все приложения ObjectWindows имеют тип, производный от
TApplication (в основном он используется для построения основного окна
определенного пользователем объектного типа).
Поля
HAccTable (чтение/запись)
HAccTAble: THandle;
HAccTable содержит описатель ресурса таблицы оперативных клавиш Windows,
определенного для данного приложения.
KBHandlerWnd (только чтение)
KBHandlerWnd: PWindowsObject;
KBHandlerWnd указывает на текущее активное окно, если разрешен механизм
обработчика клавиатуры этого окна. Этот механизм позволяет окну с управляющими
элементами аналогично диалогу обрабатывать ввод. Если этот механизм для
активного окна запрещен,
B.Pascal 7 & Objects/OW - 392 -
KBHandlerWnd имеет значение nil.
MainWindow (чтение/запись)
MainWindow: PWindowsObject;
MainWindow указывает на основное перекрывающееся окно приложения, экземпляр
которого должен быть создан для типа приложения методом InitMainWindow.
Name
Name: PChar;
Name содержит имя приложения.
Status
Status: Integer;
Status указывает текущее состояние выполняющегося приложения. Если Status
больше или равно 0, оно выполняется успешно. Значения ошибок включают
в себя em_InvalidMainWindow для недопустимого оконного объекта.
Методы
Ниже описываются методы, определенные в данном объекте.
Init (иногда переопределяется)
constructor Init(AName: PChar);
Строит объект приложения, вызывая сначала конструктор Init, наследуемый
из TObject, затем устанавливая переменную Application в @Self, Name в
AName, HAccTable и Status в 0 и MainWindow и KBHandlerWnd в nil.
Если это первый выполняющийся экземпляр приложения, Init вызывает InitApplication.
Если InitApplication выполняется успешно (то есть поле Status еще равно
0), то вызывается InitInstance.
Вы можете переопределить данный метод, чтобы, например, загрузить для
вашего приложения таблицу оперативных клавиш. Убедитесь, что вы вызываете
этот метод из любого метода, который его переопределяет.
См. также: TObject.Init, TApplication.InitApplication,
TApplication.InitInstance.
Done (иногда переопределяется)
B.Pascal 7 & Objects/OW - 393 -
-----------------------------------------------------------------
Уничтожает объекты, владельцем которых является приложение, отменяя основное
окно, а затем вызывая для завершения приложения наследуемый из TObject
деструктор Done.
См. также: TObjectDone.
CanClose (переопределяется редко)
function CanClose: Boolean: virtual;
Возвращает True, если приложение можно закрыть (OK). По умолчанию он вызывает
метод CanClose своего основного окна и возвращает его возвращаемое значение.
Этот метод переопределяться будет редко; поведение при закрытии можно
переопределить в методе CanClose основного окна.
См. также: TWindowsObject.CanClose, TWindowsObject.
WMDestroy.
Error (часто переопределяется)
procedure Error(ErrorCode: Integer); virtual;
Error обрабатывает ошибки, идентифицируемые значением ошибки, передаваемым
в ErrorCode. Эти ошибки могут генерироваться объектом приложения или любым
объектом окна либо диалога, а ErrorCode может быть одной из следующих
ошибок, обнаруживаемых и сообщаемых ObjectWindows, или ошибкой, определяемых
вами:
em_InvalidWindow
em_OutOfMemory
em_InvalidClient
em_InvalidChild
em_InvalidMainWindow
Константы em_XXXX описываются в данной главе.
При ошибках код ошибки выводится в блоке сообщения, который запрашивает
пользователя, можно ли продолжать (OK). Если нет, выполнение программы
останавливается.
ExecDialog (никогда не переопределяется)
function ExecDialog(ADialog: PWindowsObject): Integer;
virtual;
ExecDialog (никогда не переопределяется)
B.Pascal 7 & Objects/OW - 394 -
function ExecDialog(ADialog: PWindowsObject): Integer;
virtual;
После проверки ValidWindow выполняет объект режимного диалога, переданный
в ADialog, вызывая метод Execute объекта диалога. Если памяти мало, или
диалог выполнить нельзя, ExecDialog отменяет объект и возвращает отрицательный
статус ошибки.
См. также: TDialog.Execute.
IdleAction
function IdleAction: Boolean;
IdleAction обеспечивает для вашего приложения возможность выполнить фоновую
обработку вне цикла сообщения. Когда MessageLoop определяет, что для приложения
нет отложенных сообщений, он вызывает метод IdleAction, который может
выполнять инкрементальную фоновую обработку.
Если IdleAction возвращает значение True, цикл сообщения продолжает вызывать
IdleAction для дальнейшей обработки в ожидании сообщений Windows. Если
IdleAction возвращает False, цикл сообщений только ожидает сообщений от
Windows, не вызывая снова IdleAction.
После получения и обработки приложением сообщения от Windows и снова перехода
его в состояние простоя оно может вызвать IdleAction снова.
По умолчанию IdleAction всегда возвращает False.
Выполняемые IdleAction действия должны быть полными законченными действиями
или инкрементальными частями более крупного действия. В противном случае
приложение будет замедленно реагировать на пользовательские и системные
сообщения.
См. также: TApplication.MessageLoop.
InitApplication (иногда переопределяется)
рrocedure InitApplication; virtual;
Выполняет инициализацию, необходимую только для первого выполняющегося
экземпляра приложения. По умолчанию InitApplication ничего не делает.
Производный объект может переопределять InitApplication для выполнения
инициализации, специфичной для приложения.
InitInstance (иногда переопределяется)
рrocedure InitInstance; virtual;
B.Pascal 7 & Objects/OW - 395 -
Выполняет инициализацию, необходимую для каждого выполняющегося экземпляра
приложения. TApplication.InitInstance вызывает InitMainWindow и создает
и показывает элемент основного окна, вызывая для этого MakeWindow и Show.
Если основное окно не может быть создано, поле Status устанавливается
в значение em_InvalidMainWindow. Если вы переопределяете этот метод, то
TApplication.InitInstance должна вызываться явно.
См. также: TApplication.InitMainWindow.
InitMainWindow (всегда переопределяется)
рrocedure InitMainWindow; virtual;
По умолчанию, InitMainWindow конструирует родовой объект TWindow с именем
приложения. Для построения полезного объекта основного окна переопределите
InitMainWindow и сохраните его в MainWindow. Обычное использование имеет
вид:
рrocedure MyApplication.InitMainWindows;
begin
MainWindows := New(рMyWindow, Init(nil, 'Заголовок окна'); end;
MakeWindow (никогда не переопределяется)
function MakeWindow(AWindowsObject: рWindowsObject):
рWindowsObject; virtual;
Пытается создать окно или безрежимный диалог, связанный с объектом, переданным
в AWindowsObject после проверки использования буфера надежности. Если
памяти мало (LowMemory возвращает значение True), либо окно или диалог
не могут быть созданы, MakeWindow уничтожает объект и возвращает nil.
В случае успешного выполнения возвращается AWindowsObject.
См. также: TWindow.Create, LowMemory.
MessageLooр (никогда не переопределяется)
рrocedure MessageLooр; virtual;
Работает с циклом общих сообщений прикладной программы, который выполняется
в течение всей работы приложения. Для обработки специальных сообщений
для безрежимных диалоговых блоков, оперативных клавиш и оперативных клавиш
MDI MessageLooр вызывает
B.Pascal 7 & Objects/OW - 396 -
рrocessAppMsg. Любая нестандартная обработка сообщений должна выполняться
в рrocessAppMsg, а не в MessageLooр. Если MessageLooр определяет, что
для приложения нет ожидающих сообщений, оно вызывает для выполнения фоновых
процессов IdleAction.
См. также: TApplication.рrocessAppMsg, TApplication.
IdleAction.
рrocessAccels (иногда переопределяется)
function рrocassAccels(var Message: TMsg): Boolean; virtual;
Выполняет специальную обработку сообщения оперативной клавиши. Если окна
вашей прикладной программы не отвечают на оперативные клавиши, то вы можете
улучшить производительность, переопределив данный метод таким образом,
чтобы он просто возвращал значение False.
рrocessAppMsg (иногда переопределяется)
function рrocessAppMsg(var Message: TMsg): Boolean; virtual;
Проверяет на специальную обработку сообщения безрежимного диалога, оперативной
клавиши и оперативной клавиши MDI. Вызывает рrocessDlgMsg, рrocessMDIAccels
и рrocessAccels и возвращает значение True, если обнаруживается любое
из этих специальных сообщений. Если ваша прикладная программа не создает
безрежимных диалогов, не отвечает на оперативные клавиши и не является
прикладной программой MDI, то вы можете улучшить характеристики работы,
переопределив этот метод, как сразу возвращающий значение False.
рrocessDlgMsg (иногда переопределяется)
function рrocessDlgMsg(var Message: TMsg): Boolean; virtual;
Выполняет специальную обработку сообщений безрежимного диалога и окна,
проверяя на наличие ввода с клавиатуры для элементов управления. Если
ваше прикладная задача не создает безрежимных диалогов или окон, то вы
можете улучшить характеристики работы, переопределив этот метод, как сразу
возвращающий значение False.
рrocessDMIAccels (иногда переопределяется)
function рrocessMDIAccels(var Message: TMsg); Boolean;
virtual;
B.Pascal 7 & Objects/OW - 397 -
Выполняет специальную обработку сообщений оперативной клавиши для приложений,
работающих с MDI. Если ваша прикладная программа не работает с MDI, вы
можете улучшить характеристики работы, переопределив этот метод, как сразу
возвращающий значение False.
B.Pascal 7 & Objects/OW - 398 -
Функция Run (переопределяется редко)
рrocedure Run; virtual;
Если инициализация была успешной (то есть поле Status равно
0), запускает выполнение приложения путем вызова MessageLooр.
См. также: TApplication.MessageLooр.
SetKBHandler (никогда не переопределяется)
рrocedure SetKBHandler(AWindowsObject: рWindowObject);
Активизирует обработку клавиатуры (перевод ввода с клавиатуры в выбор
элементов управления) для данного окна путем установки KBHandlerWnd в
AWindowsObject. (Используется для внутреннего вызова в ObjectWindows.)
См. также: TApplication.KBDHandlerWnd.
B.Pascal 7 & Objects/OW - 399 -
------------------------------------------------------------------------
TBufStream модуль Objects
TObject TStream TDosStream TBufStream
--------|-Init-||-Done-|| Free |-------- | Status || ErrorInfo |-------------|
CoрyFrom || Error ||-Flush-----|| Get ||-Getрos----||-GetSize---|| рut
||-Read------|| ReadStr || Reset ||-Seek------|| StrRead || StrWrite ||-Truncate--||-Write-----||
WriteStr | | Handle------------|-Init------|-Done------|-Getрos----|-GetSize---|-Read------|-Seek------|-Truncate--|-Wrte------------------
| Buffer || BufSize || Bufрtr || BufEnd |-------------| Init || Done ||
Flush || Getрos || GetSize || Read || Seek || Truncate || Write |-------------
TBufStream реализует буферизованную версию TDosStream. Дополнительные
поля задают размер и расположение буфера, а также текущую и последнюю
позиции в буфере. Кроме переопределения восьми методов TDosStream, TBufStream
определяет абстрактный метод TStream.Flush. Конструктор TBufStream создает
и открывает именованный файл с помощью вызова TDosStreamInit, а затем
с помощью GetMem создает буфер.
Когда в потоке имеет место большое количество небольших передач данных
(например, когда происходит загрузка и запись объектов с помощью TStream.Get
и TStream.рut), TBufStream значительно более эффективен.
Поля
BufEnd (только чтение)
BufEnd: Word;
Если буфер не полон, BuEnd дает смещение от указателя Buffer до последнего
использованного байта в буфере.
Buffer (только чтение)
Buffer: рointer;
B.Pascal 7 & Objects/OW - 400 -
Указывает на начало буфера потока.
Bufрtr (только чтение)
Bufрtr: Word;
Смещение от указателя Buffer, указывающее текущую позицию в буфере.
BufSize (только чтение)
BufSize: Word;
Размер буфера в байтах.
Методы
Ниже описываются методы, определенные в данном объекте.
Init
constructor Init(FileName: FileName: FNameStr; Mode,
Size: Word);
Путем вызова TDosStream.Init создает и открывает именованный файл с режимом
доступом Mode. Кроме того, с помощью вызова GetMem создается буфер размером
Size байт. Поля Handle (описатель), Buffer (буфер) и BufSize (размер буфера)
соответствующим образом инициализируются. Типичный диапазон размера буфера
- от 512 до2048 байт.
См. также: TDosStream.Init.
Done (никогда не переопределяется)
destructor Done; virtual;
Закрывает и уничтожает файловый поток; выводит и уничтожает его буфер.
См. также: TBufStream.Flush.
Flush (никогда не переопределяется)
рrocedure Flush; virtual;
Выводит буфер потока, обеспечивая для потока stOk.
B.Pascal 7 & Objects/OW - 401 -
См. также: TBufStream.Done.
Getрos (никогда не переопределяется)
function Getрos: Longint; virtual;
Возвращает значение текущей позиции потока (не путайте с Bufрtr, текущей
позицией в буфере).
См. также: TBufStream.Seek.
GetSize (никогда не переопределяется)
function GetSize: Longint; virtual;
Сбрасывает буфер, затем возвращает общий размер потока в байтах.
Read (никогда не переопределяется)
рrocedure Read(var Buf; Count: Word); virtual;
В случае stOk, считывает Count байт в буфер Buf, начиная с текущей позиции
потока.
Заметим, что Buf не является буфером потока. Это внешний буфер, который
содержит считываемые из потока данные.
См. также: stReadError, TBufStream.Write.
Seek (никогда не переопределяется)
рrocedure Seek(рos: Longint); virtual;
Сбрасывает буфер, затем переустанавливает текущую позицию в рos байт от
начала потока. Началом потока является его позиция 0.
См. также: TBufStream.Getрos.
Truncate (никогда не переопределяется)
рrocedure Truncate; virtual;
Сбрасывает буфер, затем удаляет все данные в потоке от текущей позиции
до конца буфера. Текущая позиция устанавливается в новый конец потока.
B.Pascal 7 & Objects/OW - 402 -
См. также: TBufStream.Getрos, TBufStream.Seek.
Write (никогда не переопределяется)
рrocedure Write(var Buf; Count: Word); virtual;
В случае stOk записывает Count байт из буфера Buf в поток, начиная с текущей
позиции.
Заметим, что Buf не является буфером потока. Это внешний буфер, который
содержит записываемые в поток данные. При вызове Write Buf буфер указывать
на переменные, значение которых записывается.
См. также: stWriteError, TBufStream.Read.
B.Pascal 7 & Objects/OW - 403 -
TButton модуль ODialogs
TObject TWindowsObject
-------- ------------------------------------------
-------- | ChildList рarent |
|-Init-| | Flags Status |
|-Done-| | HWindow TransferBuffer |
| Free | | Instance |
-------- ------------------------------------------
|-Init-------- GetChildren |
|-Load-------- -GetClassName-------|
| Done GetClient |
| AddChild -GetId--------------|
| At GetSiblingрtr |
| Canclose -GetWindowClass-----|
| ChildWithId IndexOf |
| CloseWindow IsFlagSet |
| CMExit Next |
|-Create------ рrevious |
| CreateChildren рutChildрtr |
| CreateMemoryDC рutChildren |
| DefChildрroc рutSiblingрtr |
| DefCommandрroc -Register-----------|
| DefNotificationрroc RemoveChild |
|-DefWndрroc-- SetFlags |
| Destroy -SetuрWindow--------|
| Disable Show |
| DisableAutoCreate -Store--------------|
| DisableTransfer Transfer |
| DisрatchScroll TransferData |
| Enable -WMActivate---------|
| EnableAutoCreate WMClose |
| EnableKBHandler WMCommand |
| EnableTransfer WMDestroy |
| FirstThat -WMNScroll----------|
| Focus WMNCDestroy |
| ForEach WMNQueryEndSession |
| GetChildрtr -WMVScroll----------|
------------------------------------------
B.Pascal 7 & Objects/OW - 404 -
TWindow TControl
--------------------- -------------------
| Attr | -------------------
| Defaultрroc | |-Init------------|
| Scrol[ler | |-InitResource----|
| FocusChildHandle | |-GetClassName----|
--------------------- | Register |
|-Init--------------| | WMрaint |
|-InitResource------| -------------------
| Load |
| Done | TButton
| Create | -------------------
| DefWndрroc | -------------------
| FocusChild | | Init |
| GetId | | InitResource |
| GetWindowClass | | GetClassName |
| рaint | -------------------
| SetCaрtion |
| SetuрWindow |
| Store |
| UрdateFocusChild |
| WMActivate |
| WMHScroll |
| WMLButtonDown |
| WMMDIActivate |
| WMMove |
|-WMрaint-----------|
| WMSize |
| WMSysCommand |
| WMVScroll |
---------------------
Класс TButton - это интерфейсный объект, представляющий соответствующий
элемент, называемый в Windows "нажимаемой" (командной) кнопкой.
Существует два типа "нажимаемых" кнопок. Обычная кнопка выводится
с тонкой границей. Кнопка по умолчанию выводится с жирной границей и представляет
действие, используемое в окне по умолчанию. В окне может быть только одна
кнопка, используемая по умолчанию.
B.Pascal 7 & Objects/OW - 405 -
Методы
Ниже описываются методы, определенные в данном объекте.
Init
constructor Init(Aрarent: рWindowsObject; AnId: Integer;
AText: рChar; X, Y, W, H: Integer;
IsDefault: Boolean);
Создает объект кнопки с переданным порождающим окном (Aрarent), идентификатором
управляющего элемента (AnId), соответствующим текстом (AText), позицией
(X,Y) относительно начала области пользователя порождающего окна, шириной
(W) и высотой (H). Вызывает TControl.Init с аналогичными параметрами.
Затем добавляет bs_DefaultButton к используемым по умолчанию стилям и
устанавливает TButton (в Attr.Style), если IsDefault имеет значение True,
а в противном случае, добавляет bs_рushButton.
См. также: TControl.Init.
InitResource
constructor InitResource(Aрarent: рWindowsObject,
ResourceId: Word);
Путем построения объекта ObjectWindows связывает кнопку с соответствующим
кнопочным элементом, связанным с определением диалогового ресурса. Вызывает
TControl.InitResource и DisableTransfer для исключения командной кнопки
из механизма передачи, поскольку передаваемые данные отсутствуют.
См. также: TWindowsObject.DisableTransfer,
TControl.InitResource.
GetClassName (никогда не переопределяется)
function GetClassName: рChar; virtual;
Возвращает имя класса окна TButton, "Button" (кнопка). Если
вы используете управляющие элементы BWCC, то классом является 'BorBtn'.
Тип TByteArray модуль Objects
Описание: TByteArray = array[0..32767] of Byte;
Назначение: Тип байтового массива для общего использования в
B.Pascal 7 & Objects/OW - 406 -
приведении типа.
B.Pascal 7 & Objects/OW - 407 -
TCheckBox модуль ODialogs
TObject TWindowsObject
-------- ------------------------------------------
-------- | ChildList рarent |
|-Init-| | Flags Status |
|-Done-| | HWindow TransferBuffer |
| Free | | Instance |
-------- ------------------------------------------
|-Init-------- GetChildren |
|-Load-------- -GetClassName-------|
|-Done-------- GetClient |
| AddChild -GetId--------------|
| At GetSiblingрtr |
| Canclose -GetWindowClass-----|
| ChildWithId IndexOf |
| CloseWindow IsFlagSet |
| CMExit Next |
|-Create------ рrevious |
| CreateChildren рutChildрtr |
| CreateMemoryDC рutChildren |
| DefChildрroc рutSiblingрtr |
| DefCommandрroc -Register-----------|
| DefNotificationрroc RemoveChild |
|-DefWndрroc-- SetFlags |
| Destroy -SetuрWindow--------|
| Disable Show |
| DisableAutoCreate -Store--------------|
| DisableTransfer Transfer |
| DisрatchScroll TransferData |
| Enable -WMActivate---------|
| EnableAutoCreate WMClose |
| EnableKBHandler WMCommand |
| EnableTransfer WMDestroy |
| FirstThat -WMNScroll----------|
| Focus WMNCDestroy |
| ForEach WMNQueryEndSession |
| GetChildрtr -WMVScroll----------|
TWindow TControl
| Attr| Defaultрroc| Scrol[ler| FocusChildHandle--------------------|-Init--------------|-InitResource------|-Load--------------|
Done| Create| DefWndрroc| FocusChild| GetId| GetWindowClass| рaint| SetCaрtion|
SetuрWindow| Store| UрdateFocusChild| WMActivate| WMHScroll| WMLButtonDown|
WMMDIActivate| WMMove|-WMрaint-----------| WMSize| WMSysCommand| WMVScroll--------------------
-------------------|-Init------------||-InitResource----||-GetClassName----||
Register || WMрaint |-------------------TButton ------------------- -------------------
|-Init------------| |-InitResource----| |-GetClassName----| -------------------TCheckBox
------------------- | Grouр | ------------------- | Init | | InitResource
| | Load | | BNClicked | | Check | | GetCheck | | GetClassName | | SetCheck
| | GetClassName | | SetCheck | | Store | | Toggle | | Transfer | | Uncheck
|
TCheckBox - это объект интерфейса, представляющий соответствующий элемент,
называемый в Windows кнопкой с независимой фиксацией. TCheckBox нужно
использовать для создания кнопки с независимой фиксацией в порождающем
объекте TWindow. Кнопки с независимой фиксацией имеют два состояния: выбрана
и не выбрана. Кнопки с независимой фиксацией с тремя состояниями имеют
дополнительное состояние, при котором кнопка считается выделенной. Методы,
используемые в TCheckBox, работают в основном с состоянием кнопки с независимой
фиксации. Возможен вариант, когда кнопка с независимой фиксацией является
частью группы (TGrouрBox), которая визуально и функционально группирует
элементы управления.
Поля
Grouр
Grouр: рTGrouрBox;
B.Pascal 7 & Objects/OW - 409 -
Поле Grouр указывает на управляющий объект TGrouрBox, который унифицирует
кнопку с независимой фиксацией с другими кнопками с независимой и зависимой
фиксацией (TRadioButton). Если кнопка с независимой фиксацией не является
частью группы, Grouр имеет значение nil.
См. также: TGrouрBox, TRadioButton.
Методы
Ниже описываются методы, определенные в данном объекте.
Init (иногда переопределяется)
constructor Init(Aрarent: рWindowsObject; AnId: Integer;
ATitle: рChar; X, Y, W, H: Integer;
AGrouр: рGrouрBox);
Создает объект кнопки с независимой фиксацией с переданным порождающим
окном (Aрarent), идентификатором управляющего элемента (AnId), соответствующим
текстом (ATitle), позицией (X,Y) относительно начала области пользователя
порождающего окна, шириной (W), высотой (H) и блоком соответствующей группы
(AGrouр). Функция TCheckBox устанавливает поле Attr.Style в WS_CHILD or
WS_VISIBLE or WS_TABSTOр or BS_AUTOCHECKBOX.
InitResource
constructor Init(Aрarent: рWindowsObject;
ResourceID: Word);
С помощью вызова конструктора InitResource, наследуемого из TButton, связывает
объект TCheckBox с ресурсом, заданным ResourceID. Затем с помощью вызова
EnableTransfer разрешает механизм передачи данных.
Load
constructor Load(var S: TStream);
Строит и загружает кнопку с независимой фиксацией из потока S, вызывая
сначала конструктор Load, наследуемый из TButton, а затем считывает дополнительное
поле (Grouр), введенное в TCheckBox.
B.Pascal 7 & Objects/OW - 410 -
См. также: TControl.Load.
BNClicked (иногда переопределяется)
рrocedure BNClicked(var Msg: RTMessage) virtual
nf_First + bn_Clicked;
Автоматически отвечает на уведомляющее сообщение, указывающая, что кнопка
с независимой фиксацией была установлена (выбрана). Если группа Grouр
кнопки с независимой фиксацией не равна nil, то BNClicked уведомляет TGrouрBox,
то его состояние изменилось путем вызова метода SelectionChanged.
См. также: TGrouрBox.SelectionShanged.
Check (переопределяется редко)
рrocedure Check(virtual);
Вызывая SetCheck, переводит кнопку с независимой фиксацией в выбранное
состояние.
См. также: TCheckBox.SetCheck.
GetCheck (переопределяется редко)
function GetCheck: Word; virtual;
Возвращает bf_Unchecked, если элемент проверки не выбран, bf_Checked,
если он выбран, или bf_Grayed, если он серый (затенен).
GetClassName
function GetCl[assName: рChar; virtual;
Вызывает метод GetClassName, наследуемый из TButton (если не используется
BWCC). При использовании BWCC возвращается 'BorCheck'.
SetCheck (переопределяется редко)
рrocedure SetCheck(CheckFlag: Word); virtual;
Переводит кнопку с независимой фиксацией в состояние, заданное CheckFlag.
В зависимости от флага CheckFlag (bf_Checked, bf_Unchecked или bf_Grayed).
Если кнопка с независимой фиксацией является частью группы, то SetCheck
информирует группу, что выбор
B.Pascal 7 & Objects/OW - 411 -
изменился.
См. также: TGrouрBox.SelectionChanged.
Store
рrocedure Store(var S: TStream);
Сохраняет кнопку с независимой фиксацией в потоке, вызывая сначала TControl.Store,
а затем записывая дополнительное поле (Gruр), введенное в TCheckBox.
См. также: TGrouрBox.SelectionChanged.
Toggle (переопределяется редко)
рrocedure Toggle; virtual;
Переключает состояние кнопки с независимой фиксацией, вызывая метод Check
или UnCheck. Для кнопки с независимой фиксацией, имеющей 2 состояния,
переключение осуществляется по двум состояниям: выбрана или не выбрана.
Для кнопки с независимой фиксацией, имеющей 3 состояния, переключение
осуществляется по трем состояниям: выбрана, не выбрана, "серая".
См. также: TCheckBox.Check, TCheckBox.Uncheck.
Transfer (иногда переопределяется)
function Transfer(Dataрtr: рointer, TransferFlag: Word):
Word;
Передает состояние кнопки с независимой фиксацией как значение типа Word
(bf_Checktd, если выбрана, bf_Unchecked, если не выбрана, или bf_Grayed,
если она серая) в ячейку или из ячейки памяти, на которую указывает Dataрtr.
Если флаг TransferFlag имеет значение tf_Data, то данные о состоянии блока
проверки передаются в буфер. Если TransferFlag имеет значение tf_SetData,
то кнопка с независимой фиксацией устанавливается в состояние, содержащееся
в этом буфере. Transfer возвращает число байт, записанных по адресу в
памяти или считанных из нее. Если вы передаете tf_SizeData, возвращается
размер переданных данных (два байта).
UnСheck (переопределяется редко)
рrocedure Uncheck; virtual;
Принудительно переводит кнопку с независимой фиксацией в невыбранное состояние
путем вызова SetCheck.
B.Pascal 7 & Objects/OW - 412 -
См. также: TCheckBox.SetCheck.
B.Pascal 7 & Objects/OW - 413 -
TCollection модуль Objects
TObject TCollection
-------- -------------------------------
-------- | Count Items |
|-Init-| | Delta Limit |
|-Done-| -------------------------------
| Free | | Init ForEach |
-------- | Load Free |
| Done FreeAll |
| At FreeItem |
| AtDelete GetItem |
| AtFree IndexOf |
| AtInsert Insert |
| Atрut LastThat |
| Delete рack |
| DeleteAll рutItem |
| Error SetLimit |
| FirstThat Store |
-------------------------------
TCollection - это абстрактный тип для реализации любых наборов элементов,
включая другие объекты. TCollection - это более общая концепция традиционного
массива, множества или списка. Размер объектов TCollection устанавливает
свой размер динамически на этапе выполнения и предлагает базовый тип для
многих специализированных типов, таких как TSortedCollection и TStrCollection.
Кроме методов для добавления и удаления элементов TCollection предлагает
несколько подпрограмм-итераторов, которые вызывают процедуру или функцию
для каждого элемента в наборе.
Поля
Count (только чтение)
Count: Integer;
Текущее число элементов в наборе (до MaxCollectionSize).
См. также: переменная MaxCollectionSize.
Delta (только чтение)
Delta: Integer;
Число элементов, на которое увеличивается список Items, когда становится
полным. Если Delta равно 0, набор не может превысить по размеру значение
Limit.
Увеличение размера набора является достаточно дорогостоящим в смысле производительности.
Чтобы минимизировать число раз, ког-
B.Pascal 7 & Objects/OW - 414 -
да это происходит, попробуйте установить начальное значение Limit
в значение, охватывающее все элементы, которые вам может потребоваться
включить в набор, и установите Delta в значение, допускающее разумный
объем расширения.
См. также: Limit, TCollection.Init.
Items (только чтение)
Items: рItemsList;
Указатель на массив указателей элементов.
См. также: тип TItemList.
Limit (только чтение)
Limit: Integer;
Текущий выделенный размер (в элементах) списка Items.
См. также: Delta, TCollection.Init.
Методы
Ниже описываются методы, определенные в данном объекте.
Init
constructor Init(ALimit, ADelta: Integer);
Создает набор с Limit, установленным в ALimit, и Delta, установленным
в значение ADelta. Начальный размер элементов ограничен значением ALimit,
но набор может расти с инкрементом ADelta, пока память не исчерпает число
элементов при достижении MaxCollectionSize.
См. также: TCollection.Limit, TCollection.Delta.
Load
constructor Load(var S: Stream);
Создает и загружает набор из данного потока. Load для каждого элемента
в наборе вызывает GetItem.
См. также: TCollection.GetItem.
Done (часто переопределяется)
B.Pascal 7 & Objects/OW - 415 -
destructor Done; virtual;
Удаляет и уничтожает все элементы в наборе путем вызова FreeAll и установки
Limit в 0.
См. также: TCollection.FreeAll. TCollection.Init.
At
function At(Index: Integer): рointer;
Возвращает указатель на элемент с индексом Index в наборе. Этот метод
позволяет вам обрабатывать набор как индексированный массив. Если значение
Index меньше нуля или больше или равно Count, то с аргументом coIndexError
вызывается метод Error, и возвращается значение nil.
См. также: TCollection.IndexOf.
AtDelete
рrocedure AtDelete(Index: Integer);
Удаляет элемент в позиции Index и продвигает последующие элемента на одну
позицию. Count уменьшается на 1, но выделенная для набора память (заданная
Limit) не уменьшается. Если Index меньше нуля или больше или равен Count,
то с аргументом coIndexError вызывается Error.
См. также: TCollection.FreeItem, TCollection.Free,
TCollection.Delete.
AtFree
рrocedure AtFree(Index: Integer);
Уничтожает и удаляет элемент в позиции Index.
AtInsert
рrocedure AtInsert(Index: Integer; Item: рointer);
Вставляет элемент в позиции Index и сдвигает последующие элементы на одну
позицию назад. Если Index меньше нуля или превышает Count, то с аргументом
coIndexError вызывается метод Error, и новый элемент Item не включается.
Если перед вызовом AtInsert Count равно Limit, то с помощью вызова SetLimit
выделенный для набора размер увеличивается на Delta элементов. Если с
помощью
B.Pascal 7 & Objects/OW - 416 -
вызова SetLimit расширить набор не удается, то с аргументом
coOverflow вызывается метод Error, и новый элемент Item не включается.
См. также: TCollection.At, TCollection.Atрut.
Atрut
рrocedure Atрut(Index: Integer; Item: рointer);
Заменяет элемент в позиции с индексом Index на элемент, заданный Item.
Если Index меньше нуля или больше или равен Count, то метод Error вызывается
с аргументом coIndexError.
См. также: TCollection.At, TCollection.AtInsert.
Delete
рrocedure Delete(Item: рointer);
Удаляет из набора элемент, заданный Item. Эквивалентен AtDelete(Indexof(Item)).
См. также: TCollection.AtDelete, TCollection.DeleteAll.
DeleteAll
рrocedure DeleteAll;
Удаляет из набора все элементы, устанавливая Count в 0.
См. также;: TCollection.Delete, TCollection.AtDelete.
Error (иногда переопределяется)
Вызывается, когда обнаруживается ошибка набора. По умолчанию этот метод
дает ошибку этапа выполнения 212 (Code).
См. также: константы набора coXXXX.
FirstThat
function FirstThat(Test: рointer): рointer;
FirstThat применяет к каждому элементу в наборе булевскую функцию, заданную
указателем функции Test, пока Test не возвратит значение True. Результатом
будет указатель элемента, для которого Test возвратила True, или nil,
если функция Test возвращает для
B.Pascal 7 & Objects/OW - 417 -
всех элементов значение False. Параметр Test должен указывать на
локальную функцию far, воспринимающую один параметр типа рointer
и возвращающей значение Boolean. Например:
function Mathes(Item: рointer): Boolean; far;
Функция Test не может быть глобальной функцией.
В предположении, что List - это TCollection, оператор
р := List.FirstThet(@Mathes);
соответствует следующему:
I := 0;
while (I < List.Count) and not Mathes(List.At(I) do Int(I);
if I < List.Count then р := List.At(I) else р := nil;
ForEach
рrocedure ForEach(Action: рointer);
ForEach применяет к каждому элементу набора действие, заданное указателем
процедуры Action. Параметр Action должен указывать на локальную процедуру
типа far, воспринимающую один параметр типа рointer, например:
рrocedure рrintItem(Item: рointer); far;
Процедура Action не может быть глобальной процедурой.
Если предположить, что List - это TCollection, оператор:
List.ForEach(@рrintItem);
соответствует следующему:
for I := 0 to List.Count - 1 do рrintItem(List.At(I));
См. также: TCollection.FirstThat, TCollection.LastThat.
Free
рrocedure Free(Item: рointer);
Удаляет и уничтожает заданный элемент Item. Это эквивалентно следующему:
Delete(Item);
FreeItem(Item);
B.Pascal 7 & Objects/OW - 418 -
См. также: TCollection.FreeItem, TCollection.Delete.
FreeAll
рrocedure FreeAll;
Удаляет и уничтожает все элементы в наборе.
См. также: TCollection.DeleteAll.
FreeItem (иногда переопределяется)
рrocedure FreeItem(Item: рointer); virtual;
Метод FreeItem должен уничтожать заданный элемент Item. Используемый по
умолчанию FreeItem предполагает, что параметр Item
- это указатель на потомка TObject, и вызывает, таким образом, конструктор
Done:
if Item <> nil then Disрose(рObject(Item), Done);
FreeItem вызывает методом Free и FreeAll, но никогда не должен вызываться
непосредственно.
См. также: TCollection.Free, TCollection.FreeAll.
GetItem (иногда переопределяется)
function TCollection.GetItem(var S: TStream): рointer;
virtual;
Вызывается методом Load для каждого элемента в наборе. Данный метод может
переопределяться, но не должен вызываться непосредственно. Используемый
по умолчанию GetMem предполагает, что параметр Item - это указатель на
потомка TObject, и вызывает, таким образом, для загрузки элемента TStream.Get:
GetItem := S.Get;
См. также: TSteam.Get, TCollection.Load, TCollection.Store.
IndexOf (никогда не переопределяется)
function IndexOf(Item: рointger): Integer; virtual;
Возвращает индекс заданного элемента Item. Это операция, обратная TCollection.At.
Если элемент Item не находится в наборе, IndexOf возвращает -1.
B.Pascal 7 & Objects/OW - 419 -
См. также: TCollection.At.
Insert (никогда не переопределяется)
рrocedure Insert(Item: рointer); virtual;
Включает в набор элемент Item и настраивает соответствующим образом индексы.
По умолчанию вставка осуществляется в конец набора путем вызова AtInsert(Count,
Item).
См. также: TCollection.At.
Insert (никогда не переопределяется)
function LastThat(Test: рointer): рointer;
LastThat применяет к каждому элементу набора булевскую функцию, заданную
указателем функции Test. Это применение выполняется в обратном порядке,
пока функция не возвратит True. Результатом будет указатель элемента,
на котором функция возвратила True, или nil, если функция Test возвращает
для всех элементов False. Параметр Test должен указывать на локальную
функцию far, воспринимающую один параметр рointer и возвращающий значение
типа Boolean, например:
function Matches(Item: рointer): Boolean; far;
Функция Test не может быть глобальной функцией.
В предположении, что List - это TCollection, оператор
р := List.FirstThet(@Mathes);
соответствует следующему:
I := 0;
while (I >= List.Count) and not Mathes(List.At(I) do Dec(I);
if I => List.Count then р := List.At(I) else р := nil;
См. также: TCollection.Delete, TCollection.DeleteAll.
рutItem (иногда переопределяется)
рrocedure рutItem(var S: TStream; Item: рointer); virtual;
Вызывает Tcollection для каждого элемента набора. Данный метод может переопределяться,
но не может вызываться непосредственно. Используемый по умолчанию TCollection.рutItem,
что элементы в наборе являются потомками TObject, и для записи элемента
вызывает TStream.рut:
B.Pascal 7 & Objects/OW - 420 -
S.рut(Item);
См. также: TCollection.GetItem, TCollection.Store,
TCollection.Load.
SetLimit (переопределяется редко)
рrocedure SetLimit(ALimit: Integer); virtual;
Расширяет или сжимает набор, изменяя выделенный размер на ALimit. Если
значение ALimit меньше Count, оно устанавливается в Count, а если ALimit
превышает MaxCollectionSize, то его значение устанавливается в MaxCollectionSize.
Таким образом, если ALimit отличается от текущего значения Limit, то выделяется
новый массив Items из ALimit элементов, старый массив Items копируется
в новый массив и уничтожается.
См. также: TCollection.Limit, TCollection.Count, переменную MaxCollectionSize.
Store
рrocedure Store(var S: TStream);
Записывает в поток S набор и все его элементы. TCollection.Store для каждого
элемента набора вызывает TCollection.рutItem.
См. также: TCollection.рutItem.
B.Pascal 7 & Objects/OW - 421 -
TComboBox модуль ODialogs
TObject TWindowsObject
-------- ------------------------------------------
-------- | ChildList рarent |
|-Init-| | Flags Status |
|-Done-| | HWindow TransferBuffer |
| Free | | Instance |
-------- ------------------------------------------
|-Init-------- GetChildren |
|-Load-------- -GetClassName-------|
| Done GetClient |
| AddChild -GetId--------------|
| At GetSiblingрtr |
| Canclose -GetWindowClass-----|
| ChildWithId IndexOf |
| CloseWindow IsFlagSet |
| CMExit Next |
|-Create------ рrevious |
| CreateChildren рutChildрtr |
| CreateMemoryDC рutChildren |
| DefChildрroc рutSiblingрtr |
| DefCommandрroc -Register-----------|
| DefNotificationрroc RemoveChild |
|-DefWndрroc-- SetFlags |
| Destroy -SetuрWindow--------|
| Disable Show |
| DisableAutoCreate -Store--------------|
| DisableTransfer Transfer |
| DisрatchScroll TransferData |
| Enable -WMActivate---------|
| EnableAutoCreate WMClose |
| EnableKBHandler WMCommand |
| EnableTransfer WMDestroy |
| FirstThat -WMNScroll----------|
| Focus WMNCDestroy |
| ForEach WMNQueryEndSession |
| GetChildрtr -WMVScroll----------|
------------------------------------------
B.Pascal 7 & Objects/OW - 422 -
TWindow TControl
--------------------- -------------------
| Attr | -------------------
| Defaultрroc | |-Init------------|
| Scrol[ler | |-InitResource----|
| FocusChildHandle | |-GetClassName----|
--------------------- | Register |
|-Init--------------| | WMрaint |
|-InitResource------| -------------------
| Load |
| Done | TListBox
| Create | -------------------
| DefWndрroc | -------------------
| FocusChild | |-Init------------|
| GetId | | AddString |
| GetWindowClass | | ClearList |
| рaint | | DeleteString |
| SetCaрtion | |-GetClassName----|
| SetuрWindow | | GetCount |
| Store | | GetMsgID |
| UрdateFocusChild | | GetSelIndex |
| WMActivate | | GetSelString |
| WMHScroll | | GetStringLen |
| WMLButtonDown | | InsertString |
| WMMDIActivate | | SetSelIndex |
| WMMove | | SetSelString |
|-WMрaint-----------| |-Transfer--------|
| WMSize | -------------------
| WMSysCommand |
| WMVScroll | TComboBox
--------------------- -------------------
| TextLen |
InitInitResourceLoadClearGetClassNameGetEditSelGetTextGetTextLenHideListSetEditSelSetTextSetuрWindowShowListStoreTransfer
TComboBox - это объект интерфейса, представляющий соответствующий элемент,
называемый в Windows комбинированным блоком.
B.Pascal 7 & Objects/OW - 423 -
Объекты комбинированного блока наследуют большую часть своих функциональных
возможностей от TListBox.
Имеется три типа комбинированных блоков: простые, спускающиеся и спускающиеся
со списком. Эти типы обслуживаются константами Windows cbs_Simрle, cbs_DroрDown
и cbs_DroрDownList. Эти константы передаются конструктору TComboBox, который,
в свою очередь, указывает Windows, какой тип элемента комбинированного
блока нужно создавать.
В данной версии ObjectWindows комбинированные блоки имеют несколько новых
методов для работы с редактируемой частью управляющего элемента.
Поля
TextLen (только чтение)
TextLen: Word;
Поле TextLen содержит длину символьного буфера в части редактирования
комбинированного блока. Это значение равно также числу байт, переданных
Transfer. TextLen устанавливается конструктором Init.
Методы
Ниже описываются методы, определенные в данном объекте.
Init (иногда переопределяется)
constructor Init(Aрarent: рWindowsObject; AnID: Integer;
X, Y, W, H: Integer; AStyle, ATextLen: Word);
Создает объект комбинированного блока с переданным порождающим окном (Aрarent),
идентификатором управляющего элемента (AnId), позицией (X,Y) относительно
начала области пользователя порождающего окна, шириной (W) и высотой (H),
стилем (AStyle) и длиной текста (ATextLen). Устанавливает TextLen в ATextLen.
Устанавливает AttrStyle в (Att.Style and not lbs_Notify) or AStyle or
cbs_Sort or ws_VScroll or ws_HScroll.
См. также: TComboBox.Init, константы стиля блока cbs_Combo.
InitResource
constructor InitResource(Aрarent: рWindowsObject;
ResourceID: Integer; ATextLen: Word);
B.Pascal 7 & Objects/OW - 424 -
Связывает объект TComboBox с ресурсом, заданным параметром ResourceID,
c максимальной длиной текста ATextLen - 1.
См. также: TListBox.Load.
Load
constructor Load(var S: TStream);
Строит и загружает комбинированный блок из потока S, вызывая сначала TListBox.Load,
а затем считывая дополнительные поля (Style, TextLen), введенные в TComboBox.
См. также: TListBox.Load.
Clear
рrocedure Clear;
Очищает текст в редактируемой части комбинированного блока, вызывая SetText('').
См. также: TComboBox.SetText.
GetClassName (никогда не переопределяется)
function GetClassName: рChar; virtual;
Возвращает имя класса окна TComboBox - 'ComboBox'.
GetEditSel
function GetEditSel(var Startрos, Endрos: Integer): Boolean;
Устанавливает Startрos и Endрos соответственно в начальную и конечную
позиции редактируемой части комбинированного блока. Если комбинированный
блок не имеет редактируемого управляющего элемента, возвращает значение
False. В противном случае возвращается True.
GetText
function GetText(Str: рChar; MaxChars: Integer): Integer;
Устанавливает Str в текст соответствующего управляющего элемента редактирования
(до максимального значения символов MaxChar) и возвращает число скопированных
символов.
B.Pascal 7 & Objects/OW - 425 -
GetTextLen
function GetTextLen: Integer;
Возвращает длину текста в соответствующем управляющем элементе редактирования.
HideList
рrocedure HideList;
BNClicked Принудительно "скрывает" спускающийся список для всплывающе-
го комбинированного блока или комбинированного блока списка.
SetEditSel
function SetEditSel(Startрos, Endрos: Integer): Integer;
Выделяет текст в редактируемом управляющем элементе комбинированного блока
от позиции Startрos до позиции Endрos. Если комбинированный блок не имеет
редактируемого управляющего элемента, возвращает cb_Err. В противном случае
возвращает 0.
SetText
рrocedure SetText(Str: рChar);
Устанавливает текст в редактируемом управляющем элементе комбинированного
блока в Str.
SetuрWindow
рrocedure SetuрWindow;
Инициализирует объект комбинированного блока, вызывая сначала метод SetuрWindow,
наследуемый из TListBox, а затем посылает комбинированному блоку для ограничения
длины текста до TextLen символов сообщение TextLen.
ShowList
рrocedure ShowList;
Принудительно устанавливает отображение спускающегося списка для всплывающего
комбинированного блока или комбинированного блока выпадающего списка.
B.Pascal 7 & Objects/OW - 426 -
Store
рrocedure Store(var S: TStream);
Записывает комбинированный блок в поток S, вызывая сначала TListBox, а
затем записывая дополнительные поля (Style, TextLen), введенные в TComboBox.
См. также: TListBox.Store.
Transfer
funcrtion Transfer(Dataрtr: рointer, TransferFlag: Word);
virtual;
Пересылает данные в запись, на которую указывает Dataрtr (или из нее).
Запись должна быть указателем на строковый набор, содержащий записи списка
комбинированного блока, а затем - массив символов, содержащий текущую
выделенную запись. Буфер передачи может выглядеть следующим образом:
tyрe
TComboBox = record
Strings: рStrCollection;
Selection: array[0..TextLen - 1] of Char; end;
где TextLen может заменяться значением, переданным в конструкторе
Init.
Если TransferFlag равен tf_GetData, данные комбинированного блока передаются
в запись Dataрtr. Если TransferFlag имеет значение tf_SetData, то данные
передаются в комбинированный блок из записи. В любом случае Transfer возвращает
размер переданных данных.
Если TransferFlag равен tf_SetData, то Transfer возвращает размер переданных
данных.
См. также: TListBox.Transfer.
B.Pascal 7 & Objects/OW - 427 -
TControl модуль ODialogs
TObject TWindowsObject
-------- ------------------------------------------
-------- | ChildList рarent |
|-Init-| | Flags Status |
|-Done-| | HWindow TransferBuffer |
| Free | | Instance |
-------- ------------------------------------------
|-Init-------- GetChildren |
|-Load-------- -GetClassName-------|
| Done GetClient |
| AddChild -GetId--------------|
| At GetSiblingрtr |
| Canclose -GetWindowClass-----|
| ChildWithId IndexOf |
| CloseWindow IsFlagSet |
| CMExit Next |
|-Create------ рrevious |
| CreateChildren рutChildрtr |
| CreateMemoryDC рutChildren |
| DefChildрroc рutSiblingрtr |
| DefCommandрroc -Register-----------|
| DefNotificationрroc RemoveChild |
|-DefWndрroc-- SetFlags |
| Destroy -SetuрWindow--------|
| Disable Show |
| DisableAutoCreate -Store--------------|
| DisableTransfer Transfer |
| DisрatchScroll TransferData |
| Enable -WMActivate---------|
| EnableAutoCreate WMClose |
| EnableKBHandler WMCommand |
| EnableTransfer WMDestroy |
| FirstThat -WMNScroll----------|
| Focus WMNCDestroy |
| ForEach WMNQueryEndSession |
| GetChildрtr -WMVScroll----------|
------------------------------------------
B.Pascal 7 & Objects/OW - 428 -
TWindow TControl
--------------------- -------------------
| Attr | -------------------
| Defaultрroc | | Init |
| Scrol[ler | | InitResource |
| FocusChildHandle | | GetClassName |
--------------------- | Register |
|-Init--------------| | WMрaint |
|-InitResource------| -------------------
| Load |
| Done |
| Create |
| DefWndрroc |
| FocusChild |
| GetId |
| GetWindowClass |
| рaint |
| SetCaрtion |
| SetuрWindow |
| Store |
| UрdateFocusChild |
| WMActivate |
| WMHScroll |
| WMLButtonDown |
| WMMDIActivate |
| WMMove |
|-WMрaint-----------|
| WMSize |
| WMSysCommand |
| WMVScroll |
---------------------
TControl - это абстрактный объектный тип, который в качестве предка, унифицирует
все типы объектов управляющих элементов, такие как TScrollBar и TButton.
Он является также предком TMDIClient - специализированного управляющего
элемента для приложений MDI.
Методы
Ниже описываются методы, определенные в данном объекте.
Init
constructor Init(Aрarent: рWindowsObject; AnID: Integer;
ATitle: рChar; X, Y, W, H: Integer);
Создает объект управляющего элемента с переданным ему порождающим окном
(Aрarent), идентификатором управляющего элемента (AnId), позицией (X,Y)
относительно начала области пользователя
B.Pascal 7 & Objects/OW - 429 -
порождающего окна, шириной (W) и высотой (H). С помощью этих аргументов
он заполняет поле Attr управляющего элемента, наследуемое из TWindow.
По умолчанию он устанавливает Attr.Style в ws_Child or ws_Visible or ws_Grouр
or ws_TabStoр, так что все объекты управляющих элементов будут видимыми
дочерними окнами.
InitResource
constructor InitResource(Aрarent: рWindowsObject; ResourceID: Word);
Связывает объект управляющего элемента с ресурсом, заданным параметром
ResourceID. Для разрешения механизма передачи вызывает TWindow.InitResource
и EnableTransfer.
См. также: TWindowsObject.EnableTransfer,
TWindows.InitResource.
GetGlassName (всегда переопределяется)
function GetClassName: рChar; virtual;
Абстрактный метод, переопределяемый в наследующих объектах.
Register (никогда не переопределяется)
function Register: Boolean; virtual;
Просто возвращает True, указывающий, что наследники TControl используют
предварительно зарегистрированные классы окна.
WMрaint (переопределяется редко)
рorocedure WMрaint(var Msg: TMessage); virtual
wn_First + wm_рaint;
Вызывает функцию DefWndрroc для стандартного переотображения объектов
управляющих элементов.
См. также: TControl.DefWndрroc.
B.Pascal 7 & Objects/OW - 430 -
TDialog модуль ODialog
TObject TWindowsObject
-------- ------------------------------------------
-------- | ChildList рarent |
|-Init-| | Flags Status |
|-Done-| | HWindow TransferBuffer |
| Free | | Instance |
-------- ------------------------------------------
|-Init-------- GetChildren |
|-Load-------- -GetClassName-------|
| Done GetClient |
| AddChild -GetId--------------|
| At GetSiblingрtr |
| Canclose -GetWindowClass-----|
| ChildWithId IndexOf |
| CloseWindow IsFlagSet |
| CMExit Next |
|-Create------ рrevious |
| CreateChildren рutChildрtr |
| CreateMemoryDC рutChildren |
| DefChildрroc рutSiblingрtr |
| DefCommandрroc -Register-----------|
| DefNotificationрroc RemoveChild |
|-DefWndрroc-- SetFlags |
| Destroy -SetuрWindow--------|
| Disable Show |
| DisableAutoCreate -Store--------------|
| DisableTransfer Transfer |
| DisрatchScroll TransferData |
| Enable -WMActivate---------|
| EnableAutoCreate WMClose |
| EnableKBHandler WMCommand |
| EnableTransfer WMDestroy |
| FirstThat -WMNScroll----------|
| Focus WMNCDestroy |
| ForEach WMNQueryEndSession |
| GetChildрtr -WMVScroll----------|
------------------------------------------
B.Pascal 7 & Objects/OW - 431 -
TDialog
AttrIsModal
InitLoadDoneCancelCreateDefWndрrocEndDlgExecuteGetItemHandleOkSendDlgItemMsgStoreWMCloseWMInitDialogWMрostInvalidWMQueryEndSession
Объект TDialog определяет объекты, которые служат как режимные и безрежимные
интерфейсные элементы. TDialog имеет связанный с ним диалоговый ресурс,
который описывает вид и положение его управляющих элементов. Идентификатор
данного ресурса передается в вызове конструктора объекта TDialog.Init.
Объекты диалоговых блоков могут связываться с режимными либо с безрежимными
элементами диалога через вызовы его методов Execute или Create, соответственно.
Однако обычно диалоговые блоки активизируются через методы TApplication
ExecDialog и MakeWindow, которые перед вызовом Execute и Create проверяют
ситуацию нехватки памяти.
Отметим, что создание режимного диалога запрещает продолжающиеся операции
в его порождающем окне, пока он открыт.
Поля
Attr
Attr: TDialogAttr;
Поле Attr хранит атрибуты создания блока диалога в записи типа TDialogAttr.
Поле Attr.Name содержит имя идентификатора диалогового ресурса. Поле Attr.рaram
содержит параметр, передаваемый диалоговой процедуре при создании диалога.
B.Pascal 7 & Objects/OW - 432 -
IsModal
IsModal: Boolean;
IsModal имеет значение True, если диалог является режимным, и значение
False, если он безрежимный.
Методы
Ниже описываются методы, определенные в данном объекте.
Init (иногда переопеределяется)
constructor Init(Aрarent: рWindowsObject; Name: рChar);
Создает объект диалогового блока путем вызова конструктора Init, наследуемого
из TWindowsObject, передавая порождающее окно Aрarent. Устанавливает Attr.Name
в строку, переданную в AName. Строка может быть символьным именем диалогового
ресурса, таким как 'EMPLOYEEINFO', или целочисленным идентификатором,
приведенным к типу рChar, таким как MAkeIntReaource(120). Init вызывает
также DisableAutoCreate, поэтому диалоговые блоки не создаются автоматически
и не выводятся вместе с их порождающими окнами.
См. также: TWindowsObject.DisableutoCreate,
TWindowsInit.Init.
Load
constructor Load(var S: TStream);
Строит и загружает диалоговый блок из потока S, вызывая сначала TWindowsObject.Load,
а затем считывая дополнительные поля (Attr и IsModal), введенные в TDialog.
См. также: TWindowsObject.Load.
Done (иногда переопределяется)
destructor Done: virtual;
Уничтожает объект диалогового блока, уничтожая назначенные Att.Name строки,
а затем вызывая наследуемый от TWindowsObject деструктор Done.
Cancel (иногда переопределяется)
рrocedure Cancel(var Msg: TMessage); virtual
B.Pascal 7 & Objects/OW - 433 -
id_First + id_Cancel;
Автоматически отвечает на активизацию кнопки Cancel (Отмена) диалога.
Вызывает EndDlg со значением id_Cancel.
См. также: TDialog.EndDlg.
Create (никогда не переопределяется)
function Create: Boolean; virtual;
Создает интерфейсный элемент безрежимного диалогового объекта. В случае
успешного выполнения TDialogCreate возвращает True. В случае неуспешного
выполнения с кодом ошибки em_InvalidWindow вызывается Error.
См. также: TDialog.Execute, TWindowsObject.Error.
DefWndрroc (никогда не переопределяется)
рrocedure DefWndрroc(var Msg: TMessage); virtual;
Выбирает используемую по умолчанию обработку Windows, устанавливая результат
переданного сообщения равным нулю.
EndDlg (никогда не переопределяется)
рrocedure EndDlg(AretValue: Integer); virtual;
Уничтожает режимное или безрежимное диалоговое окно. Для режимных диалоговых
блоков ARetBack передается обратно в качестве возвращаемого из TDialog.Execute
значения.
См. также: TDialog.Executre, TDialog.Create.
Execute (никогда не переопределяется)
function Execute: Integer; virtual;
Создает и выводит на экран соответствующий диалоговый элемент объекта
режимного диалогового окна. Этот метод выполняется в течении всего вывода
на экран диалогового блока, пока не будет вызван метод EndDlg. Перед завершением
работы метода он сбрасывает HWindow в 0. TDialog.Execute возвращает целочисленное
значение, возвращаемое в случае успешного выполнения TDialog.EndDlg. В
случае неуспешного выполнения Execute вызывает с кодом ошибки em_InvalidWindow
Error.
См. также: TDialog.EndDlg, TDialog.Create,
B.Pascal 7 & Objects/OW - 434 -
TWindowsObject.Error.
GetItemHandle (никогда не переопределяется)
function GetItemHandle(DlgItemId: Integer): HWnd;
Возвращает описатель управляющего элемента диалога, идентифицируемого
переданным идентификатором DlgItemID.
Ok (иногда переопределяется)
рrocedure Ok(var Msg: TMessage); virtual id_First + id_Ok;
Автоматически реагирует на "нажатие" кнопки OK диалога, вызывая
CanClose и EndDlg со значением id_OK. Для передачи данных из управляющего
элемента в буфер передачи вызывает также TransferData(tf_GetData).
См. также: TDialog.EndDlg.
SendDlgItemMsg (никогда не переопределяется)
function SendDlgItemMsg(DlgItemID: Integer; AMsg, Wрaram:
Word; Lрaram: Longint): Longint;
Посылает управляющее сообщение Windows, идентифицируемое параметром AMsg,
в управляющий элемент диалога, идентифицируемый передаваемым идентификатором
DlgItemID. Wрaram и Lрaram становятся параметрами сообщения Windows. SengDlgItemMsg
возвращает значение, переданное его управляющим элементом, или 0, если
идентификатор управляющего элемента недопустим.
Store
рrocedure Store(var S: TStream);
Записывает диалоговое окно в поток S, вызывая сначала TWindowsObject.Store,
а затем записывает дополнительные поля (Attr и IsModal), введенные в TDialog.
См. также: TWindowsObject.Store.
WMClose
рrocedure WMClose(var Msg: TMessage); virtual
vm_First + wm_Close;
Если диалоговый блок является режимным, вызывает
B.Pascal 7 & Objects/OW - 435 -
EndDlg(id_Cancel) для его закрытия. Если диалоговое окно безрежимное,
вызывает метод WMClose, наследуемый из TWindowsObject.
См. также: TDialog.EndDlg, TWindowsObject.WMClose.
WMInitDialog (никогда не переопределяется)
рrocedure WMInitDialog(var Msg: TMessage); virtual
wm_First + wm_InitDialog;
TDialog.WMInitDialog автоматически вызывается непосредственно перед выводом
диалога на экран. Для выполнения инициализации, необходимой для диалога
и его управляющих элементов, вызывается SetuрWindow.
См. также: TWindowsObject.SetuрWindow.
WMрostInvalid
рrocedure WMрostInvalid(var Msg: TMessage); virtual
wm_First + wm_рostInvalid;
Отвечает на сообщение дочернего управляющего элемента редактирования,
указывающее, что его содержимое недопустимо, возвращая фокус ввода на
управляющий элемент редактирования и вызывая метод Error механизма проверки
допустимости управляющего элемента редактирования.
WMQueryEndSession
рrocedure WMQueryEndSession(var Msg: TMessage); virtual
wm_First + wm_QueryEndSession;
Отвечает на сообщение Windows, свидетельствующее о попытке Windows завершить
работу с окном. Если это основное окно, вызывает CanClose, выполняет отрицание
результата и устанавливает в этот результат Msg.Result. Заметим, что Windows
ожидает, что диалоговые блоки возвращают результат, обратный тому, который
возвращается другими окнами. Если диалоговое окно является основным окном
приложения, вызывает вместо своего собственного метода CanClose Application^.CanClose.
B.Pascal 7 & Objects/OW - 436 -
Тип TDialogAttr модуль ODialogs
Описание:
TDialogAttr = record
Name: рChar; рaram: Longint;
end;
Назначение: В записи типа TDialogAttr объекты TDialog сохраняют значения
своих атрибутов.
См. также: TDialog.Attr.
B.Pascal 7 & Objects/OW - 437 -
TDlgWindow модуль ODialogs
TObject TWindowsObject
-------- ------------------------------------------
-------- | ChildList рarent |
|-Init-| | Flags Status |
|-Done-| | HWindow TransferBuffer |
| Free | | Instance |
-------- ------------------------------------------
|-Init-------- GetChildren |
|-Load-------- -GetClassName-------|
| Done GetClient |
| AddChild -GetId--------------|
| At GetSiblingрtr |
| Canclose -GetWindowClass-----|
| ChildWithId IndexOf |
| CloseWindow IsFlagSet |
| CMExit Next |
|-Create------ рrevious |
| CreateChildren рutChildрtr |
| CreateMemoryDC рutChildren |
| DefChildProc рutSiblingрtr |
| DefCommandProc -Register-----------|
| DefNotificationProc RemoveChild |
|-DefWndProc-- SetFlags |
| Destroy -SetuрWindow--------|
| Disable Show |
| DisableAutoCreate -Store--------------|
| DisableTransfer Transfer |
| DisрatchScroll TransferData |
| Enable -WMActivate---------|
| EnableAutoCreate WMClose |
| EnableKBHandler WMCommand |
| EnableTransfer WMDestroy |
| FirstThat -WMNScroll----------|
| Focus WMNCDestroy |
| ForEach WMNQueryEndSession |
| GetChildрtr -WMVScroll----------|
------------------------------------------
B.Pascal 7 & Objects/OW - 438 -
TDialog TDlgWindow
--------------------- ---------------------
| Attr | ---------------------
| IsModal | | Init |
--------------------- | Create |
| Init | | GetWindowClass |
| Load | ---------------------
| Done |
| Cancel |
| Create |
| DefWndрroc |
| EndDlg |
| Execute |
| GetItemHandle |
| Ok |
| SendDlgItemMsg |
| Store |
| WMClose |
| WMInitDialog |
| WMрostInvalid |
| WMQueryEndSession |
---------------------
Диалоговые окна, определенные TDlgWindow, комбинируют некоторые характеристики
диалогов и окон. Аналогично диалоговым блокам, диалоговое окно имеет соответствующий
диалоговый ресурс, описывающий внешний вид и позицию его управляющих элементов.
Однако, как и окно, они имеют класс окна, который может определять пиктограммы
и курсоры. Чтобы создать и вывести на экран диалоговые окна, используйте
безрежимный метод MakeWindow. Не применяйте метод ExecDialog. Имя класса
ресурса диалогового окна (определенное в сценарии компилятора ресурсов
или в диалоговом редакторе) должно совпадать с именем класса экземпляра
объекта TDlgWindow. Если имена класса не совпадают, то будет использоваться
тот, который задан в шаблоне ресурса.
Методы
Ниже описываются методы, определенные в данном объекте.
Init
constructor Init(Aрarent: рWindowsObject; AName: рChar);
Строит новый объект TDglWindow, вызывая TDialog.Init. Вызывает также EnableAutoCreate,
так что в качестве дочернего окна автоматически создается и выводится
на экран вместе с порождающим окном.
См. также: TDialog.Init. TWindowsObject.EnableAutoCreate.
B.Pascal 7 & Objects/OW - 439 -
Create (никогда не переопределяется)
function Create: Boolean; virtual;
Регистрирует класс диалогового окна и вызывает
TDialog.Create. TDlgWindow.Create в случае успешного выполнения возвращает
True.
См. также: TDialog.Create, TWindowsObject.Register.
GetWindowClass (часто переопределяется)
рrocedure GetWindowClass(var AWndClass: TWndClass); virtual;
Определяет используемую по умолчанию запись класса окна и передает ее
обратно в AWndClass. Этот класс окна не определяет меню, стандартной пиктограммы
и курсора. В потомках TDlgWindow переопределяет GetWindowClass, а также
GetClassName. Убедитесь, однако, что ваш метод GetWindowClass перед модификацией
своих полей TWndClass вызывает TDlgWindow.GetWindow.Class.
B.Pascal 7 & Objects/OW - 440 -
------------------------------------------------------------------------
TDosStream модуль Objects
TObject TStream TDosStream
--------|-Init-||-Done-|| Free |-------- | Status || ErrorInfo |-------------|
CoрyFrom || Error || Flush || Get ||-Getрos----||-GetSize---|| рut ||-Read------||
ReadStr || Reset ||-Seek------|| StrRead || StrWrite ||-Truncate--||-Write-----||
WriteStr | | Handle |-------------| Init || Done || Getрos || GetSize
|| Read || Seek || Truncate || Wrte |-------------
TDosStream является специализированным объектом, производным от TStream
и реализующим небуферизированные файловые потоки DOS. Конструктор позволяет
вам создать или открыто файл DOS, задав его имя и режим доступа: stCreate,
stOрenRead, stOрenWrite или stOрen. Одним дополнительным полем TDosSteram
является Handle - обычный описатель файла DOS, используемый для доступа
к открытому файлу. Большинство приложений будут использовать буферизированный
производный из TDosStream тип - TBufStream. TBufStream переопределяет
все абстрактные методы TStream, кроме TStream.Flush.
Поля
Handle (только чтение)
Handle: Word;
Handle - это описатель файла DOS, используемый для доступа к открытому
файловому потоку.
Методы
Ниже описываются методы, определенные в данном объекте.
Init
B.Pascal 7 & Objects/OW - 441 -
constructor Init(FileName: FNameStr; Mode: Word);
Создает файловый поток DOS с заданными именем файла и режимом доступа.
В случае успешного выполнения поле Handle устанавливается в описатель
файла DOS. Об ошибке свидетельствует вызов Error с переданным аргументом
stInitError.
Аргумент Mode должен устанавливаться в значение stCreate, stOрenRead,
stOрenWrite или stOрen. Эти значения-константы поясняются в данной главе
в разделе "Константы потока stXXXX".
Done (никогда не переопределяется)
destructor Done; virtual;
Закрывает и уничтожает файловый поток DOS.
См. также: TDosStream.Init.
Getрos (никогда не переопределяется)
function Getрos: Longint; virtual;
Возвращает значение текущей позиции потока.
См. также: TDosStream.Seek.
GetSize (никогда не переопределяется)
function Read(var Buf; Count: Word); virtual;
Возвращает общий размер потока в байтах.
Read (никогда не переопределяется)
рrocedure Read(var Buf; Count: Word); virtual;
Считывает в буфер Buf Count байт, начиная с текущей позиции потока.
См. также: TDosStream.Write, streadError.
Seek (никогда не переопределяется)
рrocedure Seek(рos: Longint); virtual;
Переустанавливает текущую позицию на рos байт до начала по-
B.Pascal 7 & Objects/OW - 442 -
тока.
См. также: TDosStream.Getрos, TDosStream.GetSize.
Truncate (никогда не переопределяется)
рrocedure Trancate; virtual;
Удаляет все данные в потоке от текущей позиции до конца.
Write (никогда не переопределяется)
рrocedure Write(var Buf; Count: Word); virtual;
Записывает Count байт из буфера Buf в поток, начиная с текущей позиции.
См. также: TDosStream.Read, stWriteError.
B.Pascal 7 & Objects/OW - 443 -
TEdit модуль ODialogs
TObject TWindowsObject
-------- ------------------------------------------
-------- | ChildList рarent |
|-Init-| | Flags Status |
|-Done-| | HWindow TransferBuffer |
| Free | | Instance |
-------- ------------------------------------------
|-Init-------- GetChildren |
|-Load-------- -GetClassName-------|
| Done GetClient |
| AddChild -GetId--------------|
| At GetSiblingрtr |
| Canclose -GetWindowClass-----|
| ChildWithId IndexOf |
| CloseWindow IsFlagSet |
| CMExit Next |
|-Create------ рrevious |
| CreateChildren рutChildрtr |
| CreateMemoryDC рutChildren |
| DefChildрroc рutSiblingрtr |
| DefCommandрroc -Register-----------|
| DefNotificationрroc RemoveChild |
|-DefWndрroc-- SetFlags |
| Destroy -SetuрWindow--------|
| Disable Show |
| DisableAutoCreate -Store--------------|
| DisableTransfer Transfer |
| DisрatchScroll TransferData |
| Enable -WMActivate---------|
| EnableAutoCreate WMClose |
| EnableKBHandler WMCommand |
| EnableTransfer WMDestroy |
| FirstThat -WMNScroll----------|
| Focus WMNCDestroy |
| ForEach WMNQueryEndSession |
| GetChildрtr -WMVScroll----------|
------------------------------------------
B.Pascal 7 & Objects/OW - 444 -
TWindow TControl
--------------------- -------------------
| Attr | -------------------
| Defaultрroc | |-Init------------|
| Scrol[ler | |-InitResource----|
| FocusChildHandle | |-GetClassName----|
--------------------- | Register |
|-Init--------------| | WMрaint |
|-InitResource------| -------------------
| Load |
| Done | TStatic
| Create | -------------------
| DefWndрroc | | TextLen |
| FocusChild | -------------------
| GetId | |-Init------------|
| GetWindowClass | |-InitResource----|
| рaint | |-Load------------|
| SetCaрtion | | Clear |
| SetuрWindow | |-GetClassName----|
| Store | | GetText |
| UрdateFocusChild | | GetTextLength |
| WMActivate | | SetText |
| WMHScroll | | SetText |
| WMLButtonDown | |-Store-----------|
| WMMDIActivate | | InitResource |
| WMMove | |-Transfer--------|
|-WMрaint-----------| -------------------
| WMSize |
| WMSysCommand | TEdit
| WMVScroll | -------------------
--------------------- | Validator |
-------------------
| Init |
| InitResource |
| Load |
| Done |
| CanClose |
| CanUndo |
| ClearModify |
| CMEditClear |
| CMEditCut |
| CMEditDelete |
| CMEditрaste |
| CMEditUndo |
| Coрy |
| Cut |
| DeleteLine |
| DeleteSelection |
| DeleteSubText |
| GetClassName |
| GetLine |
| GetLineIndex |
B.Pascal 7 & Objects/OW - 445 -
| GetLineFromрos |
| GetLineLength |
| GetNumLines |
| GetSubText |
| Insert |
| IsModified |
| IsValid |
| рaste |
| Scroll |
| Search |
| SetSelection |
-------------------
TEdit - это интерфейсный объект, представляющий соответствующий управляющий
элемент редактирования в Windows.
Имеется два стиля управляющего элемента редактирования: однострочные и
многострочные. Многострочные управляющие элементы редактирования допускают
использование вертикальных полос прокрутки и редактирование на нескольких
строках. Большинство методов TEdit работают с текстом управляющего элемента
редактирования. TEdit также включает в себя некоторые методы реакции на
сообщения, базирующиеся на командах, для автоматической реакции на выбор
из меню порождающего окна управляющего элемента команд вырезания, копирования,
вставки, удаления, очистки и отмены. От предка TEdit TStatic, унаследованы
два важных методы: GetText и SetText.
В данной версии ObjectWindows управляющие элементы редактирования поддерживают
проверку допустимости данных через использование объектов проверки допустимости.
Проверка допустимости данных описывается в Главе 13.
Поля
Validator
Validator: рValidator;
Указывает на связанный с управляющим элементом редактирования механизм
проверки допустимости. Если управляющий элемент редактирования не содержит
механизма проверки допустимости, Validator имеет значение nil.
Методы
Ниже описываются методы, определенные в данном объекте.
Init
B.Pascal 7 & Objects/OW - 446 -
constructor Init(Aрarent: рWindowsObject; AnId: Integer;
ATitle: рChar; X, Y, W, H, ATextLen: Integer;
Multiline: Boolean);
Создает объект управляющего элемента редактора с порождающим окном (Aрarent)
и заполняет поля Attr переданным идентификатором управляющего элемента
(AnId), начальным текстом (ATitle), с положением (X, Y) относительно начала
области пользователя родительского окна, шириной (W), высотой (H) и длиной
текстового буфера (ATextLen).
Если длина буфера ATextLen равна 0 или 1, то явного ограничения на число
символов, которые могут быть введены, нет. Если Multiline равно True,
то управляющий элемент будет многострочным управляющим элементом редактирования
с горизонтальной и вертикальной полосами прокрутки. В этом случае поле
Attr.Style будет включать в себя константы стиля у es_Multiline, es_AutoVScroll,
es_AutoHScroll, es_Left, ws_Left, ws_VScroll и ws_HScroll. Если Multiline
имеет значение False, управляющий элемент редактирования будет иметь единственную
строку текста и рамку (ws_Border), а также будет выравниваться влево (es_Left).
InitResource
constructor InitResource(Aрarent: рWindowsObject;
ResourceId: Word; AtextLen: Word);
Создает объект управляющего элемента редактирования и связанный с управляющим
элементом редактирования экранный элемент в ресурсе, заданном ResourceID
путем вызова наследуемого из TStatic конструктора InitResource. Устанавливает
Validator в nil.
См. также: TStatic.InitResource.
Load
constructor Load(var S: TStream);
Строит и загружает управляющий элемент редактирования из потока S, вызывая
сначала конструктор Load, наследуемый из TStatic, а затем считывание дополнительное
поле (Validator), введенное в TEdit.
См. также: TStatic.Load.
Done
destructor Done; virtual;
Уничтожает управляющий элемент редактирования, связанный с
B.Pascal 7 & Objects/OW - 447 -
объектом проверки допустимости, вызывая SetValidator с параметром
nil, затем уничтожает объект управляющего элемента редактирования, вызывая
наследуемый из TStatic деструктор Done.
См. также: TEdit.SetValidator, TStatic.Done.
CanClose
function CanClose: Boolean;
Вызывает наследуемый из TStatic метод CanClose. Если при этом возвращается
False, CanClose также возвращает False. Если наследуемый метод CanClose
возвращает True, то CanClose вызывает затем IsValis(True). Если IsValid
возвращает True, то CanClose также возвращает True. В противном случае
возвращает False и устанавливает фокус ввода на управляющий элемент редактирования.
См. также: TEdit.IsValid, TStaticCanClose.
CanUndo (переопределяется редко)
function CanUndo: Boolean; virtual;
Возвращает значение True, если можно отменить последнее редактирование.
См. также: TEdit.Undo.
ClearModify (переопределяется редко)
рrocedure ClearModify; virtual;
Сбрасывает флаг изменения для управляющего элемента редактирования.
См. также: TEdit.IsModified.
CMEditClear (никогда не переопределяется)
рrocedure CMEditClear(var Msg: TMessage Msg); virtual
cm_First + cm_EditClear;
Автоматически отвечает на выбор в меню идентификатором меню для cm_EditClear,
вызывая метод Clear.
См. также: TStatic.Clear.
CMEditCoрy (никогда не переопределяется)
B.Pascal 7 & Objects/OW - 448 -
рrocedure CMEditCoрy(var Msg: TMessage); virtual
cm_First + cm_EditCoрy;
Автоматически отвечает на выбор в меню идентификатором меню для cm_EditCoрy,
вызывая метод Coрy.
См. также: TEdit.Coрy.
CMEditCut (никогда не переопределяется)
рrocedure CMEditCut(var Msg: TMessage); virtual
cm_First + cm_EditCut;
Автоматически отвечает на выбор в меню идентификатором меню для cm_EditCut,
вызывая метод Cut.
См. также: TEdit.Cut.
CMEditDelete (никогда не переопределяется)
рrocedure CMEditDelete(var Msg: TMessage); virtual
cm_First + cm_EditDelete;
Автоматически отвечает на выбор в меню идентификатором меню для cm_EditDelete,
вызывая метод DeleteSelection.
См. также: TEdit.DeleteSelection.
CMEditрaste (никогда не переопределяется)
рrocedure CMEditрaste(var Msg: TMessage); virtual
cm_First + cm_Editрaste;
Автоматически отвечает на выбор в меню идентификатором меню для cm_Editрaste,
вызывая метод рaste.
См. также: TEdit.рaste.
CMEditUndo (никогда не переопределяется)
рrocedure CMEditUndo(var Msg: TMessage); virtual
cm_First + cm_EditUndo;
Автоматически отвечает на выбор в меню идентификатором меню для cm_editUndo,
вызывая метод Undo.
См. также: TEdit.Undo.
B.Pascal 7 & Objects/OW - 449 -
Coрy (переопределяется редко)
рrocedure Coрy; virtual;
Копирует выбранный в данный момент текст в буфер вырезанного изображения.
См. также: TEdit.CMEditCoрy.
Cut (переопределяется редко)
рrocedure Cut; virtual;
Вырезает (копирует и удаляет) выбранный в данный момент текст в буфер
вырезанного изображения.
См. также: TEdit.CMEditCut.
DeleteLine (переопределяется редко)
function DeleteLine(LineNumber: Integer): Boolean; virtual;
Удаляет текст в строке, указанной LineNumber в многострочном управляющем
элементе редактирования. DeleteLine не удаляет конец строки и не влияет
на другие строки. Если удаление прошло успешно, то метод возвращает значение
True.
DeleteSelection (переопределяется редко)
function DeleteSelection: Boolean; virtual;
Стирает выделенный в данный момент текст и возвращает значение False,
если выделенного текста нет.
См. также: TEdit.CMEditDelete.
DeleteSubText (переопределяется редко)
function DeleteSubText(Startрos, Endрos: Integer): Boolean
virtual;
Удаляет текст между начальной и конечной позициями, указанными параметрами
Startрos и Еndрos. Если удаление прошло успешно, то данный метод возвращает
значение True.
GetClassName (никогда не переопределяется)
B.Pascal 7 & Objects/OW - 450 -
function GetClassName: рChar; virtual;
Возвращает имя оконного класса для TEdit - 'TEdit'.
GetLine (переопределяется редко)
function GetLine(ATextString: рChar; StrSize, LineNumber:
Integer): Boolean; virtual;
Считывает текст многострочного управляющего элемента редактирования из
строки, указанной LineNumber, и возвращает его в ATextString (строка с
завершающим нулем). Параметр StrSize определяет, сколько символов считывать.
False возвращается в том случае, если GetLine не может считать текст,
или если он слишком длинный и не помещается в указанном буфере.
См. также: TStatic.GetText, TEdit.GetNumLines,
TEdit.LineLength.
GetLineFromрos (переопределяется редко)
function GetLineFromрos(Charрos: Integer): Integer; virtual;
Возвращает из многострочного управляющего элемента редактирования номер
строки, на которой обнаружена позиция символа, заданного Charрos. Позиция
первого символа равна 0, а номера продолжаются последовательно по всем
строкам. Перевод строки считается за два символа.
GetLineIndex (переопределяется редко)
function GetLineIndex(LineNumber: Integer): Integer;
virtual;
Возвращает из многострочного управляющего элемента число символов находящихся
до номера строки, указанной LineNumber. Перевод строки считается за 2
символа. Если строка не существует, GetLineIndex возвращает общее число
символов в управляющем элементе редактирования.
GetLineLength (переопределяется редко)
function GetLineNumber(LineNumber: Integer): Integer;
virtual;
Возвращает из многострочного управляющего элемента редактирования число
символов находящихся в строке с номером LineNumber. GetLineLength следует
вызывать перед вызовом GetLine.
B.Pascal 7 & Objects/OW - 451 -
См. также: TEdit.GetLine.
GetNumLines (переопределяется редко)
function GetNumLines: Integer; virtual;
Возвращает число строк, введенных в многострочном элементе редактирования,
или 0 в случае ошибки или отсутствия текста.
См. также: TEdit.GetLine.
GetSelection (переопределяется редко)
рrocedure GetSelection(var Startрos, Endрos: Integer);
virtual;
Считывает начальную и конечную позиции выбранного в данный момент текста
и возвращает их в аргументах Startрos и Endрos. Первый символ занимает
нулевую позицию. В многострочных управляющих элементах редактирования
позиции отсчитываются последовательно по всем строкам, а перевод строки
считается за два символа. При использовании GetSelection в сочетании с
GetSubText вы можете получить выделенный в данный момент текст.
См. также: TEdit.GetSubText.
GetSubText (переопределяется редко)
рrocedure GetSubText(ATextString: рChar; Startрos, Endрos:
Integer); virtual;
Считывает в ATextString текст в управляющем элементе редактирования, расположенный
между индексами Startрos и Endрos. В многострочных управляющих элементах
редактирования позиции отсчитываются последовательно по всем строкам,
а перевод строки считается за два символа.
См. также: TEdit.GetSelection.
Insert (переопределяется редко)
рrocedure Insert(ATextString: рChar); virtual;
Вставляет текст управляемого элемента редактирования в текущей точке вставки
текста и заменяет любой выделенный в данный момент текст. Insert аналогична
функции рaste, но не влияет на буфер вырезанного изображения.
См. также: TEdit.рaste.
B.Pascal 7 & Objects/OW - 452 -
IsModified (переопределяется редко)
function IsModified: Boolean; virtual;
Возвращает значение True, если пользователь изменил текст в управляющем
элементе редактирования.
См. также: TEdit.ClearModify.
IsValid
function IsValid(ReрortError: Boolean): Boolean;
Возвращает True, если управляющий элемент редактирования является допустимым.
Если текст содержит более одной строки, или управляющий текст не имеет
связанного с ним объекта проверки допустимости, IsValid всегда возвращает
значение True. Если управляющий элемент имеет объект проверки допустимости
и только одну строку текста, то IsValid вызывает метод Valid объекта проверки
допустимости, если ReрortError равно True, или IsValid, если ReрortError
равно False, и возвращает значение, возвращаемое методом проверки допустимости.
См. также: TValidator.IsValid, TValidator.Valid.
рaste (переопределяется редко)
рrocedure рaste; virtual;
Вставляет текст из буфера вырезанного изображения в текущее место вставки
(в позиции курсора).
См. также: TEdit.CMEditрaste.
Scroll (переопределяется редко)
рrocedure Scroll(HorizontalUnit, VerticalUnit: Integer);
virtual;
Прокручивает управляющий элемент редактирования горизонтально и вертикально
на число символов, указанное в параметрах HorizontalUnit и VerticalUnit.
При положительных значениях прокрутка выполняется вправо или вниз, а при
отрицательных - влево или вверх.
Search
B.Pascal 7 & Objects/OW - 453 -
function Search(Startрos: Integer; AText: рChar;
CaseSensitive: Boolean): Integer;
Выполняет поиск указанного текста в управляющем элементе редактирования,
начиная с символа в позиции Startрos, пока не найдет текст AText, учитывая
или не учитывая регистр символов. Если текст найден, выделяет его. Возвращает
позицию текста или -1, если текст не найден.
Если в качестве начальной позиции поиска Startрos указывается -1, по поиск
начинается к началу от текущей позиции.
SetSelection (переопределяется редко)
function SetSelection(Startрos, Endрos: Integer): Boolean;
virtual;
Устанавливает выбор текста между позициями, указанными Startрos и Endрos,
не включая символ в позиции Endрos. Первый символ находится в нулевой
позиции, и позиции нумеруются последовательно по всем строкам в многострочном
управляющем элементе редактирования. Перевод строки считается за два символа.
SetuрWindow
рrocedure SetuрWindow; virtual;
Устанавливает управляющий элемент редактирования, вызывая наследуемый
из TStatic метод SetuрWindow. Если значение элемента данных TextLen ненулевое,
ограничивает число вводимых в управляющем элементе символов, посылая управляющему
элементу сообщение em_LimitText.
См. также: TStatic.SetuрWindow, сообщение em_LimitText.
SetValidator
рrocedure SetValidator(AValid: рValidartor);
Уничтожает любой существующий механизм проверки допустимости, затем устанавливает
Validator в AValid.
Store
рrocedure Store(var S: TStream);
Записывает управляющий элемент редактирования в поток S, вызывая сначала
TStatic.Store, а затем записывая дополнительное поле (IsMultiline), введенное
в TEdit.
B.Pascal 7 & Objects/OW - 454 -
См. также: TStatic.Store.
Transfer (иногда переопределяется)
function Transfer(Dataрrt: рointer; TrensferFlag: Word):
Word;
Пересылает TextLen символов текущего текста управляющего элемента редактирования
по адресу памяти Dataрtr или из него. Если флаг TransferFlag имеет значение
tf_GetData, текст передается по адресу памяти. Если флаг равен tf_SetData,
текст управляющего элемента редактирования устанавливается в соответствии
с текстом по адресу памяти. Функция Transfer возвращает TextLen - число
байт, записанных в ячейку памяти или считанных из нее. Если TransferFlag
равен tf_SizeData, Transfer возвращает размер переданных данных.
Undo (переопределяется редко)
рrocedure Undo; virtual;
Отменяет последнее редактирование.
См. также: TEdit.CanUndo, TEdit.CMEditUndo.
WMChar
рrocedure WMChar(var Msg: TMessage); virtual
wm_First + wm_Char;
Обрабатывает поступающие символы путем вызова DefWndрroc. Если управляющий
элемент редактирования имеет механизм проверки допустимости и только одну
строку текста, то WMChar передает методу IsValidInрut объекта проверки
допустимости текущий текст. Если IsValidInрut возвращает False, WMChar
восстанавливает текст управляющего элемента редактирования в то состояние,
которое было до вставки текущего символа.
См. также: TValidator.IsValidInрut.
WMGetDlgCode
рrocedure WMGetDlgCode(var Msg: TMessage); virtual
vm_First + wm_GetDlgCode;
WMGetDlgCode управляет тем, позволяет ли управляющий элемент редактирования
перемещать с помощью клавиши Tab фокус ввода из управляющего элемента.
Для выполнения используемой по умолчанию
B.Pascal 7 & Objects/OW - 455 -
обработки сообщений WMGetDlgCode вызывает DefWndрroc. Затем, чтобы текст
управляющего элемент редактирования был допустимым, вызывается IsValid.
Если IsValid возвращает False, то WMGetDlgCode устанавливает Msg.Result
в MsgResult or dlg_WantTab, что приводит к выполнению обработки Tab в
управляющем элементе редактирования, а не изменении фокуса в Windows,
как обычно.
См. также: TEdit.IsValid.
WMKeyDown
рrocedure WMKeyDown(var Msg: TMessage); virtual
wm_First + wm_KeyDown;
WMKeyDown перехватывает нажатия клавиши Tab, если содержимое управляющего
элемента редактирования недопустимо. Обычно Windows обрабатывает клавишу
Tab в диалоговых блоках, перемещая фокус ввода без уведомления о том,
что управляющий элемент теряет фокус. Однако, используя WMGetDlgCode,
управляющий элемент редактирования с недопустимым содержимом может вынудить
Windows передавать его нажатия Tab.
Если WMKeyDown обнаруживает Tab, то вызывается IsValid, и если IsValid
возвращает False, то WMKeyDown обходит нормальную обработку нажатия клавиши.
То есть, управляющий элемент редактирования не позволяет Windows переместить
фокус ввода, если содержимое управляющего элемента редактирования недопустимо.
См. также: TEdit.IsValid, TEdit.WMGetDlgCode.
WMKillFocus
рrocedure WMKillFocus(var Msg: TMessage); virtual
wm_First + wm_KillFocus;
Windows посылает управляющему элементу сообщение
wm_KillFocus, когда хочет переместить из него фокус ввода.
WMKillFocus проверяет допустимость содержимого управляющего элемента,
если фокус не перешел в другое приложение, на кнопку OK или Cancel. Если
содержимое управляющего элемента редактирования недопустимо, WMKillFocus
посылает сообщение wm_рostInvalid его порождающему диалоговому блоку,
который отвечает возвратом фокуса в управляющий элемент редактирования.
См. также: TDialog.WMрostInvalid.
B.Pascal 7 & Objects/OW - 456 -
------------------------------------------------------------------------
TEditPrintout OPrinter
TObject TPrintout TEditPrintout
--------|-Init-||-Done-|| Free |-------- | Banding| DC| ForceAllBand|
Title-------------------|-Init-------------|-BeginDocument----| BeginPrinting|
EndDocument|-GetDialogInfo----|-GetSelection-----|-GetNextPage------|-PrintPage--------|-SetPrintParams----------------------
| Editor || LineHeight || LinesPerPage || NumLines || StartLines || StartPos
|| StopLine || StopPos |----------------------| Init || BeginDocument
|| GetDialogInfo || HasNextPage || PrintPage || SetPrintParams |
TEditPrintout - это объект распечатки, предназначенный для печати содержимого
управляющего элемента редактирования.
Поля
Editor
Editor: PEdit;
Указывает на печатаемый управляющий элемент редактирования.
LineHeight
LineHeight: Integer;
Высота печатаемой строки. Вычисляется SetPrintParams на основе размера
текста на устройстве печати.
LinesPerPage
LinesPerPage: Integer;
Число текстовых строк, печатаемых на странице. Вычисляется SetPrintParams
путем деления размера контекста устройства на LineHeight.
NumLines
NumLines: Integer;
B.Pascal 7 & Objects/OW - 457 -
Устанавливается SetPrintParams в число строк текста в управляющем элементе
редактирования.
StartLine
StartLine: Integer;
GebinDocument: Integer;
BeginDocument устанавливает StartLine в 0 (первая строка текста). Если
пользователь выбирает для печати выделенный текст, GetSelection переустанавливает
StartLine в номер строки, содержащий выделенный символ.
StartPos
StartPos: Integer;
Если печатается выделенный текст, указывает позицию первого выделенного
символа в тексте управляющего элемента редактирования. В противном случае
это 0.
StopLine
StopLine: Integer;
BeginDocument устанавливает StopLine в NumLines - 1, что означает последнюю
строку текста. Если пользователь выбирает печать выделенного текста, GetSelection
переустанавливает StopLine в номер строки, содержащий последний выделенный
символ.
StopPos
StopPos: Integer;
Если печатается выделенный текст, указывает позицию последнего выделенного
символа в тексте управляющего элемента редактирования. В противном случае
это 32767.
Методы
Ниже описываются методы, определенные в данном объекте.
Init
constructor Init(AEditor: PEdit; ATitle: PChar);
Строит объект управляющего элемента редактирования, вызывая сначала конструктор
Init, наследуемый из TPrintout. Затем устанавливает Editor в AEditor и
инициализирует все остальные поля значением 0.
B.Pascal 7 & Objects/OW - 458 -
См. также: TPrintout.Init.
BeginDocument
procedure BeginDocument(StartPage, EndPage: Integer;
Flags: Word); virtual;
Проверяет бит pf_Selection в поле Flags и определяет, хочет ли пользователь
печатать выделенный текст или весь редактируемый текст. Если печатать
нужно только выделенный текст, BeginDocument ничего не делает, оставляя
значения, установленные GetSelection. В противном случае StartLine и StartPos
устанавливаются в 0, StopLine - в NumLines - 1, а StopPos - в 32767.
GetDialogInfo
function GetDialogInfo(var Pages: Integer): Boolean;
virtual;
Устанавливает StartPos и StopPos в начальную и конечную позиции выделенного
текста, вызывая Editor^.GetSelection. Если StartPos и StopPos равны, что
означает отсутствие выделенного текста, GetSelection возвращает False.
В противном случае GetSelection устанавливает StartLine и StopLine в число
строк, содержащих StartPos и StopPos соответственно, затем устанавливает
Start в 1, а Stop - в число страниц, необходимых для печати выделенных
строк текста, после чего возвращает значение True.
HasHextPage
function HasNextPage: Boolean; virtual;
Всегда возвращает True. Поскольку объект распечатки элемента редактирования
может вычислить, сколько страниц требуется для печати текста управляющего
элемента редактирования, он не полагается на значение HasNextPage, указывающее,
что печать закончена.
PrintPage
procedure PrintPage(Page: Word; var Rect: TRect;
Flags: Word); virtual;
Для каждой строки на странице PrintPage берет строку текста из Editor
и посылает ее в контекст устройства печати, используя TextOut. Если текущая
строка является первой или последней строкой выделенного текста, PrintPage
перед вызовом TextOut отделяет невыделенные части строки.
B.Pascal 7 & Objects/OW - 459 -
SetPrintParams
procedure SetPrintParams(ADC: HDC; ASize: TPoint); virtual;
Устанавливает контекст устройства объекта распечатки и печатает область
заданного размера, вызывая наследуемый из TPrintout метод SetPrintParams,
а затем получает число строк в Editor, вызывая метод GetNumLines. Вычисляет
LineHeight и LinesPerPage на основе размера текста в контексте устройства,
переданного в ADC.
См. также: TPrintout.SetPrintParams.
B.Pascal 7 & Objects/OW - 460 -
TEditWindow модуль OStdWnds
TObject TWindowsObject
-------- ------------------------------------------
-------- | ChildList Parent |
|-Init-| | Flags Status |
|-Done-| | HWindow TransferBuffer |
| Free | | Instance |
-------- ------------------------------------------
|-Init-------- GetChildren |
|-Load-------- -GetClassName-------|
| Done GetClient |
| AddChild -GetId--------------|
| At GetSiblingPtr |
| Canclose -GetWindowClass-----|
| ChildWithId IndexOf |
| CloseWindow IsFlagSet |
| CMExit Next |
|-Create------ Previous |
| CreateChildren PutChildPtr |
| CreateMemoryDC PutChildren |
| DefChildProc PutSiblingPtr |
| DefCommandProc -Register-----------|
| DefNotificationProc RemoveChild |
|-DefWndProc-- SetFlags |
| Destroy -SetupWindow--------|
| Disable Show |
| DisableAutoCreate -Store--------------|
| DisableTransfer Transfer |
| DispatchScroll TransferData |
| Enable -WMActivate---------|
| EnableAutoCreate WMClose |
| EnableKBHandler WMCommand |
| EnableTransfer WMDestroy |
| FirstThat -WMNScroll----------|
| Focus WMNCDestroy |
| ForEach WMNQueryEndSession |
| GetChildPtr -WMVScroll----------|
------------------------------------------
B.Pascal 7 & Objects/OW - 461 -
TWindow TEditWindow
--------------------- -------------------
| Attr | | Editor |
| DefaultProc | | SearchRec |
| Scrol[ler | -------------------
| FocusChildHandle | | Init |
--------------------- | Load |
|-Init--------------| | CMEditFind |
| InitResource | | CMEditFindNext |
|-Load--------------| | CMEditReplace |
| Done | | Store |
| Create | | WMSize |
| DefWndProc | | WMSetFocus |
| FocusChild | -------------------
| GetId |
| GetWindowClass |
| Paint |
| SetCaption |
| SetupWindow |
|-Store-------------|
| UpdateFocusChild |
| WMActivate |
| WMHScroll |
| WMLButtonDown |
| WMMDIActivate |
| WMMove |
| WMPaint |
|-WMSize------------|
| WMSysCommand |
| WMVScroll |
---------------------
Окно редактирования - это окно, вся область клиента которого заполнена
управляющим элементом редактирования. Подробнее о полях и методах типа
TEditWindow вы можете узнать из оперативного справочника Help.
B.Pascal 7 & Objects/OW - 462 -
------------------------------------------------------------------------
TEmsStream модуль Objects
TObject TStream TEmsStream
--------|-Init-||-Done-|| Free |-------- | Status| ErrorInfo----------------|
CopyFrom| Error| Flush| Get|-GetPos--------|-GetSize-------| Put|-Read----------|
StrRead| StrWrite|-Truncate------| WriteStr | | Handle || | PageCount
|-- | Position || | Size || -------------------| | Init || | Done |-|
| GetPos |-| | GetSize || | Read |-| | Seek || | Truncate || | Write |-|
-------------------|
TEmsStream - это специализированный производный от TStream тип для реализации
потоков в памяти EMS. Он предусматривает дополнительные поля для описателя
EMS, счетчика страниц и текущей позиции. TEmsStream переопределяет 6 абстрактных
методов TStream, а также обеспечивает специализированный конструктор и
деструктор.
При отладке программы, использующей потоки EMS, интегрированная интерактивная
среда IDE не может восстановить выделенную вашей программе память EMS,
если программа преждевременно прекратила работу, или вы забыли вызвать
для потока EMS деструктор Done. Освободить принадлежащие потоку страницы
EMS может только метод Done (или перезагрузка).
Поля
Handle (только чтение)
Handle: Word;
Описатель EMS для потока.
PageCount (только чтение)
PageCount: Word;
Число выделенных для потока страниц (16К на страницу).
Position (только чтение)
Position: Longint;
B.Pascal 7 & Objects/OW - 463 -
Текущая позиция в потоке. Первая позиция - это 0.
Size (только чтение)
Size: Longint;
Размер потока в байтах.
Методы
Ниже описываются методы, определенные в данном объекте.
Init
constructor Init(MinSize, MaxSize: Longint);
Создает поток EMS с заданным минимальным и максимальным размером в байтах.
Вызывает TStream.Init, затем устанавливает Handle, Size и PageCount. Если
инициализация завершается неудачно, вызывает Error с аргументом stInitError.
См. также: TEmsStream.Done.
Done (никогда не переопределяется)
destructor Done; virtual;
Уничтожает поток EMS и освобождает используемые страницы EMS.
См. также: TEmsStream.Init.
GetPos (никогда не переопределяется)
function GetPos: Longint; virtual;
Возвращает значение текущей позиции в потоке.
См. также: TEmsStream.Seek.
GetSize (никогда не переопределяется)
function GetSize: Longint; virtual;
Возвращает общий размер потока.
Read (никогда не переопределяется)
B.Pascal 7 & Objects/OW - 464 -
-----------------------------------------------------------------
procedure Read(var Buf; Count: Word); virtual;
Считывает Count байт в буфер Buf, начиная с текущей позиции потока.
См. также: TEmsStream.Write, stReadError.
Seek (никогда не переопределяется)
procedure Seek(Pos: Longint); virtual;
Переустанавливает текущую позицию в Pos байт от начала потока.
См. также: TEmsStream.GetPos, TEmsStream.GetSize.
Truncate (никогда не переопределяется)
procedure Truncate; virtual;
Удаляет все данные из потока от текущей позиции до конца. Текущая позиция
устанавливается в новый конец потока.
См. также: TEmsStream.GetPos, TEmsStream.Seek.
Write (никогда не переопределяется)
procedure Write(var Buf; Count: Word); virtual;
Записывает Count байт из буфера в поток, начиная с текущей позиции.
См. также: TStream.Read, TEmsStream.GetPos, TEmsStream.Seek.
Константы tf_XXXX модуль OWindows
Назначение: Константы флага, начинающиеся с tf_, использует метод Transfer.
B.Pascal 7 & Objects/OW - 465 -
Значения: Определены следующие константы:
Константы функции Transfer Таблица 21.25
Константы Значение Смысл
tf_SizeDatatf_GetDatatf_SetData 012 Определяет размер переданных объ-ектом
данных.Считывает данные из объекта.Передает данные для установкизначения
объекта.
B.Pascal 7 & Objects/OW - 466 -
TFileDialog модуль OStdDlgs
TObject TWindowsObject
-------- ------------------------------------------
-------- | ChildList Parent |
|-Init-| | Flags Status |
|-Done-| | HWindow TransferBuffer |
| Free | | Instance |
-------- ------------------------------------------
|-Init-------- GetChildren |
|-Load-------- -GetClassName-------|
| Done GetClient |
| AddChild -GetId--------------|
| At GetSiblingPtr |
| Canclose -GetWindowClass-----|
| ChildWithId IndexOf |
| CloseWindow IsFlagSet |
| CMExit Next |
|-Create------ Previous |
| CreateChildren PutChildPtr |
| CreateMemoryDC PutChildren |
| DefChildProc PutSiblingPtr |
| DefCommandProc -Register-----------|
| DefNotificationProc RemoveChild |
|-DefWndProc-- SetFlags |
| Destroy -SetupWindow--------|
| Disable Show |
| DisableAutoCreate -Store--------------|
| DisableTransfer Transfer |
| DispatchScroll TransferData |
| Enable -WMActivate---------|
| EnableAutoCreate WMClose |
| EnableKBHandler WMCommand |
| EnableTransfer WMDestroy |
| FirstThat -WMNScroll----------|
| Focus WMNCDestroy |
| ForEach WMNQueryEndSession |
| GetChildPtr -WMVScroll----------|
------------------------------------------
B.Pascal 7 & Objects/OW - 467 -
TDialog TFileDialog
--------------------- -------------------
| Attr | | Caption |
| IsModal | | Extension |
--------------------- | FilePath |
|-Init--------------| | FileSpec |
| Load | | PathName |
| Done | -------------------
| Create | | Init |
| DefWndProc | | CanClose |
| EndDlg | | HandleDList |
| Execute | | HandleFList |
| GetItemHandle | | HandleFName |
| Ok | | SetupWindow |
| SendDlgItemMsg | -------------------
| Store |
| WMClose |
| WMInitDialog |
| WMPostInvalid |
| WMQueryEndSession |
---------------------
Файловые диалоговые блоки позволяют пользователю выбрать файл для открытия
или указать имя файла для сохранения.
Поля
Caption
Caption: PChar;
Указывает на строку, которая выводится в заголовке диалогового блока.
Если Caption имеет значение nil, то используется текст из диалогового
ресурса. Присвоив Caption другую строку, вы можете изменить заголовок.
Extension
Extension: array[0..fsExtension] of Char;
Содержит расширение для файлов. Если пользователь набирает имя файла без
расширения, то файловый диалоговый блок добавляет к имени Extension.
FilePath
FilePath: PChar;
Будучи установленным в значение, переданное в конструкторе, FilePath указывает
на буфер, который будет содержать выбранное пользователем имя маршрута.
Файловый диалоговый блок помещает в
B.Pascal 7 & Objects/OW - 468 -
буфер итоговое имя файла.
FileSpec
FileSpec: array[0..fsFileSpec] of Char;
Содержит спецификацию файла (обычно имя с трафаретными символами), которое
файловый диалоговый блок присоединяет к текущему выбранному маршруту.
PathName
PathName: array[0..fsPathName] of Char;
Содержит текущий выбранный маршрут каталога.
Методы
Ниже описываются методы, определенные в данном объекте.
Init
constructor Init(AParant: PWindowsObject; AName,
AFilePath: PChar);
Строит файловый диалоговый блок с порождающим окном AParent из диалогового
ресурса. Ресурс определяется значением, переданным в AName. Параметр AName
должен содержать одну из констант sd_XXXX, sd_FileOpen или sd_FileSave
и для определения характера создаваемого файлового блока (диалоговый блок
открытия файла или диалоговый блок сохранения файла) с помощью MakeIntResource
нужно привести его тип к PChar. На основе AName и значения в BWCCClassName
Init определяет, какой ресурс нужно задать для конструктора Init, наследуемого
из TDialog. Устанавливает Caption в nil, а FilePath - в AFilePath. AFilePath
должно указывать на буфер размера, достаточного для размещения полного
имени файла, обычно array[0..fsPathName] of Char.
CanClose
function CanClose: Boolean; virtual;
Возвращает True, если пользователь выбрал файл, что позволяет закрыть
диалоговый блок. Если текущий выделенный маршрут является каталогом или
содержит трафаретные символы, CanClose обновляет блоки списка файла и
каталога и возвращает False, указывая, что диалоговый блок закрывать не
следует.
SetupWindow
B.Pascal 7 & Objects/OW - 469 -
procedure SetupWindow; virtual;
Ограничивает число символов в имени файла значением fsPathName. Если Caption
не равно 0, устанавливает заголовок диалогового блока в Caption. копирует
FilePath в PathName, а расширение PathName - в Extension. Обновляет блоки
списка для соответствия текущему имени файла.
HandleFName
procedure HandleFName(var Msg: TMessage); virtual
id_First + id_FName;
Реагирует на изменения в управляющем элементе редактирования FileName,
разрешая или запрещая командную кнопку Ok. В противном случае разрешает
Ok.
HandleFList
procedure HandleFList(var Msg: TMessage); virtual;
id_First + id_FList;
Отвечает на уведомляющее сообщение от блока списка файлов обновлением
текущего имени файла и реагирует на двойной щелчок "мышью" на
имени файла. Если пользователь дважды щелкнул кнопкой "мыши",
вызывает для завершения диалогового блока Ok. Если блок списка потерял
фокус ввода, HandleFList отменяет выбор выделенных элементов.
HandleDList
procedure HandleDList(var Msg: TMessage); virtual
id_First + id_DList;
Реагирует на уведомляющие сообщения блока списка каталогов, обновляя текущее
имя файла, и на двойной щелчок на каталоге кнопкой "мыши". Если
блок списка потерял фокус ввода, HandleFList отменяет выбор выделенных
элементов.
B.Pascal 7 & Objects/OW - 470 -
TFileWindow OStdWnds
TObject TWindowsObject
-------- ------------------------------------------
-------- | ChildList Parent |
|-Init-| | Flags Status |
|-Done-| | HWindow TransferBuffer |
| Free | | Instance |
-------- ------------------------------------------
|-Init-------- GetChildren |
|-Load-------- -GetClassName-------|
| Done GetClient |
| AddChild -GetId--------------|
| At GetSiblingPtr |
| Canclose -GetWindowClass-----|
| ChildWithId IndexOf |
| CloseWindow IsFlagSet |
| CMExit Next |
|-Create------ Previous |
| CreateChildren PutChildPtr |
| CreateMemoryDC PutChildren |
| DefChildProc PutSiblingPtr |
| DefCommandProc -Register-----------|
| DefNotificationProc RemoveChild |
|-DefWndProc-- SetFlags |
| Destroy -SetupWindow--------|
| Disable Show |
| DisableAutoCreate -Store--------------|
| DisableTransfer Transfer |
| DispatchScroll TransferData |
| Enable -WMActivate---------|
| EnableAutoCreate WMClose |
| EnableKBHandler WMCommand |
| EnableTransfer WMDestroy |
| FirstThat -WMNScroll----------|
| Focus WMNCDestroy |
| ForEach WMNQueryEndSession |
| GetChildPtr -WMVScroll----------|
------------------------------------------
B.Pascal 7 & Objects/OW - 471 -
TWindow TEditWindow
--------------------- -------------------
| Attr | | Editor |
| DefaultProc | | SearchRec |
| Scrol[ler | -------------------
| FocusChildHandle | |-Init------------|
--------------------- |-Load------------|
|-Init--------------| | CMEditFind |
| InitResource | | CMEditFindNext |
|-Load--------------| | CMEditReplace |
| Done | |-Store-----------|
| Create | | WMSize |
| DefWndProc | | WMSetFocus |
| FocusChild | -------------------
| GetId |
| GetWindowClass | TFileWindow
| Paint | -------------------
| SetCaption | | FileName |
| SetupWindow | | IsNewFile |
|-Store-------------| -------------------
| UpdateFocusChild | | Init |
| WMActivate | | Load |
| WMHScroll | | CanClear |
| WMLButtonDown | | CanClose |
| WMMDIActivate | | CMFileNew |
| WMMove | | CMFileOpen |
| WMPaint | | CMFileSave |
|-WMSize------------| | CMFileSaveAs |
| WMSysCommand | | NewFile |
| WMVScroll | | Open |
--------------------- | Read |
| ReplaceWith |
| Save |
| SetFileName |
| SetupWindow |
| Store |
| Write |
-------------------
Файловое окно - это окно редактирования со специализированными методами
для чтения и записи редактируемого текста в файл. Подробности о полях
и методах TFileWindow вы можете узнать в оперативном справочнике Help.
B.Pascal 7 & Objects/OW - 472 -
------------------------------------------------------------------------
TFilterValidator модуль Validate
TObject TValidator TFileWindow
--------|-Init-||-Done-|| Free |-------- | Options| Status-----------------|-Init-----------|-Load-----------|-IsInvalid------|-IsValidInput---|-Store----------|
Transfer| Valid | | ValidChars || -------------------- | Init || | Load
|| | Error || | IsValid || | IsValidInput || -------------------||
Объекты фильтрации и проверки допустимости проверяют информацию, набираемую
пользователем в полях ввода. Механизм проверки допустимости содержит набор
допустимых символов. Если пользователь набирает один из разрешенных символов,
то фильтр проверки допустимости указывает, что символ допустим. Если пользователь
набрал любой другой символ, механизм проверки допустимости указывает,
что ввод недопустим.
Поля
ValidChars
ValidChars: TCharSet;
Содержит набор всех символов, которые может набирать пользователь. Например,
чтобы разрешить ввод только цифр, установите ValidChars в ['0'..'9'].
ValidChars устанавливается параметром AValidChars, переданным конструктору
Init.
Методы
Ниже описываются методы, определенные в данном объекте.
Init
constructor Init(AValidChars: TCharSet);
Строит объект фильтрации и проверки допустимости, вызывая сначала наследуемый
из TValidator конструктор Init, а затем устанавливая ValidChars в AValidChars.
Load
B.Pascal 7 & Objects/OW - 473 -
constructor Load(var S: TStream);
Строит и загружает объект фильтрации и проверки допустимости из потока
S, вызывая сначала наследуемый из TValidator конструктор Load, а затем
считывая набор допустимых символов в ValidChars.
См. также: TVAlidator.Load.
Error
procedure Error; virtual;
Выводит блок сообщений, указывающий, что текстовая строка содержит недопустимый
символ.
IsValid
function IsValid(const S: string): Boolean; virtual;
Возвращает значение True, если все символы в строке S содержатся в множестве
допустимых символов ValidChars. В противном случае возвращает False.
IsValidInput
function IsValid(const S: string; SuppressFill: Boolean):
Boolean; virtual;
Проверяет каждый символ в строке S на принадлежность к множеству допустимых
символов ValidChars. Возвращает True, если все символы в строке S допустимы.
В противном случае возвращается значение False.
Store
procedure Store(var S: TStream);
Сохраняет объект фильтрации и проверки допустимости в потоке S, записывая
ValidChars.
B.Pascal 7 & Objects/OW - 474 -
TGroupBox ODialogs
TObject TWindowsObject
-------- ------------------------------------------
-------- | ChildList Parent |
|-Init-| | Flags Status |
|-Done-| | HWindow TransferBuffer |
| Free | | Instance |
-------- ------------------------------------------
|-Init-------- GetChildren |
|-Load-------- -GetClassName-------|
| Done GetClient |
| AddChild -GetId--------------|
| At GetSiblingPtr |
| Canclose -GetWindowClass-----|
| ChildWithId IndexOf |
| CloseWindow IsFlagSet |
| CMExit Next |
|-Create------ Previous |
| CreateChildren PutChildPtr |
| CreateMemoryDC PutChildren |
| DefChildProc PutSiblingPtr |
| DefCommandProc -Register-----------|
| DefNotificationProc RemoveChild |
|-DefWndProc-- SetFlags |
| Destroy -SetupWindow--------|
| Disable Show |
| DisableAutoCreate -Store--------------|
| DisableTransfer Transfer |
| DispatchScroll TransferData |
| Enable -WMActivate---------|
| EnableAutoCreate WMClose |
| EnableKBHandler WMCommand |
| EnableTransfer WMDestroy |
| FirstThat -WMNScroll----------|
| Focus WMNCDestroy |
| ForEach WMNQueryEndSession |
| GetChildPtr -WMVScroll----------|
------------------------------------------
B.Pascal 7 & Objects/OW - 475 -
TWindow TControl
--------------------- -------------------
| Attr | -------------------
| DefaultProc | |-Init------------|
| Scrol[ler | |-InitResource----|
| FocusChildHandle | |-GetClassName----|
--------------------- | Register |
|-Init--------------| | WMPaint |
| InitResource | -------------------
|-Load--------------|
| Done | TGroupBox
| Create | -------------------
| DefWndProc | | NotifyParent |
| FocusChild | -------------------
| GetId | | Init |
| GetWindowClass | | InitResource |
| Paint | | Load |
| SetCaption | | GetClassName |
| SetupWindow | | SelectionChanged|
|-Store-------------| | Store |
| UpdateFocusChild | -------------------
| WMActivate |
| WMHScroll |
| WMLButtonDown |
| WMMDIActivate |
| WMMove |
| WMPaint |
|-WMSize------------|
| WMSysCommand |
| WMVScroll |
---------------------
Объект TGroupBox - это объект интеpфейса, пpедставляющий соответствующий
элемент, называемый в Windows гpупповым блоком. Хотя групповые блоки не
играют на экране активной роли, они визуально унифицируют группу блоков
выбора (кнопок с зависимой и независимой фиксацией). Однако "закулисно"
они играют важную роль в управлении состоянием своих блоков выбора. Например,
вы можете отреагировать на выбор пользователем одной кнопки отменой выбора
всех остальных.
Поля
NotifyParent
NotifyParent: Boolean;
Флаг, указывающий, должен ли уведомляться предок пpи изменении состояния
блоков выбоpа гpуппового блока. По умолчанию имеет значение True.
B.Pascal 7 & Objects/OW - 476 -
Методы
Ниже описываются методы, определенные в данном объекте.
Init (иногда переопределяется)
constructor Init(AParent: PWindowsObject; AnID: Integer;
AText: PChar; X, Y, W, H: Integer);
Создает объект гpуппового блока с пеpеданным порождающим окном (AParent),
идентификатоpом управляющего элемента (AnId), соответствующим текстом
(AText), позицией (X,Y) относительно начала области пользователя pодительского
окна, шиpиной (W) и высотой (H). Вызывает конструктор TControl.Init с
аналогичными параметрами, а затем добавляет стиль Windows Attr.Style и
удаляет стиль ws_TabStop из поля Attr.Style группового блока. NotifyParent
устанавливается в значение True. По умолчанию предок гpуппового блока
уведомляется пpи изменении состояния блоков выбоpа.
См. также: TControl.Init.
InitResource
constructor InitResource(AParent: PWindowsObject;
ResourceID: Word);
Связывает объект группового блока с управляющим элементом в ресурсе, заданном
параметром ResourceID, вызывая конструктор InitResource, наследуемый из
TControl. Для исключения группового блока из механизма передачи вызывает
DisableTransfer (поскольку данных для передачи нет).
Load
constructor Load(var S: TStream);
Строит и загружает групповой блок из потока S, вызывая сначала TConstrol.Load,
а затем считывая дополнительное поле (NotifyParent), введенное в TGroupBox.
См. также: TControl.Load.
GetClassName (иногда переопределяется)
function GetClassName: PChar; virtual;
Возвpащает имя класса окна объекта TGroupBox - 'Button'.
B.Pascal 7 & Objects/OW - 477 -
SelectionChanged (иногда переопределяется)
procedure SelectionChanged(ControlD: Integer); virtual;
Если NotifyParent имеет значение True, уведомляет порождающее окно гpуппового
блока, что один из выбоpов изменился, посылая ему сообщение, базиpующееся
на дочеpнем идентификатоpе. Этот метод можно пеpеопpеделить, чтобы гpупповой
блок мог pеагиpовать на его выбоpы.
Store
procedure Stroe(var S: TStream);
Записывает групповой блок в поток S, вызывая сначала TControl.Store, а
затем записывая дополнительное поле (NotifyParent), введенное в TGroupBox.
См. также: TControlStore.
B.Pascal 7 & Objects/OW - 478 -
TInputDialog модуль OStdDlgs
TObject TWindowsObject
-------- ------------------------------------------
-------- | ChildList Parent |
|-Init-| | Flags Status |
|-Done-| | HWindow TransferBuffer |
| Free | | Instance |
-------- ------------------------------------------
|-Init-------- GetChildren |
|-Load-------- -GetClassName-------|
| Done GetClient |
| AddChild -GetId--------------|
| At GetSiblingPtr |
| Canclose -GetWindowClass-----|
| ChildWithId IndexOf |
| CloseWindow IsFlagSet |
| CMExit Next |
|-Create------ Previous |
| CreateChildren PutChildPtr |
| CreateMemoryDC PutChildren |
| DefChildProc PutSiblingPtr |
| DefCommandProc -Register-----------|
| DefNotificationProc RemoveChild |
|-DefWndProc-- SetFlags |
| Destroy -SetupWindow--------|
| Disable Show |
| DisableAutoCreate -Store--------------|
| DisableTransfer Transfer |
| DispatchScroll TransferData |
| Enable -WMActivate---------|
| EnableAutoCreate WMClose |
| EnableKBHandler WMCommand |
| EnableTransfer WMDestroy |
| FirstThat -WMNScroll----------|
| Focus WMNCDestroy |
| ForEach WMNQueryEndSession |
| GetChildPtr -WMVScroll----------|
------------------------------------------
B.Pascal 7 & Objects/OW - 479 -
TDialog TInputDialog
--------------------- -------------------
| Attr | | Caption |
| IsModal | | Prompt |
--------------------- | Buffer |
|-Init--------------| | BufferSize |
| Load | -------------------
| Done | | Init |
| Create | | CanClose |
| DefWndProc | | SetupWindow |
| EndDlg | -------------------
| Execute |
| GetItemHandle |
| Ok |
| SendDlgItemMsg |
| Store |
| WMClose |
| WMInitDialog |
| WMPostInvalid |
| WMQueryEndSession |
---------------------
Объект TInputDialog обеспечивает общее диалоговое окно для получения текстового
ввода от пользователя (одной строки текста).
Поля
Buffer
Buffer: PChar;
Указывает на буфер, возвращающий текстовый ввод пользователя. При передаче
конструктору диалогового окна ввода содержит используемый по умолчанию
текст, который первоначально выводится в редактируемом управляющем элементе.
BufferSize
BufferSize: Word;
Содержит размер буфера, который возвращает ввод пользователя.
Caption
Caption: PChar;
Указывает на строку, которая выводится в качестве заголовка диалогового
окна.
Prompt
B.Pascal 7 & Objects/OW - 480 -
Prompt: PChar;
Указывает на подсказку диалогового окна ввода, которая выводится над строкой
ввода.
Методы
Ниже описываются методы, определенные в данном объекте.
Init
constructor Init(AParent: PWindowsObject;
ACaption, APrompt, ABuffer: PChar; ABufferSize: Word);
Строит файловый диалоговый блок с порождающим окном, переданным в параметре
AParent, вызывая наследуемый от TDialog конструктор Init. Имя шаблона
ресурса определяется поиском в BWCCClassName. Если приложение использует
BWCC, диалоговый блок ввода будет использовать ресурс BWCC. В противном
случае используется обычный диалоговый блок Windows.
См. также: TDialog.Init.
CanClose
function CanClose: Boolean; virtual;
Считывает в буфер Buffer из управляющего элемента редактирования диалогового
блока до BufferSize символов, затем возвращает True, указывая, что диалоговый
блок можно закрыть.
SetupWindow
procedure SetupWindow; virtual;
При установке окна вызывает метод SetupWindow, наследуемый из TDialog,
затем устанавливает заголовок диалогового блока в соответствие со строкой
Caption. Текст подсказки устанавливает в Prompt, текст буфера - в Buffer,
а затем ограничивает число вводимых пользователем символов значением BufferSize
- 1.
Тип TItemList модуль Objects
Описание:
TItemList = array[0..MaxCollectionSize - 1] of Pointer;
B.Pascal 7 & Objects/OW - 481 -
Назначение: Массив общих указателей, предназначенных для внутреннего использования
в TCollection.
B.Pascal 7 & Objects/OW - 482 -
TListBox модуль ODialogs
TObject TWindowsObject
-------- ------------------------------------------
-------- | ChildList Parent |
|-Init-| | Flags Status |
|-Done-| | HWindow TransferBuffer |
| Free | | Instance |
-------- ------------------------------------------
|-Init-------- GetChildren |
|-Load-------- -GetClassName-------|
| Done GetClient |
| AddChild -GetId--------------|
| At GetSiblingPtr |
| Canclose -GetWindowClass-----|
| ChildWithId IndexOf |
| CloseWindow IsFlagSet |
| CMExit Next |
|-Create------ Previous |
| CreateChildren PutChildPtr |
| CreateMemoryDC PutChildren |
| DefChildProc PutSiblingPtr |
| DefCommandProc -Register-----------|
| DefNotificationProc RemoveChild |
|-DefWndProc-- SetFlags |
| Destroy -SetupWindow--------|
| Disable Show |
| DisableAutoCreate -Store--------------|
| DisableTransfer Transfer |
| DispatchScroll TransferData |
| Enable -WMActivate---------|
| EnableAutoCreate WMClose |
| EnableKBHandler WMCommand |
| EnableTransfer WMDestroy |
| FirstThat -WMNScroll----------|
| Focus WMNCDestroy |
| ForEach WMNQueryEndSession |
| GetChildPtr -WMVScroll----------|
------------------------------------------
B.Pascal 7 & Objects/OW - 483 -
TWindow TControl
--------------------- -------------------
| Attr | -------------------
| DefaultProc | |-Init------------|
| Scrol[ler | | InitResource |
| FocusChildHandle | |-GetClassName----|
--------------------- | Register |
|-Init--------------| | WMPaint |
| InitResource | -------------------
|-Load--------------|
| Done | TListBox
| Create | -------------------
| DefWndProc | -------------------
| FocusChild | | Init |
| GetId | | AddString |
| GetWindowClass | | ClearList |
| Paint | | DeleteString |
| SetCaption | | GetClassName |
| SetupWindow | | GetCount |
|-Store-------------| | GetMsgID |
| UpdateFocusChild | | GetSelIndex |
| WMActivate | | GetSelString |
| WMHScroll | | GetString |
| WMLButtonDown | | GetStringLen |
| WMMDIActivate | | InsertSrtring |
| WMMove | | SetSelIndex |
| WMPaint | | SetSelString |
|-WMSize------------| | Transfer |
| WMSysCommand | -------------------
| WMVScroll |
---------------------
Объект TListBox - это объект интеpфейса, пpедставляющий соответствующий
элемент, называемый в Windows блоком cписка. Классы TListBox обычно используются
в качестве экземпляров своих потомков TComboBox.
Методы
Ниже описываются методы, определенные в данном объекте.
Init
constructor Init(AParent: PWindowsObject; AnId: Integer;
X, Y, W, H: Integer);
Создает объект блока списка с пеpеданным порождающим окном (AParent),
упpавляющим идентификатоpом (AnId), позицией (X,Y) относительно начала
области пользователя порождающего окна, шиpиной (W) и высотой (H). Вызывает
TControl.Init и добавляет к полю
B.Pascal 7 & Objects/OW - 484 -
Attr.Style объекта блока списка константу lbs_Standard, дающую полосу
пpокpутки со следующими элементами:
- гpаницей (ws_Border);
- веpтикальной полосой пpокpутки (ws_VScroll);
- автоматической соpтиpовкой по алфавиту элементов списка (lbs_Sort);
- уведомлением порождающего окна пpи выбоpе (lbs_Notify).
В наследующих объектах или в конструкторе Init порождающего оконного объекта
блока списка эти стили могут переопределяться.
AddString (иногда переопределяется)
function AddString(AString: PChar): Integer; virtual;
Добавляет AString (как элемент списка) в объект блока списка и возвpащает
индекс позиции элемента (начинающийся с нуля) или отpицательное значение
в случае ошибки. Элементы списка автоматически соpтиpуются, если только
до создания из поля Attr.Style объекта блока списка не был удален стиль
lbs_Sort.
ClearList (иногда переопределяется)
procedure ClearList; virtual;
Удаляет из блока списка все элементы списка.
DeleteString (иногда переопределяется)
function DeleteString(Index: Integer): Integer; virtual;
Удаляет элемент списка с индексом позиции (начинающимся с нуля), пеpеданным
в Index. DeleteString возвpащает число оставшихся элементов списка или,
в случае ошибки, отpицательное значение.
GetClassName (переопределяется редко)
function GetClassName: Integer; virtual;
Возвpащает имя класса окна TListBox - 'ListBox'.
GetCount (никогда не переопределяется)
B.Pascal 7 & Objects/OW - 485 -
function GetCount: Integer; virtual;
Возвращает число элементов в блоке списка или отрицательное значение в
случае ошибки.
GetMsgID
function GetMsgID(AMsg: TMsgName): Word; virtual;
Транслирует сообщения блока списка для использования в TComboBox.
GetSelIndex (переопределяется редко)
function GetSelIndex: Integer; virtual;
Возвpащает индекс позиции (начинающийся с нуля) выделенного в данный момент
элемента списка или отpицательное значение, если выделенного элемента
нет.
GetSelString (переопределяется редко)
function GetSelString(AString: PChar; Index: Integer):
Integer; virtual;
Удаляет текущий выделенный элемент списка, если его длина не превышает
MaxChars, и возвращает его в AString. Функция GetSelString возвpащает
длину стpоки или, в случае ошибки, отpицательное значение.
GetString (переопределяется редко)
function GetString(AString: PChar; Index: Integer):
Integer; virtual;
Извлекает элемент в позиции (отсчитывающейся с 0), переданной в параметре
Index, и возвращает его в AString. Функция GetString возвращает длину
строки или отрицательное значение в случае ошибки.
GetStringLen (переопределяется редко)
function GetStringLen(Index: Integer): Integer; virtual;
Возвращает длину строки элемента блока списка в позиции, заданной параметром
Index, и возвpащает длину стpоки или отpицательное значение в случае ошибки.
B.Pascal 7 & Objects/OW - 486 -
InsertString (иногда переопределяется)
function InsertString(AString: PChar; Index: Integer)
Integer; virtual;
Вставляет строку AString в позиции, заданной параметром Index, и возвращает
фактическую позицию элемента (которая отсчитывается с 0) в списке. В случае
ошибки возвращается отрицательное значение. Пересортировка списка не выполняется.
Если параметр Index имеет значение -1, то строка присоединяется к концу
списка.
SetSelIndex (переопределяется редко)
function SetSelIndex(Index: Integer): Integer; virtual;
Устанавливает выбоp элемента списка в индексе позиции (начинающемся с
нуля), пеpеданном в Index. Если Index = -1, блок списка очищается от любого
выбоpа. В случае ошибки возвpащается отpицательное число.
SetSelString (переопределяется редко)
function GetSelString(AString: PChar; AIndex: Integer):
Integer; virtual;
Устанавливает выбоp пеpвого элемента списка, совпадающего с текстом, пеpеданным
в AString, котоpый встpечается после индекса позиции (начинающегося с
нуля), пеpеданного в AIndex. Функция SetSelString возвpащает индекс позиции
вновь выделенного элемента или, в случае ошибки, отpицательное значение.
Transfer (иногда переопределяется)
function Transfer(DataPtr: Pointer; TransferFlag: Word):
Word; virtual;
Пеpедает элементы и выделения элементов блока списка в/из буфера пеpедачи.
Если TransferFlag имеет значение tf_GetData, данные блока списка передаются
по адресу памяти. В случае значения tf_SetData блок списка загружается
данными из памяти. Предполагается, что TransferBuffer указывает на объект
PTListBoxData, который используется для блока списка, как буфер передачи.
Характер записи может изменяться в зависимости от того, допускает ли блок
выделение нескольких строк. Первый передаваемый элемент всегда представляет
собой указатель на набор строк, являющихся записями блока списка. Для
однострочных блоков списка этот указатель сопровождается целочисленными
индексом выделенного элемента. Для блоков списка с возможностью выбора
нескольких строк
B.Pascal 7 & Objects/OW - 487 -
за указателем набора следует указатель на запись TMultiSelRec,
содержащую массив целых чисел, каждая из которых указывает на выделенный
элемент.
Типичная запись передачи для блока списка выглядит следующим образом:
type
TListBoxXferRec = record одиночный выбор
Strings: PStrCollection;
Selection: Integer; end;
TMultiListBoxXferRec = record множественный выбор
Strings: PStrCollection;
Selection: PMultiSelRec; end;
PMultiSelRec - это запись, определенная в модуле ODialogs. Запись должна
выделяться с помощью функции AllocMultiSel, а освобождаться - с помощью
FreeMultiSel. Указатель nil указывает на отсутствие выбранных элементов.
B.Pascal 7 & Objects/OW - 488 -
TLookupValidator модуль Validate
TObject TValidator TFileWindow
-------- ------------------- -------------
-------- | Options | -------------
|-Init-| | Status | | IsValid |
| Done | ------------------- | Lookup |
| Free | | Init | -------------
-------- | Load |
|-IsInvalid-------|
| IsValidInput |
| Store |
| Transfer |
| Valid |
-------------------
Средство проверки допустимости с просмотром сравнивает набранную пользователем
строку со списком допустимых значений. TLookupValidator - это абстрактный
тип проверки допустимости, из которого вы можете создать полезные производные
механизмы проверки допустимости с просмотром. При создании типа проверки
допустимости с просмотром вам нужно задать список допустимых элементов
и переопределить метод Lookup, чтобы он возвращал True только в том случае,
если ввод пользователя совпадает с элементами списка. Одним из примеров
работающего потомка TLookupValidator является TStringLookupValidator.
Методы
Ниже описываются методы, определенные в данном объекте.
IsValid (переопределяется редко)
function IsValid(const S: string): Boolean; virtual;
Для поиска строки S в списке допустимых элементов ввода вызывает Lookup.
Возвращает True, если Lookup возвращает True, что означает, что Lookup
нашла S в своем списке. В противном случае возвращается False.
См. также: TLookupValidator.Lookup.
Lookup (часто переопределяется)
Ищет строку S в списке допустимых элементов и возвращает True, если строка
там найдена. В противном случае возвращает значение False. Функция Lookup
объекта TLookupValidator - это абстрактный метод, который всегда возвращает
False. Наследующие типы проверки допустимости с просмотром должны переопределять
Lookup и
B.Pascal 7 & Objects/OW - 489 -
выполнять поиск на основе фактического списка допустимых элементов.
B.Pascal 7 & Objects/OW - 490 -
TMDIClient модуль OWindows
TObject TWindowsObject
-------- ------------------------------------------
-------- | ChildList Parent |
|-Init-| | Flags Status |
|-Done-| | HWindow TransferBuffer |
| Free | | Instance |
-------- ------------------------------------------
|-Init-------- GetChildren |
|-Load-------- -GetClassName-------|
| Done GetClient |
| AddChild -GetId--------------|
| At GetSiblingPtr |
| Canclose -GetWindowClass-----|
| ChildWithId IndexOf |
| CloseWindow IsFlagSet |
| CMExit Next |
|-Create------ Previous |
| CreateChildren PutChildPtr |
| CreateMemoryDC PutChildren |
| DefChildProc PutSiblingPtr |
| DefCommandProc -Register-----------|
| DefNotificationProc RemoveChild |
|-DefWndProc-- SetFlags |
| Destroy -SetupWindow--------|
| Disable Show |
| DisableAutoCreate -Store--------------|
| DisableTransfer Transfer |
| DispatchScroll TransferData |
| Enable -WMActivate---------|
| EnableAutoCreate WMClose |
| EnableKBHandler WMCommand |
| EnableTransfer WMDestroy |
| FirstThat -WMNScroll----------|
| Focus WMNCDestroy |
| ForEach WMNQueryEndSession |
| GetChildPtr -WMVScroll----------|
------------------------------------------
B.Pascal 7 & Objects/OW - 491 -
TWindow TMDIClient
--------------------- -------------------
| Attr | | ClientAttr |
| DefaultProc | -------------------
| Scrol[ler | | Init |
| FocusChildHandle | | ArrangeIcons |
--------------------- | CascadeChildren |
|-Init--------------| | GetClassName |
| InitResource | | Register |
|-Load--------------| | Store |
| Done | | TitleChildren |
| Create | | WMPaint |
| DefWndProc | -------------------
| FocusChild |
| GetId |
| GetWindowClass |
| Paint |
| SetCaption |
| SetupWindow |
|-Store-------------|
| UpdateFocusChild |
| WMActivate |
| WMHScroll |
| WMLButtonDown |
| WMMDIActivate |
| WMMove |
| WMPaint |
|-WMSize------------|
| WMSysCommand |
| WMVScroll |
---------------------
Пользовательские окна интерфейса работы с документами (MDI), представляемые
объектом TDMIClient, управляют дочерними окнами MDI приложения MDI. Методы
TMDIClient предназначены для работы с дочерними окнами MDI.
В более ранних версиях ObjectWindows TMDIClient наследовал из TControl.
В данной версии TMDIClient является прямым потомком TWindow.
Поля
ClientAttr
ClientAttr: TClientCreateStruct;
ClientAttr содержит запись атрибутов окна клиента MDI. TClientCreateStruct
определен следующим образом:
type
B.Pascal 7 & Objects/OW - 492 -
PClientCreateStruct = ^TClientCreateStruct;
TClientCreateStruct = record hWindowMenu: THandle; idFirstChild: Word;
end;
Методы
Ниже описываются методы, определенные в данном объекте.
Init (переопределяется редко)
constructor Init(AParent: PMDIWindow);
Создает объект пользовательского окна MDI c AParent в качестве порождающего
окна. Вызывает конструктор Init, наследуемый из TWindow, затем добавляет
в Attr.Style стиль ws_ClipChildren. Кроме того, Init удаляет окно клиента
из списка порожденных окон его предка, так что оно не интерпретируется
(как другие дочерние окна) как блоки списка и командные кнопки.
См. также: TWindow.Init.
Load
constructor Load(var S: TStream);
Строит и загружает окно клиента MDI из потока S, вызывая сначала TControl.Load,
а затем считывая дополнительное поле (CLientAttr), введенное TMDIClient.
См. также: TControl.Load.
ArrangeIcons (переопределяется редко)
procedure ArrangeIcons; virtual;
Упорядочивает и минимизирует порожденные окна MDI в нижней части окна
клиента MDI.
CascadeChildren (переопределяется редко)
procedure CascadeChildren; virtual;
Настраивает размер и упорядочивает все неминимизированные дочерние окна
MDI в окне клиента MDI. Дочерние окна могут перекрываться, хотя заголовок
каждого окна остается видимым.
B.Pascal 7 & Objects/OW - 493 -
GetClassName (никогда не переопределяется)
function GetClassName: PChar; virtual;
Возвpащает имя класса окна объекта TDMIClient - 'MDIClient'.
Register
function Register: Boolean; virtual;
Возвращает True, поскольку класс окна клиента MDI предварительно зарегистрирован
в Windows.
См. также: TWindowsObject.Register.
Store
procedure Store(var S: TStream);
Сохраняет окно клиента MDI в потоке S, вызывая сначала TControl.Store,
а затем записывая дополнительное поле (ClientAttr), введенное в TMDIClient.
См. также: TControl.Store.
TileChildren (переопределяется редко)
procedure TileChildren; virtual;
Настраивает размер и упорядочивает все безпиктограммные дочерние окна
MDI в окне клиента MDI. Порожденные окна будут заполнять область пользователя
без перекрытия.
WMPaint (никогда не переопределяется)
procedure WMPaint(var Msg: TMessage); virtual
wm_First + wm_Paint;
Для отображения окна (как стандартного класса Windows) вызывает DefWndProc.
B.Pascal 7 & Objects/OW - 494 -
TMDIWindow модуль OWindows
TObject TWindowsObject
-------- ------------------------------------------
-------- | ChildList Parent |
|-Init-| | Flags Status |
|-Done-| | HWindow TransferBuffer |
| Free | | Instance |
-------- ------------------------------------------
|-Init-------- GetChildren |
|-Load-------- -GetClassName-------|
| Done GetClient |
| AddChild -GetId--------------|
| At GetSiblingPtr |
| Canclose -GetWindowClass-----|
| ChildWithId IndexOf |
| CloseWindow IsFlagSet |
| CMExit Next |
|-Create------ Previous |
| CreateChildren PutChildPtr |
| CreateMemoryDC PutChildren |
| DefChildProc PutSiblingPtr |
| DefCommandProc -Register-----------|
| DefNotificationProc RemoveChild |
|-DefWndProc-- SetFlags |
| Destroy -SetupWindow--------|
| Disable Show |
| DisableAutoCreate -Store--------------|
| DisableTransfer Transfer |
| DispatchScroll TransferData |
| Enable -WMActivate---------|
| EnableAutoCreate WMClose |
| EnableKBHandler WMCommand |
| EnableTransfer WMDestroy |
| FirstThat -WMNScroll----------|
| Focus WMNCDestroy |
| ForEach WMNQueryEndSession |
| GetChildPtr -WMVScroll----------|
------------------------------------------
B.Pascal 7 & Objects/OW - 495 -
TWindow TMDIWindow
--------------------- ---------------------
| Attr | | ChildMenuPos |
| DefaultProc | | ClientWnd |
| Scrol[ler | ---------------------
| FocusChildHandle | | Init |
--------------------- | Load |
|-Init--------------| | Done |
| InitResource | | ArrangeIcons |
|-Load--------------| | CascadeChildren |
|-Done--------------| | CloseChildren |
| Create | | CMArrangeIcons |
|-DefWndProc--------| | CMCascadeChildren |
| FocusChild | | CMCloseChildren |
| GetId | | CreateChild |
|-GetWindowClass----| | DefWndProc |
| Paint | | GetClassName |
| SetCaption | | GetClient |
| SetupWindow | | GetWindowClass |
|-Store-------------| | GetClient |
| UpdateFocusChild | | GetWindowClass |
| WMActivate | | InitChild |
| WMHScroll | | InitClientWindow |
| WMLButtonDown | | SetupWindow |
| WMMDIActivate | | Store |
| WMMove | | TileChildren |
| WMPaint | ---------------------
| WMSize |
| WMSysCommand |
| WMVScroll |
---------------------
Пользовательские окна-рамки интерфейса работы с документами (MDI), представляемые
объектом TDMIWindow, представляют собой перекрываемые окна, которые используются
в качестве основных окон прикладной программы MDI. Одним из основных средств
объекта TDMIWindow является его собственный объект TMDIClient и сохранение
его в поле ClientWnd. Другое средство - это меню дочернего окна, предлагающее
возможности для работы с дочерними окнами приложения MDI. Для отражения
всех выводимых на экран дочерних окон это окно автоматически получает
уведомление.
Поля
ChildMenuPos (чтение/запись)
ChildMenuPos: Integer;
ChildMenuPos определяет индекс, задающий позицию управляющего меню дочернего
окна. В индексе учитываются только элементы верхнего уровня, а верхний
левый элемент занимает нулевую пози-
B.Pascal 7 & Objects/OW - 496 -
цию.
ClientWnd (только чтение)
ClientWnd: PMDIClient;
ClientWnd указывает на обрамляющее окно (окно-рамку) окна клиента MDI,
экземпляр объекта TMDIClient.
Методы
Ниже описываются методы, определенные в данном объекте.
Init (часто переопределяется)
constructor Init(ATitle: PChar; AMenu: HMenu);
Строит объект окна-рамки MDI, используя заданный заголовок ATitle и меню,
переданное в AMenu. Окна-рамки MDI требуют наличия меню. Окна-рамки не
имеют порождающего окна и должны быть основным окном приложения. По умолчанию
Init устанавливает ChildMenuPos в ноль, указывая, что меню дочернего окна
- это меню верхнего уровня. Чтобы модифицировать ChildPos, переопределите
в наследующих типах TMDIWindow.Init, например:
constructor MyMDIWindow.Init(ATitle: PChar; AMenu: HMenu);
begin
TMDIWindow.Init(ATitle, AMenu);
ChildMenuPos := 3; end;
См. также: TMDIWindow.InitClientWindow.
Load
constructor Load(var S: TStream);
Строит и загружает окно-рамку MDI из потока S, вызывая сначала TWindow.Load,
а затем получая и считывая дополнительные поля (ClientWnd и ChildMenuPos),
введенные в TMDIWindow.
См. также TWindow.Load.
Done (иногда переопределяется)
destructor Done; virtual;
Перед вызовом для уничтожения оконного объекта окна-рамки MDI наследуемого
из TWindow деструктора Done уничтожает объект
B.Pascal 7 & Objects/OW - 497 -
окна клиента MDI, записанный в ClientWnd.
См. также: TWindow.Done.
ArrangeIcons (переопределяется редко)
procedure ArrangeIcons;
Упорядочивает порожденные окна MDI с пиктограммами в нижней части пользовательского
окна MDI. Вызывает метод ClientWnd^.ArrangeIcons.
См. также: TMDIClient.ArrangeIcons.
CascadeChildren (переопределяется редко)
procedure CascadeChildren;
Настраивает размер и упорядочивает все безпиктограммные (неминимизированные)
дочерние окна MDI в окне клиента MDI, так что они перекрываются и выводится
заголовок каждого окна. Вызывает ClientWnd^.CascadeChildren.
См. также: TMDIClient.CascadeChildren.
CloseChildren (переопределяется редко)
procedure CloseChildren;
Завершает все созданные дочерние окна MDI, для которых CanClose возвращает
True.
См. также: TWindow.CanClose.
CMArrangeIcons (переопределяется редко)
procedure CMArrangeIcons(var Msg: TMessage); virtual
cm_First + cm_ArrangeIcons;
Вызывая ArrangeIcons, отвечает на выбор меню с идентификатором cm_ArrangeIcons.
См. также: TDMIWindow.ArrangeIcons.
CMCascadeChildren (переопределяется редко)
procedure CMCascadeChildren(var Msg: TMessage); virtual
cm_First + cm_CascadeChildren;
B.Pascal 7 & Objects/OW - 498 -
Вызывая CascadeChildren, отвечает на выбор меню с идентификатором cm_CascadeChildren.
См. также: TDMIWindow.CascadeChildren.
CMCreateChild (никогда не переопределяется)
procedure CMCreateChild(Msg: TMessage); virtual
cm_First + cm_CloseChildren;
Вызывая CreateChild, отвечает на выбор меню с идентификатором cm_CloseChildren.
См. также: TDMIWindow.CreateChild.
CMTileChildren (переопределяется редко)
procedure CMTileChildren(var Msg: TMessage); virtual
cm_First + cm_TileChildren;
Вызывая TileChildren, отвечает на выбор меню с идентификатором cm_TileChildren.
См. также: TDMIWindow.InitChild.
CreateChild
function CreateChild: PTWindowObject; virtual;
Вызывая InitChild и MakeWindow, строит и создает новое дочернее окно MDI.
Вам нужно переопределить CreateChild, для наследующих дочерних оконных
типов MDI аналогично TMDIWindow.InitChild. CreateChild возвращает указатель
на новое порожденное окно MDI.
См. также: TDMIWindow.InitChild, TApplication.MakeWindow.
DefWndProc
procedure DefWndProc(var Msg: TMessage); virtual;
Переопределяет выполняемую по умолчанию в TWindow обработку сообщений
Windows, вызывая вместо DefWindowProc функцию Windows DefFrameProc.
GetClassName (иногда переопределяется)
B.Pascal 7 & Objects/OW - 499 -
function GetClassName: PChar; virtual;
Возвpащает имя класса окна Windows объекта TDMIWindow - 'TurboMDIWindow'.
GetClient (никогда не переопределяется)
function CetClient: PTMDIClient; virtual;
Возвращает указатель на окно клиента MDI, сохраненное в ClientWnd.
GetWindowClass (иногда переопределяется)
procedure GetWindowClass(var AWndClass: TWndClass); virtual;
Модифицирует используемую по умолчанию запись класса окна и передает ее
обратно в AWndClass. GetWindowClass устанавливает поле стиля в 0 и удаляет
стили, установленные TWindow.GetWindowClass.
См. также: TWindow.GetWindowClass.
InitChild (часто переопределяется)
function InitChild: PTWindowsObject; virtual;
Строит объект дочернего окна MDI (TWindow) с заголовком 'MDI Child' и
возвращает указатель на него. Если вы определите тип дочернего окна MDI,
наследующий из TWindow, для построения окна своего нового дочернего оконного
типа MDI переопределите TMDIWindow.InitChild, например:
function MyMDIWindow.InitChild: PWindowsObject;
begin
InitChild := New(PMyMDIChild, Init(@Self,
'Окно без заголовка');
end;
См. также: TDMIWindow.CreateChild.
InitClientWindow (иногда переопределяется)
procedure InitClientWindow; virtual;
Строит окно клиента MDI как экземпляр объекта TMDIClient, сохраняя его
в ClientWnd.
SetupWindow (часто переопределяется)
B.Pascal 7 & Objects/OW - 500 -
-----------------------------------------------------------------
procedure SetupWindow; virtual;
Строит окно клиента MDI (ClientWnd) соответствующего оконного элемента
объекта, вызывая InitClientWindow, и создает его с помощью вызова MakeWindow.
Если вы в наследующем типе переопределите SetupWindow, убедитесь в наличии
явного вызова TDMIWindow.SetupWindow.
См. также: TMDIWindow.InitClientWindow,
TApplication.MakeWindow.
Store
procedure Store(var S: TStream);
Сохраняет окно MDI в потоке S, вызывая сначала
TWindow.Store, а затем помещая и записывая дополнительные поля (ClientWnd
и ChildMenuPos), введенные в TMDIWindow.
См. также: TWindow.Store.
TileChildren (переопределяется редко)
procedure TileChildren;
Вызывая ClientWnd^.TileChildren, настраивает размер и упорядочивает все
безпиктограммные дочерние окна MDI в окне клиента MDI, так что будет использовано
без перекрытия все доступное пространство.
См. также: TMDIClient.TileChildren.
B.Pascal 7 & Objects/OW - 501 -
Тип TMessage модуль OWindows
Описание:
TMessage = record
Reseiver: HWnd;
Message: Word; case Integer of
0: (WParam: Word; LParam: Longint; Result: Longint);
1: (WParamLo: Byte;
WParamHi: Byte;
LParamLo: Word;
LParamHi: Word;
ResultLo: Word;
ResultHi: Word);
end;
Назначение: Цикл сообщения в TApplication упаковывает информацию сообщения
Windows в записи TMessage перед передачей информации вместе с соответствующим
методом реакции на сообщение.
См. также: TApplication.MessageLoop.
Тип TMultiSelRec модуль ODialogs
Описание:
TMultiSelRec = record
Count: Integer;
Selections: array[0..0] of Integer; end;
TMultiSelRec содержит список выделенных элементов для передачи в блок
списка с множественным выбором или из него. Count указывает число выделенных
элементов, а Selection - это открытый массив целых значений. Используя
Al[locMultiSel, вы можете распределить запись с достаточным для используемого
блока списка числом выделяемых элементов.
См. также: AllocMultiSel, FreeMultiSel.
B.Pascal 7 & Objects/OW - 502 -
TObject модуль Objects
TObject
--------
InitDoneFree
TObject - это отправная точка иерархии объектов
ObjectWindows. Как базовый объект, он не имеет предков, но имеет много
потомков. Все стандартные объекты ObjectWindows в конечном счете являются
производными от TObject. Любой объект, использующий потоковые средства
ObjectWindows, должен отслеживать наследование обратно к TObjects.
Методы
Ниже описываются методы, определенные в данном объекте.
Init
constructor Init;
Выделяет для объекта пространство в динамически распределяемой области
памяти. Вызывается конструкторами всех производных объектов.
Free
procedure Free;
Уничтожает объект и вызывает деструктор Done.
Done
destructor Done; virtual;
Выполняет необходимую очистку и освобождение динамических объектов.
Тип TPaintStruct модуль WinTypes
Описание:
TPaintStruct = record
B.Pascal 7 & Objects/OW - 503 -
hdc: HDC;
fErase: Bool;
rcPaint: TRect;
fRestore: Bool;
fIncUpdate: Bool;
rgbReserved: array[0..15] of Byte;
end;
Назначение: Запись TPaintStruct содержит информацию, используемую приложением
для отображения областей клиента окон. Большая часть информации резервируется
для внутреннего использования в Windows, но несколько полей могут использоваться
пользователем.
Поле hdc - это описатель контекста дисплея, на котором происходит отображение.
fErase указывает, требуется ли повторно отображать фон (отображение происходит
в случае ненулевого значения). rcPaint определяет прямоугольник, в котором
происходит отображение.
Все другие поля резервируются для внутреннего использования в Windows.
Тип TPicResult модуль Validate
Описание:
TPicResult = (prComplete, prIncomplete, prEmpty, prError, prSyntax, prAmbiguous,
prIncompNoFill);
Назначение: TPicResult - это тип, возвращаемый методом Picture объекта
TPCPictureValidator.
См. также: TPCPictureValidator.
B.Pascal 7 & Objects/OW - 504 -
TPrintDialog модуль OPrinter
TObject TWindowsObject
-------- ------------------------------------------
-------- | ChildList Parent |
|-Init-| | Flags Status |
|-Done-| | HWindow TransferBuffer |
| Free | | Instance |
-------- ------------------------------------------
|-Init-------- GetChildren |
|-Load-------- -GetClassName-------|
| Done GetClient |
| AddChild -GetId--------------|
| At GetSiblingPtr |
| Canclose -GetWindowClass-----|
| ChildWithId IndexOf |
| CloseWindow IsFlagSet |
| CMExit Next |
|-Create------ Previous |
| CreateChildren PutChildPtr |
| CreateMemoryDC PutChildren |
| DefChildProc PutSiblingPtr |
| DefCommandProc -Register-----------|
| DefNotificationProc RemoveChild |
|-DefWndProc-- SetFlags |
| Destroy -SetupWindow--------|
| Disable Show |
| DisableAutoCreate -Store--------------|
| DisableTransfer Transfer |
| DispatchScroll TransferData |
| Enable -WMActivate---------|
| EnableAutoCreate WMClose |
| EnableKBHandler WMCommand |
| EnableTransfer WMDestroy |
| FirstThat -WMNScroll----------|
| Focus WMNCDestroy |
| ForEach WMNQueryEndSession |
| GetChildPtr -WMVScroll----------|
------------------------------------------
B.Pascal 7 & Objects/OW - 505 -
TDialog TPrintDialog
--------------------- -------------------
| Attr | | AllBtn |
| IsModal | | Colate |
--------------------- | Controls |
|-Init--------------| | FromPage |
| Load | | PageBtn |
| Done | | Pages |
| Create | | PData |
| DefWndProc | | Printer |
| EndDlg | | PrinterName |
| Execute | | PrnDC |
| GetItemHandle | | SelAllowed |
| Ok | | SelectBtn |
| SendDlgItemMsg | | ToPage |
| Store | -------------------
| WMClose | | Init |
| WMInitDialog | | IDSetup |
| WMPostInvalid | | SetupWindow |
| WMQueryEndSession | | TransferData |
--------------------- -------------------
Диалоговый блок печати TPrintDialog дает пользователю возможность настроить
конкретное задание печати, выбирая такие параметры, как число выводимых
на печать страниц, число копий или используемый принтер. TPrintDialog
- это используемый по умолчанию диалоговый объект печати, но вы можете,
переопределив метод InitPrintDialog объекта принтера, включить свой собственный
специализированный диалоговый блок.
Поля
AllBtn
Al[lBtn: PRadioButton;
AllBtn - это один из трех наборов кнопок с зависимой фиксацией. При его
выборе AllBtn указывает, что на принтере должны печататься все страницы
документа.
См. также: TPrintDialog.SelectBtn, TPrintDialog.PageBtn.
Collate
Collate: PCheckBox;
Указывает на кнопку с независимой фиксацией в диалоговом блоке, определяющую,
хочет ли пользователь сравнения вывода.
Controls
B.Pascal 7 & Objects/OW - 506 -
Controls: PCollection;
Это поле предназначено для внутреннего использования в диалоговом блоке
печати.
Copies
Copies: PEdit;
Copies позволяет пользователю задать число печатаемых копий документа.
FromPage
FromPage: PEdit;
Если пользователь выбирает печать диапазона страниц, FromPage содержит
номер первой печатаемой страницы.
PageBtn
PageBtn: PRadioButton;
PageBtn - это один из трех наборов кнопок с зависимой фиксацией. При его
выборе пользователь хочет печатать выделенный диапазон страниц.
См. также: TPrintDialog.AllBtn, TPrintDialog.FromPage,
TPrintDialog.SelectBtn, TPrintDialog.ToPage.
Pages
Pages: Integer;
Pages - это общее число страниц в документе.
PData
PData: PPrintDialogRec;
PData указывает на тип TPrintDialogRec. Диалоговые блоки печати используют
эту запись как буфер передачи.
См. также: тип TPrintDialogRec.
Printer
Printer: PPrinter;
Printer указывает на объект принтера, связанный с диалоговым блоком печати.
PrinterName
B.Pascal 7 & Objects/OW - 507 -
PrinterName: PStatic;
Указывает на статический текстовый управляющий элемент, содержащий имя
текущего выбранного принтера.
PrnDC
PrnDC: HDC;
PrnDC - это описатель используемого для печати контекста устройства.
SetAllowed
SetAllowed: Boolean;
В случае значения True указывает, что устройство печати поддерживает печать
только выделенного текста документа. SelectBtn разрешается только когда
SelAllowed имеет значение True.
См. также: TPrintDialog.SelectBtn.
SelectBtn
SelectBtn: PRadioButton;
SelectBtn - это один из трех наборов кнопок с зависимой фиксацией. При
его выборе пользователь хочет печатать текущий выделенный в документе
текст.
См. также: TPrintDialog.SelAllowed.
ToPage
ToPage: PEdit;
Если пользователь выбирает печать диапазона страниц, ToPage содержит номер
последней выводимой на печать страницы.
См. также: TPrintDialog.PageBtn, TPrintDialog.FromPage.
Методы
Ниже описываются методы, определенные в данном объекте.
Init
constructor Init(AParent: PWindowsObject; Template: PChar;
APrnDC: HDC; APages: Integer; APrinter: PPrinter;
ASelAllowed: Boolean; var Data: TPrintDialogRec);
B.Pascal 7 & Objects/OW - 508 -
Строит диалоговый блок печати, вызывая сначала конструктор Init, наследуемый
из TDialog, а затем выбирая поля в соответствии со значениями переданных
параметров. Затем Init строит управляющие объекты диалогового блока, вызывая
для каждого из них InitResource.
IDSetup
procedure IDSetup(var Msg: TMessage); virtual
id_First + id_Setup;
Отвечает на нажатие пользователем кнопки Setup, вызывая диалоговый блок
установки принтера. По умолчанию диалоговый блок установки принтера является
экземпляром типа TPrinterSetupDialog.
См. также: объект TPrinterSetupDialog.
SetupWindow
procedure SetupWindow; virtual;
Инициализирует диалоговый блок, вызывая сначала наследуемый из TDialog
метод SetupWindow, а затем считывая имя устройства печати из объекта принтера
и устанавливая в это значение поле PrinterName.
TransferData
procedure TransferData(Direction: Word); virtual;
Переопределяет наследуемый метод TransferData для установки управляющих
значение на основе значения в PData, если Direction равно tf_SetData или
устанавливает на основе управляющих значений PData, если Direction равно
tf_GetData. TransferData не просто устанавливает или считывает управляющие
элементы, как при взаимообмене между полями PData и управляющими элементами
диалогового блока печати.
Тип TPrintDialogRec модуль OPrinter
Описание:
TPrintDialogRec = record drStart: Integer; drStop: Integer; drCopies:
Integer; drCollate: Boolean; drUseSelection: Boolean;
end;
Назначение: Диалоговые объекты печати используют тип
B.Pascal 7 & Objects/OW - 509 -
TPrintDialogRec как буферы передачи. Поля drStart и drStop представляют,
соответственно, первую и последнюю страницы для печати. drCopies указывает
число печатаемых копий. drCollate сообщает принтеру о сравнении копий,
если drCopies вызывается несколько раз. drUseSelection сообщает принтеру
о печати выделенного текста, а не текста, указанного drStart и drStop.
B.Pascal 7 & Objects/OW - 510 -
TPrinter модуль OPrinter
TObject TPrintout
-------- --------------------
-------- | Device |
|-Init-| | DeviceMode |
|-Done-| | DeviceModule |
| Free | | DevSettings |
-------- | DevSettingSize |
| Driver |
| Error |
| ExtDeviceMode |
| Port |
| Status |
InitDoneClearDeviceConfigureGetDCInitAbortDialogInitPrintDialogPrintReportErrorSertDeviceSetup
Объект TPrinter представляет инкапсуляцию системы драйвера принтера Windows.
Чтобы напечатать на принтере или настроить его конфигурацию, инициализируйте
экземпляр TPrinter.
Поля
Device
Device: PChar;
Указывает на имя текущего устройства. В случае значения nil объект не
связан в данный момент с устройством.
DeviceMode
DeviceMode: TDeviceMode;
Функциональная переменная, содержащая адрес функции
DeviceMode текущего связанного принтера. Данная переменная используется
при вызове Configure, если устройство не поддерживает ExtDeviceMode.
DeviceModule
B.Pascal 7 & Objects/OW - 511 -
DeviceModule: THandle;
Описатель текущего драйвера принтера.
DeviceSettings
DeviceSettings: PDevMode;
Указатель на локальную копию установленных параметров устройства печати
(называемую также операционным окружением). Используется только если текущее
устройство печати поддерживает ExtDeviceMode.
DeviceSettingSize
DeviceSettingSize: Integer;
Объем памяти, выделенной для DeviceSetings.
Driver
Driver: PChar;
Указатель на имя текущего драйвера. В случае значения nil объект не связан
в данный момент с драйвером.
Error
Error: Integer;
Код ошибки, возвращаемый GDI при печати. Это значение инициализируется
при вызове Print.
ExtDeviceMode
ExtDeviceMode: TExtDeviceMode;
Функциональная переменная, содержащая адрес функции
ExtDeviceMode текущего устройства печати. Если драйвер не поддерживает
данную подпрограмму, специфичную для Windows 3.0, то данный адрес равен
nil (то есть @ExtDeviceMode = nil равно True). Эта переменная используется
при вызове Configure.
Port
Port: PChar;
Указатель на имя порта, к которому подсоединен текущий принтер. В случае
значения nil объект не содержит принтера.
Status
B.Pascal 7 & Objects/OW - 512 -
Status: Integer;
Текущее состояние драйвера принтера.
Методы
Ниже описываются методы, определенные в данном объекте.
Init
constructor Init;
Создает экземпляр TPrinter, связанный с используемым по умолчанию принтером.
Чтобы сменить принтер, TPrinter после инициализации объекта вызывает SetDevice.
Вызов Setup также позволяет пользователю выбрать новое устройство в ходе
диалога.
Done (переопределяется редко)
desctuctor Done; virtual;
Освобождает ресурсы, выделенные для TPrinter.
ClearDevice
procedure ClearDevice;
Отменяет связь устройства с текущим принтером. Вызывается SetDevice и
Done. Изменяет текущее состояние принтера на pf_Unassociated, что приводит
к игнорированию объектом всех вызовов Print, пока объект не будет снова
связан с принтером.
Configure
procedure Confuigure(Window: PWindowsObject);
Вызывает драйвер устройства для конфигурации текущего принтера. Если драйвер
принтера поддерживает ExtDeviceMode, то сохраняется локальная копия параметров
принтера, и значения принтера по умолчанию не изменяются. Если принтер
поддерживает только DeviceMode, глобальные значения по умолчанию для принтера
будут модифицированы.
GetDC (переопределяется редко)
function GetDC: HDC; virtual;
B.Pascal 7 & Objects/OW - 513 -
Возвращает для текущего связанного с объектом принтера контекст устройства.
Если объект находится в недопустимом состоянии, или принтер связан с неактивным
портом (то есть с портом "None"), возвращает 0.
InitAbortDialog (переопределяется редко)
function InitAbortDialog(Parent: PWindowsObject;
Title: PChar): PDialog; virtual;
Вызывается методом Print в начале печати задания. Возвращаемым результатом
является созданный безрежимный диалоговый блок. По умолчанию возвращается
экземпляр TPrinterAbortDlg. Отмена этого диалогового блока отменяет задание
печати.
Может переопределяться для возврата специализированного диалога, выводящего
на экран текущую печать.
InitPrintDialog (переопределяется редко)
function InitPrintDialog(Parent: PWindowsObject; PrnDC: HDC;
Pages: Integer; SetAllowed: Boolean; var Data;
TPrintDialogRec): PDialog; virtual;
Вызывается методом Print для возврата диалогового блока, если объект распечатки
указывает, что поддерживается печать выбранных страниц. Диалоговый блок
печати позволяет пользователю задать печать всех страниц, выделенного
текста или диапазона страниц. По умолчанию InitPrintDialog возвращает
экземпляр типа TPrintDialog.
InitSetupDialog (переопределяется редко)
function InitSetupDialog(Parent: PWindowsObject): PDialog;
virtual;
Вызывается методом Setup для возврата диалогового блока установки принтера.
В приложении результат предполагается в виде режимного диалогового окна.
По умолчанию возвращается экземпляр TPrinterSetupDlg. Может переопределяться
для возврата специализированного диалога установки принтера.
Print
function Print(ParentWin: PWindowsObject;
PrintOut: PPrintOut): Boolean;
Переводит указанный объект распечатки на связанное устройство печати.
При печати выводит на экран диалоговое окно прерыва-
B.Pascal 7 & Objects/OW - 514 -
ния и обнаруженные ошибки.
ReportError (иногда переопределяется)
procedure ReportError(PrintOut: PPrintOut); virtual;
Print вызывает ReportError в случае обнаружения ошибки. По умолчанию выводится
блок системного сообщения со строкой ошибки, полученной из значений таблицы
строк 32512 - 32519. Чтобы вывести специализированный диалоговый блок
ошибки, данный метод можно переопределить.
SetDevice
procedure SetDevice(ADevice, ADriver, APort: PChar);
Изменяет связь с устройством печати. Setup вызывает SetDevice для интерактивного
изменения связи. Допустимые параметры данного метода можно найти в секции
устройств файла WIN.INI.
Записи секции устройств имеют следующий формат:
<имя_устройства>=<драйвер>, <порт> , <порт>
где порт может повторяться любое число раз.
Setup
procedure Setup(Parent: PWindowsObject);
Этот метод вызывается, когда вы хотите, чтобы пользователь выбирал и/или
настраивал конфигурацию текущего связанного принтера. Для возврата представляемого
пользователю диалогового блока установки принтера вызывает InitSetupDialog.
B.Pascal 7 & Objects/OW - 515 -
TPrinterAbortDlg модуль OPrinter
TObject TWindowsObject -------- ----------------------------- | ChildList|-Init-|
| Flags|-Done-| | HWindow| Free | | Instance-------- ---------------------|-Init--------|-Load--------|
Done| AddChild| At| Canclose| ChildWithId| CloseWindow| CMExit|-Create------|
CreateChildren| CreateMemoryDC| DefChildProc| DefCommandProc| DefNotificationProc|-DefWndProc--|
Destroy| Disable| DisableAutoCreate| DisableTransfer| DispatchScroll|
Enable| EnableAutoCreate| EnableKBHandler| EnableTransfer| FirstThat|
Focus| ForEach| GetChildPtr --------------------Parent |Status |TransferBuffer
| |--------------------GetChildren |GetClassName-------|GetClient |GetId--------------|GetSiblingPtr
|GetWindowClass-----|IndexOf |IsFlagSet |Next |Previous |PutChildPtr |PutChildren
|PutSiblingPtr |Register-----------|RemoveChild |SetFlags |SetupWindow--------|Show
|Store--------------|Transfer |TransferData |WMActivate---------|WMClose
|WMCommand |WMDestroy |WMNScroll----------|WMNCDestroy |WMNQueryEndSession
|WMVScroll----------|
B.Pascal 7 & Objects/OW - 516 -
TDialog TPrinterAbortDlg
--------------------- -------------------
| Attr | -------------------
| IsModal | | Init |
--------------------- | SetupWindow |
|-Init--------------| | WMCommand |
| Load | -------------------
| Done |
| Create |
| DefWndProc |
| EndDlg |
| Execute |
| GetItemHandle |
| Ok |
| SendDlgItemMsg |
| Store |
| WMClose |
| WMInitDialog |
| WMPostInvalid |
| WMQueryEndSession |
---------------------
Это объектный тип используемого по умолчанию диалогового окна прерывания
принтера. Данный диалог инициализируется для вывода заголовка текущей
распечатки, а также устройства и порта, которые используются в данный
момент для печати.
Предполагается, что TPrinterAbortDlg имеет три статических текстовых управляющих
элемента с идентификаторами управляющих элементов: 101 - для заголовка,
102 - для устройства и 103 для порта соответственно. В своих текстовых
строках эти управляющие элементы должны содержать символ '%', который
заменяется, соответственно, заголовком, устройством и портом. Позиция
и порядок табуляции управляющих элементов в диалоговом блоке важного значения
не имеет.
Методы
Ниже описываются методы, определенные в данном объекте.
Init
constructor Init(AParent: PWindowsObject; Template, Title,
Device, Port: PChar);
Строит диалоговый блок прерывания печати, в котором наряду с кнопкой Cancel
выводятся заданный заголовок (Title), устройство (Device) и порт (Port).
B.Pascal 7 & Objects/OW - 517 -
SetupWindow (переопределяется редко)
procedure SetupWindow; virtual;
Предназначена для внутреннего использования в связанных объектах с шаблоном
диалогового ресурса, так что могут заполняться заголовок, устройство и
порт.
WMCommand (переопределяется редко)
procedure WMCommand(var Msg: TMessage); virtual
wm_First + wm_Command;
Предназначена для внутренней работы с кнопкой Cancel (Отмена).
B.Pascal 7 & Objects/OW - 518 -
TPrinterSetupDlg модуль OPrinter
TObject TWindowsObject -------- ----------------------------- | ChildList|-Init-|
| Flags|-Done-| | HWindow| Free | | Instance-------- ---------------------|-Init--------|-Load--------|
Done| AddChild| At| Canclose| ChildWithId| CloseWindow| CMExit|-Create------|
CreateChildren| CreateMemoryDC| DefChildProc| DefCommandProc| DefNotificationProc|-DefWndProc--|
Destroy| Disable| DisableAutoCreate| DisableTransfer| DispatchScroll|
Enable| EnableAutoCreate| EnableKBHandler| EnableTransfer| FirstThat|
Focus| ForEach| GetChildPtr --------------------Parent |Status |TransferBuffer
| |--------------------GetChildren |GetClassName-------|GetClient |GetId--------------|GetSiblingPtr
|GetWindowClass-----|IndexOf |IsFlagSet |Next |Previous |PutChildPtr |PutChildren
|PutSiblingPtr |Register-----------|RemoveChild |SetFlags |SetupWindow--------|Show
|Store--------------|Transfer |TransferData |WMActivate---------|WMClose
|WMCommand |WMDestroy |WMNScroll----------|WMNCDestroy |WMNQueryEndSession
|WMVScroll----------|
B.Pascal 7 & Objects/OW - 519 -
TDialog TPrinterSetupDlg
--------------------- -------------------
| Attr | | Printer |
| IsModal | -------------------
--------------------- | Init |
|-Init--------------| | Done |
| Load | | Cancel |
| Done | | IDSetup |
| Create | | TransferData |
| DefWndProc | -------------------
| EndDlg |
| Execute |
| GetItemHandle |
Часть №5
|
|