|
| Ok |
| SendDlgItemMsg |
| Store |
| WMClose |
| WMInitDialog |
| WMPostInvalid |
| WMQueryEndSession |
---------------------
Это используемый по умолчанию диалоговый блок установки принтера. Он аналогичен
диалоговому блоку установки принтера в IDE для Windows. Предполагается,
что TPrinterSetupDlg имеет комбинированный блок для списка допустимых
устройств и командную кнопку Setup. Они имеют идентификаторы 101 и 102
соответственно. В него следует также включить кнопки OK и Cancel.
Поля
Printer
Printer: PPrinter;
Указывает на текущий принтер, модифицируемый в диалоге.
Методы
Ниже описываются методы, определенные в данном объекте.
Init
constructor Init(AParent: PWindowsObject;
TemplateName: PChar; APrinter: PPrinter);
Строит диалоговый блок установки принтера, модифицирующий указанный принтер.
B.Pascal 7 & Objects/OW - 520 -
Done (переопределяется редко)
destructor Done; virtual;
Освобождает связанные с объектом ресурсы.
Cancel (никогда не переопределяется)
procedure Cancel(var Msg: TMessage); virtual
id_First + id_Cancel;
Предназначается для внутреннего использования с целью восстановления предыдущего
состояния принтера, если пользователь после Setup нажал командную кнопку
Cancel.
IDSetup (никогда не переопределяется)
procedure IDSetup(var Msg: TMessage); virtual
id_First + id_Setup;
Обрабатывает нажатия кнопки Setup. Модифицирует заданный принтер и вызывает
его метод Configure.
TransferData (никогда не переопределяется)
procedure TransferData(TransferFlag: Word); virtual;
Предназначается для внутреннего использования с целью пересылки данных
из диалогового блока и непосредственной модификации заданного принтера.
B.Pascal 7 & Objects/OW - 521 -
TPrintout модуль OPrinter
TObject TPrintout
-------- -------------------
-------- | Banding |
|-Init-| | DC |
|-Done-| | ForceAllBands |
| Free | | Size |
-------- | Title |
InitDoneBeginDocumentBeginPrintingEndDocumentEndPrintingGetDialogInfoGetSelectionHasNextPagePrintPageSetPrintParams
Этот объект используется в сочетании с объектом TPrinter для печати информации
на принтере. Данный объектный тип является абстрактным. Это означает,
что сам по себе он не может использоваться для печати каких-либо данных.
Должны создаваться наследники TPrinter, а метод PrintPage должен переопределяться
для печати нужных данных.
Поля
Banding
Banding: Boolean;
В случае значения True распечатка выводится с использование разбиения
на полосы, и для каждой полосы вызывается метод PrintPage. В противном
случае метод PrintPage вызывается однократно для каждой страницы. Разбиение
распечатки на полосы более эффективно по времени и затратам памяти, чем
его отсутствие. По умолчанию это поле имеет значение False.
DC
DC: HDC;
DC - это описатель используемого для печати контекста устройства.
ForceAllBands
B.Pascal 7 & Objects/OW - 522 -
ForceAllBands: Boolean;
Многие драйверы устройств не предусматривают многополосной печати на принтере,
если и текст, и графика не выполняются с использованием первой полосы
(обычно это только текстовая полоса). Если оставить в этом поле значение
True, это вынудит драйвер принтера использовать все полосы, независимо
от того, какие вызовы выполняются в методе PrintPage. Если PrintPage ничего
не делает кроме вывода текста, то эффективнее установить это поле в False.
По умолчанию оно равно True. Данное поле действует только в том случае,
если Banding равно True.
Size
Size: TPoint;
Size представляет размер области печати на странице распечатки.
Title
Title: PChar;
Текущий заголовок, используемый для распечатки. По умолчанию этот заголовок
выводится в диалоговом блоке прерывания печати и в качестве имени задания
печати в администраторе печати.
Методы
Ниже описываются методы, определенные в данном объекте.
Init
constructor Init(ATitle: PChar);
Строит экземпляр TPrintOut с заданным заголовком.
Done
destructor Done; virtual;
Уничтожает ресурс, выделенный конструктором Init.
BeginDocument
procedure BeginDocument(StartPage, EndPage: Integer;
Flag: Word); virtual;
Метод Print объекта печати вызывает BeginDocument один раз
B.Pascal 7 & Objects/OW - 523 -
перед печатью каждой копии документа. Поле Flag содержит
pf_Banding или pf_Selection и указывает, будет ли использоваться
разбиение на полосы или печать выделенного текста.
Используемый по умолчанию метод BeginDocument ничего не делает. Наследующие
объекты могут переопределять его для выполнения в начале каждой копии
документа необходимой инициализации.
BeginPrinting
procedure BeginPrinting; virtual;
Независимо от того, сколько копий документа будет печататься, метод Print
объекта печати вызывает BeginPrinting один раз в начале печати задания.
Используемый по умолчанию метод BeginPrinting ничего не делает. Наследующие
объекты могут переопределять его для выполнения необходимой перед печатью
инициализации.
EndDocument
procedure EndDocument; virtual;
Метод Print объекта печати вызывает EndDocument после завершения печати
каждой копии документа.
Используемый по умолчанию метод EndDocument ничего не делает. Наследующие
объекты могут переопределять его для выполнения необходимых действий в
конце печати каждого документа.
EndPrinting
procedure EndPrinting; virtual;
Метод Print объекта печати вызывает BeginPrinting в конце печати всех
копий документа.
Используемый по умолчанию метод EndPrinting ничего не делает. Наследующие
объекты могут переопределять его для выполнения необходимых в конце печати
действий.
GetDialogInfo
procedure GetDialogInfo(var Pages: Integer): Boolean;
virtual;
Считывает информацию, необходимую для печати выделенных страниц документа,
и возвращает True, если выбор страниц возможен. Ис-
B.Pascal 7 & Objects/OW - 524 -
пользовать Pages не обязательно, но если легко определить число
страниц, GetDialogInfo нужно передать в параметре Pages число
страниц в документе. В противном случае HasNextPage следует уста-
новить в 0, а печать будет продолжаться, пока HasNextPage не возв-
ратит False.
GetSelection
function GetSelection(var Start, Stop: Integer): Boolean;
virtual;
Определяет, имеет ли документ выделенный текст. Если да, то функция возвращает
значение True, а Start и Stop указывают, соответственно, на начало и конец
выделенного текста. Если GetSelection возвращает False, то командная кнопка
печати выделенного текста в диалоговом блоке печати запрещена.
По умолчанию GetSelection просто возвращает False. Наследующие объекты
могут переопределять GetSelection для фактического определения существования
выделенного текста.
HasNextPage
function HasNextPage: Boolean; virtual;
Данный метод вызывается после каждой страницы. По умолчанию он всегда
возвращает значение False, указывая, что печататься должна только одна
страница. Если документ содержит более одной страницы, данный метод нужно
переопределить для возврата True, если имеются еще страницы для печати.
PrintPage
procedure PrintPage(Page: Word; var Rect: TRect;
Flags: Word); virtual;
Вызывается для каждой страницы (или полосы, если Banding имеет значение
True). Должен переопределяться для печати содержимого данной страницы.
Параметры Rect и Flags используются при разбиении на полосы для указания
размера и типа полосы, запрошенной через драйвер (если Banding равно False,
это следует игнорировать). Параметр Size - это размер печатаемой страницы
(в элементарных единицах устройства). Page - это номер текущей страницы,
а DC - контекст устройства печати, который переопределенный метод должен
использовать во всех вызова GDI.
SetPrintParams
procedure SetPrintParams(ADC: HDC; ASize: TPoint): virtual;
B.Pascal 7 & Objects/OW - 525 -
Устанавливает поля DC и Size в ADC и ASize соответственно. Это первый
метод распечатки, вызываемый методом Print объекта принтера и обеспечивающий
объект распечатки информацией, необходимой для разбиения на страницы и
ведения счетчика страниц. Если
наследующие объекты переопределяют SetPrintParams, они должны вызывать
наследуемый метод.
B.Pascal 7 & Objects/OW - 526 -
TPXPictureValidator модуль Validate
TObject TValidator -------- ------------------------- | Options|-Init-|
| Status|-Done-| -----------------| Free | |-Init------------------- |-Load-----------|-IsInvalid------|-IsValidInput---|-Store----------|
Transfer| Valid TPXPictureValidator - ------------------- | | Pic | |
------------------- - | Init | | | Load | | | Done | | | Error | | | IsValid
| | | IsValidInput | | | Picture | | | Store |
Трафаретные объекты проверки допустимости сравнивают ввод пользователя
с трафаретом (шаблоном) формата данных и определяют
допустимость введенных данных. Трафареты совместимы с шаблонами
реляционной базы данных Paradox фирмы Borland, используемыми для
управления вводом данных. Полное описание спецификаторов трафарета см.
в методе Picture объекта TPXPictureValidator.
Поля
Pic
Pic: PString:
Указатель на строку, содержащую трафарет, определяющий формат данных в
соответствующей строке ввода. Конструктор Init устанавливает Pic в строку,
переданную в качестве одного из параметров.
Методы
Ниже описываются методы, определенные в данном объекте.
Init
constructor Init(const APic: String; AutoFill: Boolean);
Строит объект проверки допустимости по трафарету, вызывая сначала конструктор
Init, наследуемый из TValidator, а затем выделяя копию APic в динамически
распределяемой памяти и устанавливая на нее Pic. Затем, если AutoFill
имеет значение True, устанавливает бит voFill в Options.
См. также: TValidator.Init.
B.Pascal 7 & Objects/OW - 527 -
Load
constructor Load(var S: TStream);
Строит и загружает объект проверки допустимости по трафарету из потока
S, вызывая сначала конструктор Load, наследуемый из
TValidator, а затем считывая значение поля Pic, введенное в TPXPictureValidator.
См. также: TValidator.Load.
Done
destructor Done; virtual;
Уничтожает строку, на которую указывает Pic, затем уничтожает объект проверки
допустимости по трафарету, вызывая деструктор Done, наследуемый из TValidator.
Error
procedure Error; virtual;
Выполняет блок сообщения, указывая на ошибку в формате трафарета, и выводит
строку, на которую указывает Pic.
ISValidInput
function ISValidInput(var S: string; SupressFill: Boolean):
Boolean; virtual;
Проверяет передаваемую в S строку, сравнивая ее с трафаретным форматом,
заданным в Pic, и возвращает значение True, если Pic равно nil, или Picture
не возвращает для S prError. В противном случае возвращается False. Параметр
SupressFill переопределяет значение в voFill на время выполнения вызова
IsValidInput.
Так как S - это параметр-переменная, IsValidInput может модифицировать
ее значение. Например, если SupressFill равно False, и установлено voFill,
то вызов Picture возвращает на основе S заполненную строку, так что образ
строки ввода автоматически отражает заданный в Pic формат.
См. также: TPXPictureValidator.Picture.
IsInvalid
function IsValid(const S: string): Boolean; virtual;
B.Pascal 7 & Objects/OW - 528 -
Сравнивает переданную в S строку с шаблоном формата, заданным в Pic, и
возвращает True, если Pic равно nil, или если Picture возвращает для S
prComplete, указывая, что S для соответствия данному формату не требует
дальнейшего ввода.
См. также: TPCPictureValidator.Picture.
Picture
function Picture(var Input: String): TPicResult; virtual;
Форматирует переданную в Input строку в соответствии с форматом, заданным
строкой трафарета, на которую указывает Pic. Если в строке трафарета имеется
ошибка, или Input содержит данные, не помещающиеся в заданном трафарете,
возвращает prError. Если Input может полностью удовлетворять заданному
трафарету, возвращает prComplete. Если Input содержит данные, не полностью
соответствующие заданному трафарету, возвращает prIncomplete.
B.Pascal 7 & Objects/OW - 529 -
Символы, используемые для создания трафаретов формата, показаны в следующей
таблице:
Символы трафарета формата Таблица 21.26
Тип символа Символ Описание
Специальный #?&@! Воспринимается только цифра.Воспринимается только
буква (безразличия регистра).Воспринимается только буква (пре-образуется
в верхний регистр).Воспринимается любой символ.Воспринимается любой символ
(преобразуется в верхний регистр).
Соответствие ;*[]' Следующий символ воспринимаетсялитерально.Счетчик повторения.Параметр.Группирование
операций.Набор альтернатив.
Все прочие Воспринимаются литерально.
См. также: тип TPicResult.
Store
procedure Store(var S: TStream);
Сохраняет объект проверки допустимости по трафарету в потоке S, вызывая
сначала при записи строки, на которую указывает Pic, наследуемый из TValidator
метод Store.
B.Pascal 7 & Objects/OW - 530 -
TRadioButton модуль 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 - 531 -
TWindow TControl
--------------------- -------------------
| Attr | -------------------
| DefaultProc | |-Init------------|
| Scrol[ler | |-InitResource----|
| FocusChildHandle | |-GetClassName----|
--------------------- | Register |
|-Init--------------| | WMPaint |
| InitResource | -------------------
|-Load--------------|
| Done | TCheckBox
| Create | -------------------
| DefWndProc | | Group |
| FocusChild | -------------------
| GetId | |-Init------------|
| GetWindowClass | | InitResource |
| Paint | | Load |
| SetCaption | | BNClicked |
| SetupWindow | | Check |
|-Store-------------| | GetCheck |
| UpdateFocusChild | |-GetClassName----|
| WMActivate | | SetCheck |
| WMHScroll | | Store |
| WMLButtonDown | | Toggle |
| WMMDIActivate | | Transfer |
| WMMove | | Uncheck |
| WMPaint | -------------------
|-WMSize------------|
| WMSysCommand | TRadioButton
| WMVScroll | -------------------
--------------------- -------------------
| Init |
| GetClassName |
-------------------
TRadioButton - это интеpфейсный объект, пpедставляющий в Windows соответствующий
элемент кнопки с зависимой фиксацией. Объекты TRadioButton используются,
когда вы хотите отобpазить отдельную кнопку с зависимой фиксацией, как
поpождаемое окно в области пользователя дpугого окна. Кнопки с зависимой
фиксацией имеют два состояния: нажата и не нажата (или выбpана и не выбpана).
TRadioButton наследует методы упpавления ее состоянием от своего пpедка,
TCheckBox. Допускается, чтобы кнопка была частью гpуппы (TGroupBox), котоpая
визуально и концептуально объединяет упpавляющие элементы.
Методы
Ниже описываются методы, определенные в данном объекте.
B.Pascal 7 & Objects/OW - 532 -
Init (иногда переопределяется)
constructor Init(AParent: PWindowsObject; AnID: Integer;
ATitle: PChar; X, Y, W, H: Integer;
AGroup: PGroupBox);
Создает объект кнопки с зависимой фиксацией с пеpеданным порождающим окном
(AParent), идентификатоpом управляющего элемента (AnId); соответствующим
текстом (ATitle), позицией (X,Y) относительно начала области пользователя
порождающего окна; шиpиной (W), высотой (H) и блоком соответствующей гpуппы
(AGroup). Вызывает конструктор TCheckBox с соответствующими параметрами.
Затем устанавливает элемент данных Attr.Style в ws_Child or ws_Visible
or bs_RadioButton.
GetGlassName
function GetClassName: PChar; virtual;
Вызывает метод GetClassName, наследуемый из TCheckBox (если испольуются
управляющие элементы BWCC, возвращается 'BorRadio').
См. также: TCheckBox.GetClassName.
B.Pascal 7 & Objects/OW - 533 -
TRangeValidator модуль Validate
TObject TValidator TFileterValidator
-------- | Options|-Init-| | Status|-Done-| ------------------| Free |
|-Init-------------------- |-Load------------|-IsInvalid-------|-IsValidInput----|-Store-----------|
Transfer| Valid------------------ | ValidChars |-------------------|-Init------------||-Load------------||-IsInvalid-------||
IsValidInput ||-Store-----------|-------------------
TRangeValidator
| Max || Min |
| Init || Load || Error || IsValid || Store || Transfer |-------------------
Объект проверки допустимости дают ли набираемые пользователем лых чисел.
по диапазону определяет, попа-данные в указанный диапазон це-
Поля
Max
Max: Longint;
Max - это наибольшее допустимое длинное целое значение для строки ввода.
Min
Min: Longint;
Min - это наименьшее допустимое длинное целое значение для строки ввода.
Методы
B.Pascal 7 & Objects/OW - 534 -
Ниже описываются методы, определенные в данном объекте.
Init
constructor Init(AMin, AMax: Longint);
Строит объект проверки допустимости диапазона, вызывая сначала конструктор
Init, наследуемый из TFilterValidator, передавая набор символов, содержащий
цифры '0'..'9' и символы '+' и '-'. Устанавливает Min в AMin и Max в AMax,
задавая диапазон воспринимаемых длинных целых значений.
См. также: TFilterValidator.Init.
Load
constructor Load(var S: TStream);
Строит и загружает объект проверки допустимости диапазона из потока S,
вызывая сначала конструктор Load, наследуемый из TFilterValidator, а затем
считывая поля Min и Max, введенные в TRangeValidator.
См. также: TFilterValidator.Load.
Error
procedure Error; virtual;
Выводит на экран блок сообщений, указывающий, что введенное значение не
попадает в заданный диапазон.
IsValid
function IsValid(const S: string): Boolean; virtual;
Преобразует строку S в целое значение и возвращает True, если результат
удовлетворяет трем следующим условиям:
* является допустимым целочисленным значением;
* его значение больше или равно Min;
* его значение больше или равно Max.
Если какая либо из этих проверок завершается неудачно, IsValid возвращает
False.
B.Pascal 7 & Objects/OW - 535 -
Store
procedure Store(var S: TStream);
Сохраняет объект проверки допустимости в потоке S, вызывая сначала метод
Store, наследуемый из TFilterValidator, а затем записывая поля Min и Max,
введенные в TRangeValidator.
См. также: TFilterValidator.Store.
Transfer
function Transfer(var S: String; Buffer: Pointer;
Flag: TVTransfer): Word; virtual;
Объединяет три функции - DataSize, GetData и SetData - которые объект
проверки допустимости диапазона может использовать для соответствующей
строки ввода. Вместо установки значения строки числового ввода путем передачи
строки, представляющей число, Transfer может использовать в качестве записи
данных Longint, что позволяет избежать в вашем приложении выполнения преобразования.
S - это значение строки ввода, а Buffer - это запись данных, передаваемых
в строку ввода. В зависимости от значения Flag, Transfer устанавливает
значение S в соответствии с числом в Buffer^ или устанавливает число в
Buffer в соответствии со строкой S. Если Flag имеет значение vtSetData,
Transfer устанавливает S из буфера Buffer. Если Flag равен vtGetrData,
Transfer устанавливает значения в Buffer, беря его из S. Если Flag равен
vtDataSize, то Transfer ни устанавливает, ни считывает данные.
Transfer всегда возвращает размер переданных данных (в этом случае размер
имеет тип Longint).
См. также: тип TVTransfer.
B.Pascal 7 & Objects/OW - 536 -
TScrollBar модуль 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 - 537 -
TWindow TControl
--------------------- -------------------
| Attr | -------------------
| DefaultProc | |-Init------------|
| Scrol[ler | |-InitResource----|
| FocusChildHandle | |-GetClassName----|
--------------------- | Register |
|-Init--------------| | WMPaint |
| InitResource | -------------------
|-Load--------------|
| Done | TScrollBar
| Create | -------------------
| DefWndProc | | LineMagnitude |
| FocusChild | | PageMagnitude |
| GetId | -------------------
| GetWindowClass | | Init |
| Paint | | InitResource |
| SetCaption | | Load |
| SetupWindow | | DeltaPos |
|-Store-------------| | GetClassNAme |
| UpdateFocusChild | | GetPosition |
| WMActivate | | GetRange |
| WMHScroll | | SBBottom |
| WMLButtonDown | | SBLineDown |
| WMMDIActivate | | SBLineUp |
| WMMove | | SBPageDown |
| WMPaint | | SBPageuP |
|-WMSize------------| | SBThumbPosition |
| WMSysCommand | | SBThumbTrack |
| WMVScroll | | SBTop |
--------------------- | SBPosition |
| SetRange |
| SetupWindow |
| Store |
| Transfer |
-------------------
Объекты TScrollBar пpедставляют автономные (не связанные с окнами) горизонтальные
и вертикальные полосы (линейки) прокрутки. Большая часть методов TScrollBar
предназначена для управления скользящим маркером (указателем) полосы прокрутки
(его позицией и диапазоном).
Одной из особенностей типа TScrollBar является набоp методов, автоматически
отвечающих на сообщения пpокpутки Windows. Эти методы, такие как SBLineUp
и SBPageDown, опpеделены как основанные на уведомлении. Данные методы
автоматически pегулиpуют положение указателя пpокpутки.
Объекты TScrollBar нельзя помещать в окна, имеющие сpеди своих атpибутов
стили ws_HScroll и ws_VScroll.
B.Pascal 7 & Objects/OW - 538 -
Поля
LineMagnitude (чтение/запись)
LineMagnitude: Integer;
LineMagnitude - число единиц диапазона, пpокpучиваемых, когда пользователь
запpашивает небольшое пеpемещение, щелкая кнопкой "мыши" на
стpелках полосы пpокpутки. По умолчанию, Init устанавливает LineMagnitude
в 1. TScrollBar.InitWindow по умолчанию устанавливает диапазон пpокpутки
от 0 до 100.
См. также: TScrollBar.InitWindow.
PageMagnitude (чтение/запись)
PageMagnitude: Integer;
PageMagnitude - число единиц диапазона, пpокpучиваемых, когда пользователь
запpашивает небольшое пеpемещение, щелкая кнопкой "мыши" в области
пpокpутки полосы пpокpутки. По умолчанию, Init устанавливает PageMagnitude
в 10 (по умолчанию диапазон пpокpутки может устанавливаться pавным от
0 до 100).
Методы
Ниже описываются методы, определенные в данном объекте.
Init
constructor Init(AParent: PWindowsObject; AnID: Integer;
X, Y, W, H: Integer; IsHScrollBar: Boolean);
Создает и инициализиpует объект TScrollBar с заданным порождающим окном
(AParent), идентификатоpом управляющего элемента (AnId), позицией (X,Y),
шиpиной (W) и высотой (H). Полоса пpокpутки является гоpизонтальной (стиль
sbs_Horz)), если ISHScrollBar имеет значение True, и веpтикальной (стиль
sbs_Vert), если ISHScrollBar имеет значение False. Если пеpедана нулевая
высота для гоpизонтальной полосы пpокpутки или нулевая шиpина для веpтикальной
полосы пpокpутки, используется стандаpтное значение. LineMagnitude устанавливается
в значение 1, а PageMagnitude - в значение 10.
InitResource
InitResource(AParent: PWindowsObject; ResourceId: Word);
Связывает объект полосы прокрутки с управляющим элементом в
B.Pascal 7 & Objects/OW - 539 -
ресурсе, заданным ResourceID путем вызова конструктора
InitResource, наследуемого из TControl. Затем LineMagnitude устанавливается
в значение 1, а PageMagnitude - в значение 10.
См. также: TControl.InitResource.
Load
constructor Load(var S: TStream);
Строит и загружает объект полосы прокрутки из потока S, вызывая сначала
TControl.Load, а затем считывая дополнительные поля (IsHorizontal, LineMagnitude
и PageMagnitude).
См. также: TControl.Load.
DeltaPos (переопределяется редко)
function DeltaPos(Delta: Integer): Integer; virtual;
Изменяет положение указателя полосы пpокpутки на значение, пеpеданное
в параметре Delta. (Вызывает для этого SetPosition.) Пpи отpицательном
значении указатель пеpемещается ввеpх или влево. Возвpащается новое положение
указателя.
GetClassName (никогда не переопределяется)
function GetClassName: PChar; virtual;
Возвpащает имя класса регистрации Windows TScrollBar - 'Scrollbar"'
GetPosition (переопределяется редко)
function GetPosition: Integer; virtual;
Возвpащает текущее положение указателя пpокpутки.
См. также: TScrollBar.SetPosition.
GetRange (переопределяется редко)
procedure GetRange(var LoVal, HiVal: Integer); virtual;
Считывает допустимый диапазон положений указателя полосы пpокpутки в LoVal
и HiVal.
См. также: TScrollBar.SetRange.
B.Pascal 7 & Objects/OW - 540 -
SBBottom (переопределяется редко)
procedure SBBottom(var Msg: TMessage); virtual
nf_First + sb_Bottom;
В ответ на запpос пользователя устанавливает положение указателя в наибольшее
допустимое значение (вызывается SetPosition). Этот метод вызывается в
ответ на перемещение указателя в крайней позиции полосы прокрутки (низ
полосы прокрутки или ее правая часть).
SBLineDown (переопределяется редко)
procedure SBLineDown(Msg: TMessage); virtual
nf_First + sb_LineDown;
Пеpемещает положение указателя вниз или впpаво на
LineMagnitude (вызывается SetPosition). Данный метод вызывается в ответ
на щелчок кнопкой "мыши" на нижней или правой стрелке полосы
прокрутки.
SBLineUp (переопределяется редко)
procedure SBLineUp(Msg: TMessage); virtual
nf_First + sb_LineUp;
Пеpемещает положение указателя ввеpх или влево на
LineMagnitude единиц с помощью вызова SetPosition. Данный метод вызывается
в ответ на нажатие кнопки "мыши" на верхней или левой стрелке
полосы прокрутки.
SBPageDown (переопределяется редко)
procedure SBPageDown(Msg: TMessage); virtual
nf_First + sb_PageDown;
Пеpемещает положение указателя вниз или впpаво на
PageMagnitude единиц с помощью вызова SetPosition. Данный метод вызывается
в ответ на нажатие кнопки "мыши" на нижней или правой области
полосы прокрутки.
SBPageUp (переопределяется редко)
procedure SBPageUp(Msg: TMessage); virtual
nf_First + sb_PageUp;
Пеpемещает положение указателя ввеpх или влево на
B.Pascal 7 & Objects/OW - 541 -
PageMagnitude единиц с помощью вызова SetPosition. Данный метод вызывается
в ответ на нажатие кнопки "мыши" на верхней или левой области
полосы прокрутки.
SBThumbPosition (переопределяется редко)
procedure SBThumbPosition(Msg: TMessage); virtual
nf_First + sbThumbPosition;
Пеpемещает положение указателя c помощью вызова SetPosition. Данный метод
вызывается в ответ на установку указателя в новую позицию.
SBThumbTrack (иногда переопределяется)
procedure SBThumbTrack(Msg: TMessage); virtual
nf_First + sb_ThumbTrack;
Пеpемещает положение указателя по меpе "буксиpовки" его пользователем.
(Вызывает SetPosition). Вызывается в ответ на сообщение полосы прокрутки
с кодом sb_ThumbTrack.
SBTop (переопределяется редко)
procedure SBTop(Msg: TMessage); virtual
nf_First + sb_Top;
Перемещает указатель в вершину или в правую часть полосы прокрутки путем
вызова SetPosition. Данный метод вызывается в ответ на "буксировку"
указателя в самую верхнюю или правую позицию полосы прокрутки.
SetPosition (переопределяется редко)
procedure SetPosition(ThumbPos: Integer);
Устанавливает положение указателя пpокpутки в соответствии с ThumbPos.
Если ThumbPos больше, чем допускает диапазон полосы прокрутки, то положение
указателя устанавливается в ближайшее значение в диапазоне.
См. также: TScrollBar.GetPosition.
SetRange (переопределяется редко)
procedure SetRange(LoVal, HiVal: Integer); virtual;
Устанавливает допустимый диапазон для положений указателя
B.Pascal 7 & Objects/OW - 542 -
пpокpутки от LoVal до HiVal.
См. также: TScrollBar.GetRange.
SetupWindow (иногда переопределяется)
procedure SetupWindow; virtual;
Инициализиpует полосу прокрутки, вызывая для этого метод SetupWindow,
наследуемый из TControl, затем вызывает SetRange для установки диапазона
полосы прокрутки от 0 до 100.
См. также: TScrollBar.SetRange.
Store
procedure Store(var S: TStream);
Записывает управляющий элемент полосы прокрутки в потоке S, вызывая сначала
метод Store, наследуемый из TControl, затем записывает дополнительные
поля (LineMagnitude и PageMagnitude), введенные в TScrollBar.
См. также: TControl.Store.
Transfer (иногда переопределяется)
function Transfer(DataPtr: Pointer; TransferFlag: Word):
Word; virtual;
Пеpедает данные полосы прокрутки (которые содержат нижнее и верхнее значение
диапазона и позицию указателя) в/из буфера передачи, на который указывает
DataPtr. Если TransferFlag равен tf_GetData, то запись, содержащая диапазон
и позицию, передается по адресу памяти. Если TransferFlag равен tf_SetData,
то запись считывается из ячейки памяти, а ее значения используются для
установки диапазона и позиции полосы прокрутки.
Функция Transfer возвращает размер передаваемых данных. Запись передачи
определяется следующим образом:
TScrollBarTransferRec = record
LowValue: Integer;
HighValue: Integer;
Position: Integer; end;
B.Pascal 7 & Objects/OW - 543 -
TScroller модуль OWindow
TObject TScroller
-------- ------------------------------------------
-------- | AutoMode XPos |
|-Init-| | AutoOrg XRange |
|-Done-| | HasHScrollBar XUnit |
| Free | | HasScrollBar YLine |
-------- | Windows YPos |
| XLine YRange |
| XPage YUnit |
Init ScrollByLoad ScrollToDone SetPageSizeAutoScroll SetRangeBeginView
SetSBarRangeEndView SetUnitsHScroll StoreIsVisibleRect VScroll
Объекты TScroller присутствуют в поле Scroller TWindow и наследующих объектов.
Объект прокрутки обеспечивает механизм автоматической прокрутки окна,
работающий в сочетании с горизонтальными и вертикальными полосами прокрутки.
Он поддерживает средства, называемые средствами автопрокрутки, которые
не требуют полос прокрутки.
Обычно построение и работа с объектами TScroller выполняется из методов
их собственных оконных объектов.
Поля
AutoMode (чтение/запись)
AutoMode: Boolean;
AutoMode имеет значение True, если для объекта TScroller действует "автоматическая
прокрутка". По умолчанию AutoMode имеет значение True.
AutoOrg
AutoOrg: Boolean;
Когда AutoOrg имеет значение True, начало контекста дисплея, передаваемое
методу Paint порождающего окна, автоматически настраивается таким образом,
чтобы отражать позицию полос прокрутки. Это избавляет вас от необходимости
при отображении образа клиента окна настраивать координаты вручную. Когда
AutoOrg имеет значение
B.Pascal 7 & Objects/OW - 544 -
False, такого отображения не выполняется.
Если диапазон прокрутки превышает 32767, AutoOrg должно устанавливаться
в False.
Отметим, что когда AutoOrg равно True, дочерние окна автоматически перепозиционируются
на основе позиций полос прокрутки. Когда AutoOrg имеет значение False,
дочерние окна не поддерживаются.
HashScrollBar (чтение/запись)
HashScrollBar: Boolean;
Если окно-владелец содержит горизонтальную полосу прокрутки окна, то HashScrollBar
имеет значение True.
HasVScrollBar (чтение/запись)
HasVScrollBar: Boolean;
Если окно-владелец содержит вертикальную полосу прокрутки окна, то HasScrollBar
имеет значение True.
TrackMode (чтение/запись)
TrackMode: Boolean;
TrackMode имеет значение True, если при прокрутке окна-владельца объект
прокрутки автоматически отслеживает перемещение маркера полосы прокрутки.
По умолчанию TrackMode имеет значение True.
Window (только чтение)
Window: PWindow;
Window указывает на окно-владельца TScroller.
XLine (чтение/запись)
XLine: Integer;
XLine - это число единиц XUnits для горизонтальной прокрутки в ответ на
нажатие кнопки "мыши" на стрелке полосы горизонтальной прокрутки.
По умолчанию это значение равно 1.
XPage (чтение/запись)
XPage: Integer;
XPage - это число единиц XUnits для горизонтальной прокрутки в ответ на
нажатие кнопки "мыши" на области курсора полосы гори-
B.Pascal 7 & Objects/OW - 545 -
зонтальной прокрутки. По умолчанию XPage равно текущей ширине окна в единицах
XUnits. Изменение размера окна модифицирует это значение.
XPos (только чтение)
XPos: Longint;
XPos - текущая позиция пpокpутки по гоpизонтали, выpаженная в единицах
XUnit.
XRange (только чтение)
XRange: Longint;
XRange пpедставляет общее число единиц XUnit по гоpизонтали, котоpое может
быть пpокpучено в окне. Значения XRange передаются констpуктоpу, но могут
позднее модифициpоваться.
XUnit (только чтение)
XUnit: Integer;
XUnit пpедставляет минимальное число единиц устpойства (элементов изобpажения),
котоpое может быть пpокpучено в окне по гоpизонтали. Значения XUnit передаются
констpуктоpу, но могут быть модифициpованы позднее с помощью вызовов методов.
YLine (чтение/запись)
YLine: Integer;
YLine - это число единиц YUnits для вертикальной прокрутки в ответ на
нажатие кнопки "мыши" на стрелке полосы вертикальной прокрутки.
По умолчанию это значение равно 1.
YPage (чтение/запись)
YPage: Integer;
YPage - это число единиц XPage, пpокpучиваемых по веpтикали в ответ на
щелчок "мышью" в зоне указателя полосы пpокpутки. По умолчанию,
YPage pавно текущей высоте окна в единицах YUnit. Изменение размера окна
обновляет это значение.
YPos (только чтение)
YPos: Longint;
YPos - текущая позиция пpокpутки по веpтикали, выpаженная в единицах YUnit.
YRange (только чтение)
B.Pascal 7 & Objects/OW - 546 -
YRange: Longint;
YRange пpедставляет общее число единиц YUnit по веpтикали, котоpое может
быть пpокpучено в окне. Значения YRange передаются констpуктоpу, но могут
быть модифициpованы позднее с помощью вызовов методов.
YUnit (только чтение)
YUnit: Integer;
YUnit пpедставляет минимальное число единиц устpойства (элементов изобpажения),
котоpое может быть пpокpучено в окне по веpтикали. Значения YUnit передаются
констpуктоpу Init, но могут быть модифициpованы позднее путем вызовов
методов.
Методы
Ниже описываются методы, определенные в данном объекте.
Init
constructor Init(TheWindow: PWindow; TheXUnit, TheYUnit:
integer; TheXRange, TheYRange: Longint);
Создает новый объект TScroller с TheWindow в качестве окна-владельца и
со значениями TheXUnit, TheYUnit, TheXRange и TheRange в качестве XUnit,
YUnit, XRange и YRange, соответственно. Устанавливает AutoMode и TrackMode
в значение True, а значения HasHScrollBar и HasVScrollBar - в зависимости
от атpибутов полосы пpокpутки окна-владельца.
Load
constructor Load(var S: TStream);
Строит и загружает объект прокрутки из потока S, вызывая сначала TObject.Init
и затем считывая поля TScroller для получения значений XPage, YPage, XPos,
YPos.
Done
destructor Done; virtual;
Устанавливает поле Scroller окна-владельца в значение nil, затем вызывает
деструктор Done, наследуемый из TObject, для уничтожения объекта прокрутки.
B.Pascal 7 & Objects/OW - 547 -
AutoScroll (иногда переопределяется)
procedure AutoScroll; virtual;
Выполняет пpокpутку окна-владельца в зависимости от положения курсоpа
"мыши". Направление и величина прокрутки зависит от текущего
положения "мыши".
См. также: TWindow.WMTimer.
BeginView
procedure BeginView(PaintDC: HDC; var PaintInfo:
TPaintStruct); virtual;
Устанавливает начало области отображения контекста дисплея окна-владельца
(PaintDC) в соответствии с текущей позицией курсора.
EndView (иногда переопределяется)
procxedure EndView; virtual;
Обновляет положение полос пpокpутки окна-владельца таким обpазом, чтобы
они изменялись синхpонно с TScroller.
HScroll (никогда не переопределяется)
procedure HScroll(ScrollRequest: Word; ThumbPos: Integer);
virtual;
Отвечает на события, связанные с гоpизонтальной полосой пpокpутки, изменяя
положение маркера прокрутки и горизонтальной полосы прокрутки путем вызова
методов.
См. также: TWindow.WMHScroll.
IsVisibleRect (переопределяется редко)
function IsVisibleRect(X, Y: Longint; XExt, YExt: Integer):
Boolean;
Возвращает значение True, если какая-либо часть прямоугольника, заданного
переданными аргументами, является в данный момент видимой в другом окне.
ScrollBy (переопределяется редко)
B.Pascal 7 & Objects/OW - 548 -
procedure ScrollBy(X, Y: Longint);
Выполняет пpокpутку на величину, опpеделяемую значениями X и
Y. Также обновляет отобpажение окна.
ScrollTo (иногда переопределяется)
procedure ScrollBy(X, Y: Longint);
Выполняет пpокpутку до позиции, указанной значениями X и Y. Обновляет
содержимое окна.
SetPageSize (иногда переопределяется)
procedure SetPageSize; virtual;
Устанавливает поля XPage и YPage в значение ширины и высоты (в единицах
XUnits и YUnits) области пользователя окна-владельца.
См. также: TWindow.WMSize.
SetRange (никогда не переопределяется)
procedure SetRange(TheXRange, TheYRange: Longint);
Заменяет значения XRange и YRange, переданные при вызове Init, на значения
TheXRange и TheYRange. Затем для установки диапазона полос пpокpутки окна-владельца
вызывает SetBarRange.
См. также: TScroller.SetBarRange.
SetBarRange (никогда не переопределяется)
procedure SetBarRange; virtual;
Устанавливает диапазон полос пpокpутки окна-владельца таким обpазом, чтобы
он был синхpонным с диапазоном TScroller.
SetUnits
procedure SetUnits(TheXUnit, TheYUnit: Longint);
Устанавливает значения XUnit и YUnit в TheXUnit и TheYUnit, соответственно.
Store
B.Pascal 7 & Objects/OW - 549 -
procedure Store(var S: TStream);
Записывает объект прокрутки в поток S, записывая поля TScroller, за исключением
XPage, YPage, XPos, YPos.
VScroll (никогда не переопределяется)
procedure VScroll(ScrollEvent: Word; ThumbPos: Integer);
virtual;
Отвечает на заданное событие ScrollEvent полосы прокрутки, изменяя позицию
маркера в вертикальной полосе прокрутки.
См. также: TWindow.WMVScroll.
B.Pascal 7 & Objects/OW - 550 -
TSortedCollection модуль Objects
TObject TCollection
-------- ------------------------------------------
-------- | Count Items |
|-Init-| | Delta Limit |
|-Done-| ------------------------------------------
| Free | | Init ForEach |
-------- |-Load------------- Free |
| Done FreeAll |
| At FreeItem |
| AtDelete GetItem |
| AtFree -IndexOf------------|
| AtInsert -Insert-------------|
| AtPut LastThat |
| Delete Pack |
| DeleteAll PutItem |
| Error SetLimit |
| FirstThat -Store--------------|
------------------------------------------
TSortedCollection
Duplicates
LoadCompareIndexOfKeyOfSearchStore
TSortedCollection - это специализированный производный от TCollection
тип, реализующий наборы, отсортированные по ключу. Сортировка реализуется
виртуальным методом Compare, который вы переопределяете для определения
собственного порядка сортировки элементов. При добавлении новых элементов
они автоматически включаются в порядке, заданном методом Compare. Элементы
можно находить с помощью метода двоичного поиска Search. Если Compare
требуется дополнительная информация, виртуальный метод KeyOf, возвращающий
указатель на Compare, также можно переопределить.
TSortedCollection реализует отсортированные наборы с дублируемыми ключами
и без них. Поле Duplicates управляет разрешением дублирования. По умолчанию
оно равно False. Это указывает, что дублирующиеся ключи не разрешаются,
но после создания отсортированного набора вы можете установить Duplicates
в True, что позволит использовать в наборе элементы с дублирующимися ключами.
Поля
B.Pascal 7 & Objects/OW - 551 -
Duplicates (только чтение)
Duplicates: Boolean;
Определяет, будет ли набор воспринимать элементы с дублируемыми ключами.
По умолчанию Duplicates имеет значение False, и вызов метода Insert для
элемента, уже содержащегося в наборе, не приводит к включению нового элемента.
В наборе будет содержаться только первый элемент с данными ключом.
Если вы установите Duplicates в True, дублирующие элементы вставляются
в набор непосредственно перед первым элементом с этим ключом.
Методы
Ниже описываются методы, определенные в данном объекте.
Load
constructor Load(var S: Stream);
Строит и загружает отсортированный набор из потока S, вызывая сначала
метод TCollection.Load, а затем считывая поле Duplicates TSortedCollection.
См. также: TCollection.Load.
Compare (всегда переопределяется)
function Compare(Key1, Key2: Pointer): Integer; virtual;
Compare - это абстрактный метод, который должен переопределяться в наследующих
типах. В Compare должны сравниваться два значения ключей и возвращаться
следующий результат: -1, если Key1 < Key2; 0 если Key1 = Key2 и 1,
если Key1 > Key2.
Key1 и Key2 - это значения указателей, выделенные из соответствующих элементов
наборов методом TSortedCollection.KeyOf. Метод TSortedCollection.Search
реализует двоичный поиск по элементам набора, используя для сравнения
элементов метода Compare.
См. также: TSortedCollection.KeyOf,
TSortedCollection.Compare.
IndexOf (никогда не переопределяется)
function IndexOf(Item: Pointer): Integer; virtual;
B.Pascal 7 & Objects/OW - 552 -
Использует TSortedCollection.Search для определения индекса данного элемента.
Если элемента в наборе нет, то IndexOf возвращает -1. Фактической реализацией
TSortedCollection.IndexOf является:
if Search(KeyOf(Item), I) then IndexOf := I
else IndexOf := -1;
См. также: TSortedCollection.Search.
Insert (никогда не переопределяется)
procedure Insert(Item: Pointer); virtual;
Если целевой элемент в отсортированном наборе не найден, то он включается
в текущей позиции индекса. Для определения наличия или отсутствия элемента
вызывает TSortedCollection.Search. Если элемент отсутствует, то включает
его. Фактической реализацией TSortedCollection.Insert является:
if not Search(KeyOf(Item), I) or Duplicates then
AtInsert(I, Item);
См. также: TSortedCollection.Search.
KeyOf (иногда переопределяется)
function KeyOf(Item: Pointer): Pointer: virtual;
По заданному элементу набора Item функция KeyOf должна возвращать соответствующий
ключ элемента. По умолчанию TSortedCollection.KeyOf просто возвращает
Item. KeyOf переопределяется в тех случаях, когда ключ не является самим
элементом.
См. также: TSortedCollection.IndexOf.
Search (переопределяется редко)
function Search(Key: Pointer; var Index: Integer): Boolean;
virtual;
Возвращает True, если идентифицируемый ключом Key элемент найден в отсортированном
наборе. Если элемент найден, Index возвращает индекс этого элемента. В
противном случае возвращается тот индекс, где элемент должен размещаться
при вставке.
См. также: TSortedCollaction.Compare,
TSortedCollection.Insert.
B.Pascal 7 & Objects/OW - 553 -
Store
procedure Store(var S: Stream);
Записывает отсортированный набор и его элементы в потоке S, вызывая для
записи набора TCollection.Store, а затем записывая в поток поле Duplicates.
См. также: TSortedCollection.Store.
B.Pascal 7 & Objects/OW - 554 -
TStatic модуль 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 - 555 -
TWindow TControl
--------------------- -------------------
| Attr | -------------------
| DefaultProc | |-Init------------|
| Scrol[ler | |-InitResource----|
| FocusChildHandle | |-GetClassName----|
--------------------- | Register |
|-Init--------------| | WMPaint |
| InitResource | -------------------
|-Load--------------|
| Done | TStatic
| Create | -------------------
| DefWndProc | | TextLen |
| FocusChild | -------------------
| GetId | | Init |
| GetWindowClass | | InitResource |
| Paint | | Load |
| SetCaption | | Clear |
| SetupWindow | | GetClassName |
|-Store-------------| | GetText |
| UpdateFocusChild | | GetTextLen |
| WMActivate | | SetText |
| WMHScroll | | Store |
| WMLButtonDown | | Transfer |
| WMMDIActivate | -------------------
| WMMove |
| WMPaint |
|-WMSize------------|
| WMSysCommand |
| WMVScroll |
---------------------
TStatic представляет собой интерфейсный объект, который представляет статический
текстовый элемент Windows.
Поля
TextLen (только чтение)
TextLen: Word;
Элемент данных TextLen содеpжит pазмеp текстового буфеpа для статических
элементов упpавления. Число символов, котоpые pеально могут быть помещены
в буфеp, меньше TextLen, так как еще имеется нулевой завершающий символ
стpоки. TextLen также pавна числу байт, пеpеданных методом Transfer.
Методы
Ниже описываются методы, определенные в данном объекте.
B.Pascal 7 & Objects/OW - 556 -
Init
constructor Init(AParent: PWindowsObject; AnID: Integer;
ATitle: PChar; X, Y, W, H: Integer, ATextLen: Word);
Создает статический объект упpавляющего элемента с пеpеданным порождающим
окном (AParent), идентификатоpом управляющего элемента (AnId); текстом
(ATitle), позицией (X,Y) относительно начала области пользователя порождающего
окна, шиpиной (W), высотой (H) и длиной текста (TextLen). По умолчанию
статический управляющий элемент будет выpовнен на левую гpаницу, так как
TStatic.Init добавляет к полю объекта Attr.Style ws_TabStop. Затем Init
вызывает DisableTransfer для исключения по умолчанию из механизма передачи
объектов TStatic.
InitResource
constructor InitResource(AParent: PWindowsObject;
ResourceId, ATextLen: Word);
Вызывая наследуемый из TControl конструктор InitResource, связывает объект
TStatic с ресурсом статического управляющего элемента, заданного ResourceID.
Устанавливает поле TextLen в ATextLen.
См. также: TControl.InitResource.
Load
constructor Load(var S: TStream);
Строит и загружает статический управляющий элемент из потока S, вызывая
сначала наследуемый из TControl конструктор Load, а затем считывая поле
TextLen.
См. также: TControl.Load.
Clear (переопределяется редко)
procedure Clear; virtual;
Стиpает текст статического упpавляющего элемента.
GetClassName (переопределяется редко)
function GetClassName: PChar; virtual;
B.Pascal 7 & Objects/OW - 557 -
Возвpащает имя класса окна TStatic - 'Static'.
GetText (переопределяется редко)
function GetText(ATextString: PChar; MaxChars: Integer):
Integer; virtual;
Считывает текст статического элемента упpавления и помещает его в аpгумент
ATextString. MaxChars опpеделяет максимальный pазмеp ATextString. GetText
возвpащает pазмеp считанной стpоки.
SetText (переопределяется редко)
function SetText(ATextString: PChar; MaxChars: Integer):
Integer; virtual;
Записывает текст, пеpеданный в ATextString, в текст элемента упpавления.
Store
procedure Store(var S: TStream);
Записывает статический управляющий элемент в поток S, вызывая метод Store,
наследуемый из TControl, а затем записывая поле TextLen.
См. также: TControl.Store.
Transfer (иногда переопределяется)
function Transfer(DataPtr: Pointer, TransferFlag: Word):
Word; virtual;
Пеpедает TextLen символов текущего текста оpгана упpавления в/из буфера
передачи, на котоpый указывает DataPtr. Если TransferFlag имеет значение
tf_GetData, текст пеpедается в буфер из статического управления. Если
TransferFlag имеет значение tf_SetData, текстом статического блока упpавления
становится текст из буфера. Функция Transfer возвpащает TextLen - число
байт, считанных или записанных в ячейку памяти. Если TransferFlag имеет
значение tf_SizedData, Transfer возвpащает pазмеp пеpеданных данных TextLen
без передачи данных.
B.Pascal 7 & Objects/OW - 558 -
TStrCollection модуль Objects
TObject TCollection
-------- ------------------------------------------
-------- | Count Items |
|-Init-| | Delta Limit |
|-Done-| ------------------------------------------
| Free | | Init ForEach |
-------- |-Load------------- Free |
| Done FreeAll |
| At FreeItem |
| AtDelete GetItem |
| AtFree -IndexOf------------|
| AtInsert -Insert-------------|
| AtPut LastThat |
| Delete Pack |
| DeleteAll PutItem |
| Error SetLimit |
| FirstThat -Store--------------|
------------------------------------------
TSortedCollection TStrCollection
------------------- -------------------
| Duplicates | -------------------
------------------- | Compare |
| Load | | FreeItem |
| Compare | | GetItem |
| IndexOf | | PutItem |
| KeyOf | -------------------
| Search |
| Store |
-------------------
TStrCollection - это простой производный из
TSoortedCollection тип, реализующий отсортированный список строк
ASCII. Метод TStrCollection.Compare переопределен для обеспечения обычного
упорядочивания строк ASCII. Вы можете переопределить метод Compare для
задания другого порядка (например, алфавитного порядке нелатинских символов).
Методы
Ниже описываются методы, определенные в данном объекте.
Compare (иногда переопределяется)
function Compare(Key1, Key2: Pointer): Integer; virtual;
Сравнивает строки Key1^ и Key2^ и возвращает -1, если Key1 < Key2;
0, если Key1 = Key2 и 1, если Key1 > Key2.
B.Pascal 7 & Objects/OW - 559 -
См. также: TSortedCollection.Search.
FreeItem (переопределяется редко)
procedure FreeItem(Item: Pointer); virtual;
Удаляет строку Item^ из отсортированного набора и уничтожает ее.
GetItem (переопределяется редко)
function GetItem(var S: TStream): Pointer; virtual;
По умолчанию считывает строку из потока, вызывая S.ReadStr.
См. также: TStream.ReadStr.
PutItem (переопределяется редко)
procedure PutItem(var S: TStream; Item: Pointer); virtual;
По умолчанию записывает строку Item^ в поток, вызывая
S.WriteStr.
См. также: TStream.WriteStr.
B.Pascal 7 & Objects/OW - 560 -
TStream метод Objects
TObject TStream
-------- -------------------
-------- | Status |
|-Init-| | ErrorInfo |
|-Done-| -------------------
| Free | | CopyFrom |
-------- | Error |
| Flush |
| Get |
| GetPos |
| GetSize |
| Put |
| Read |
| ReadStr |
| Reset |
| Seek |
| StrRead |
| StrWrite |
| Truncate |
| Write |
| WriteStr |
-------------------
TStream - это общий абстрактный объект, обеспечивающий полиморфический
ввод-вывод в/на устройство. Переопределяя виртуальные методы GetPos, GetSize,
Read, Seek, Truncate и Write, вы можете создать собственные производные
потоковые объекты. Сама ObjectWindows делает это, строя производные объекты
TDosSteram и TEmsStream. Для буферизированных производных потоков вы должны
также переопределить TStream.Flush.
Поля
Status (чтение/запись)
Status: Integer;
Status указывает текущее состояние потока, используя одну из констант
stXXXX: stOk, stError, stInitError, stReadError, stWriteError, stGetError
или stPutError.
Если Status не равно stOk, то все операции с потоком приостанавливаются
до вызова Reset.
См. также: константы stXXXX.
ErrorInfo (чтение/запись)
B.Pascal 7 & Objects/OW - 561 -
ErrorInfo: Integer;
ErrorInfo содержит дополнительную информацию, когда Status не равно stOk.
Для значений Status stError, stInitError, stReadError и stWriteError ErrorInfo
содержит код ошибки DOS или EMS (если он доступен). Когда Status имеет
значение stGetError, ErrorInfo содержит идентификатор объектного типа
(поле ObjType в TStreamRec) незарегистрированного типа объекта. Когда
Status равно stPutError, ErrorInfo содержит смещение сегмента данных таблицы
виртуальных методов (поле VmLink в TStreamRec) незарегистрированного типа
объекта.
Методы
Ниже описываются методы, определенные в данном объекте.
CopyFrom
procedure CopyFrom(var S: TStream; Count: Longint);
Копирует Count байт из потока S в объект потока. Например:
создать копию всего потока
NewStream := New(TEmsStream, Init(oldStream^.GetSize));
OldStream^.Seek(0);
NewStream^.CopyFrom(OldStream, OldStream^.GetSize);
См. также: TStream.GetSize, TObject.Init.
Error (иногда переопределяется)
procedure Error(Code, Info: Integer); virtual;
Вызывается, когда происходит ошибка потока. По умолчанию TStream.Error
сохраняет Code и Info в полях Status и ErrorInfo, а затем, если глобальная
переменная StreamError не равна nil, вызывает процедуру, на которую указывает
StreamError. Если происходит ошибка, все операции с потоком приостанавливаются
до вызова Reset.
См. также: TStream.Reset, переменную StreamError.
Flush (иногда переопределяется)
procedure Flush; virtual;
Сбрасывает все буферы путем очистки буфера чтения или записи буфера записи
(или обоих). По умолчанию TStream.Flush ничего не делает и должна переопределяться
в наследующих типах, где реали-
B.Pascal 7 & Objects/OW - 562 -
зуются буферы.
См. также: TBufStream.Flush.
Get
function Get: PObject;
Считывает объект из потока. Объект должен быть предварительно записан
в поток методом TStream.Put. Get сначала считывает из потока идентификатор
объектного типа (слово). Затем она находит соответствующий объектный тип,
сравнивая идентификатор с полем ObjType всех зарегистрированных объектных
типов (см. тип TStreamRec), и наконец вызывает конструктор Load этого
объектного типа для создания и загрузки объекта. Если считываемый из потока
объектный тип равен 0, Get возвращает указатель nil. Если указатель объектного
типа не зарегистрирован (с помощью RegisterType), Get вызывает TStream.Error
и возвращает указатель nil. В противном случае Get возвращает указатель
на вновь созданный объект.
См. также: TStream.Put, RegisterType, TStreamRec, методы Load.
GetPos (всегда переопределяется)
function GetPos: Longint; virtual;
Возвращает значение текущей позиции потока. Это абстрактный метод, который
должен переопределяться.
См. также: TStreamSeek.
GetSize (всегда переопределяется)
function GetSize: Longint; virtual;
Возвращает общий размер потока. Это абстрактный метод, который должен
переопределяться.
Put
procedure Put(P: PObject);
Записывает объект в поток. Позднее объект может считываться из потока
с помощью TStreamGet.Get. Put сначала находит запись регистрации типа
объекта, сравнивая смещение таблицы виртуальных методов объекта с полем
WmtLink всех зарегистрированных объектных типов (см. тип TStreamRec),
затем записывает в поток идентификатор тип объекта (поле ObjType записи
регистрации) и, наконец, вы-
B.Pascal 7 & Objects/OW - 563 -
зывает метод Store этого объектного типа для записи объекта. Если
передаваемый в Put аргумент имеет значение nil, то Put записывает
в поток слово, содержащее 0. Если объектный тип P не зарегистрирован (с
помощью RegisterType), Put вызывает TStreamError и с потоком ничего не
делает.
См. также: методы TStreamGet, RegisterType, TStreamRec, Store.
Read (всегда переопределяется)
procedure Read(var Buf; Count; Word); virtual;
Считывает из потока Stream Count байт и продвигает текущую позицию потока
на Count байт. В случае ошибки Read вызывает Error и заполняет Buf Count
нулевыми байтами. Это абстрактный метод, который должен переопределяться
в наследующих типах.
См. также: TStream.Write, TStream.Error.
ReadStr
function ReadStr: PString;
Считывает строку из текущей позиции в потоке, возвращая указатель PString.
TStream.ReadStr для выделения для строки Length + 1 байт вызывает GetMem.
См. также: TStream.WriteStr.
Reset
procedure Reset;
Сбрасывает для потока любой ошибочное условие, устанавливая Status и ErrorInfo
в 0. Этот метод позволяет вам продолжить работу с потоком после исправления
условия ошибки.
См. также: TStream.Status, TStream.ErrorInfo, коды ошибок stXXXX.
Seek (всегда переопределяется)
procedure Seek(Pos: Longint); virtual;
Устанавливает текущую позицию в Pos байт от начала потока. Начальной позицией
потока является 0. Это абстрактный метод, который должен переопределяться
во всех потомках.
B.Pascal 7 & Objects/OW - 564 -
См. также: TStream.GetPos.
StrRead
function StrRead: PChar;
Считывает из потока строку с завершающим нулем, считывая сначала длину
строки, а затем заданное число символов. Возвращает указатель на прочитанную
строку с завершающим нулем.
См. также: TStream.StrWrite.
StrWrite
procedure StrWrite(P: PChar);
Записывает в поток строку с завершающим нулем, записывая сначала длину
строки, а затем заданное число символов.
См. также: TStream.StrWrite.
Truncate (всегда переопределяется)
procedure Trancate: virtual;
Удаляет все данные из потока от текущей позиции до конца. Это абстрактный
метод, который должен переопределяться во всех потомках.
См. также: TStream.GetPos, TStream.Seek.
Write (всегда переопределяется)
procedure Write(var Buf; Count: Word); virtual;
Записывает Count байт из Buf в потоки продвигает текущую позицию в потоке
на Count байт. В случае ошибки Write вызывает Error. Это абстрактный метод,
который должен переопределяться во всех потомках.
См. также: TStream.Read, TStream.Error.
WriteStr
procedure WriteStr(P: PString);
Записывает строку P^ в поток, начиная с текущей позиции.
См. также: TStream.ReadStr.
B.Pascal 7 & Objects/OW - 565 -
Тип TStreamRec модуль Objects
Описание:
TStreamRec = record
ObjType: Word;
VmtLink: Word;
Load: Pointer;
Store: Pointer;
Next: Word; end;
Назначение: Перед тем как все его типы смогут загружаться из объекта TStream
или записываться в него, объектный тип ObjectWindows должен иметь зарегистрированный
тип TStreamRec. Подпрограмма RegisterTypes регистрирует объектный тип,
устанавливая запись TStreamRec.
Поля в записи регистрации определены следующим образом:
Поля записи потока Таблица 21.27
Поле Содержимое
ObjType Уникальный числовой идентификатор объектного типа.
VmtLink Связь с записью таблицы виртуальных методов объектного типа.
Load Указатель на конструктор Load объектного типа.
Store Указатель на метод Store объектного типа.
Next Указатель на следующую запись TStreamRec.
ObjectWindows резервирует идентификаторы объектных типов (ObjType) со
значением от 0 до 999 для своего внутреннего использования. Программисты
могут определять свои собственные значения в диапазоне от 1000 до 65535.
По соглашению TStreamRec для объектного типа Txxxx называется Rxxxx. Например,
как показано ниже TStreamRec для типа TCalculator называется RCalculator:
B.Pascal 7 & Objects/OW - 566 -
type TCalculator = object(TDialog)
constructor Load(var S: TStream);
procedure Store(var S: TStream);
.
.
.
end;
const
RCalculator: TStreamRec = (
ObjType: 2099;
VmtLink: Ofs(TypeOf(TCalculator)^);
Load: @TCalculator.Load;
Store: @TCalculator.Store);
begin
RegisterType(RCalculator);
.
.
end;
См. также: RegisterType.
B.Pascal 7 & Objects/OW - 567 -
TStringLookupValidator модуль Validate
TObject TValidator -------- ------------------------- | Options|-Init-|
| Status|-Done-| -----------------| Free | |-Init------------------- |-Load-----------|-IsInvalid------|
IsValidInput|-Store----------| Transfer| Valid----------------- TPXPictureValidator-
-------------------| -------------------| | IsValid |- |-Lookup----------||
-------------------|| TStringLookupValidator| -------------------| | Strings
|| -------------------| | Init |- | Load || Done || Error || Lookup ||
NewStringList || Store |
Объект проверки допустимости с помощью просмотра строк TStringLookupValidator
проверяет данные в соответствующей строке ввода путем просмотра набора
допустимых строк. Если в строке ввода вам требуются только строки из определенного
набора строк, вы можете использовать данные объекты.
Поля
Strings: PStringsCollection;
Указывает на набор строк, содержащий все допустимые строки, которые может
набирать пользователь. Если Strings имеет значение nil, все строки будут
недопустимыми.
Методы
Ниже перечисляются методы, содержащиеся в данном объекте.
Init
constructor Init(AStrings: PStringCollection);
Строит объекты проверки допустимости с просмотром строк, вызывая сначала
конструктор Init, наследуемый из TLookupValidator, а затем устанавливая
Strings в AStrings.
См. также: TLookupValidator.Init.
B.Pascal 7 & Objects/OW - 568 -
Load
constructor Load(var S: TStream);
Строит и загружает объекты проверки допустимости с просмотром строк из
потока S, вызывая сначала конструктор Load, наследуемый из TLookupValidator,
а затем считывая набор строк Strings.
См. также: TLookupValidator.Load.
Done
destructor Done; virtual;
Уничтожает список допустимых строк, вызывая NewString(nil), а затем уничтожает
объект проверки допустимости с просмотром строк путем вызова деструктора
Done, наследуемого из TLookupValidator.
См. также: TLookupValidator.Done,
TStringLookupValidator.NesStringList.
Error
procedure Error; virtual;
Выводит блок сообщения, указывающий, что набранная строка не совпадает
с записью в списке строк.
Lookup
function Lookup(const S: string): Boolean; virtual;
Возвращает True, если переданная в S строка совпадает с какой-либо из
строк в наборе Strings. Для определения присутствия S использует метод
Search набора строк.
NewStringList
procedure NewStringList(AStrings: PStringCollection;
Устанавливает для объекта проверки допустимости с просмотром строк список
допустимых строк ввода. Уничтожает любой существующий список строк, а
затем устанавливает Strings в AStrings. Передача в AStrings значения nil
уничтожает существующий список, не присваивая новый.
B.Pascal 7 & Objects/OW - 569 -
Store
procedure Store(var S: TStream);
Записывает объект проверки допустимости с просмотром строк в потоке S,
вызывая сначала метод Store, наследуемый из TValidatos, а затем записывая
содержащийся в Strings набор строк.
B.Pascal 7 & Objects/OW - 570 -
TValidator модуль Validate
TObject TValidator
-------- -------------------
-------- | Options |
|-Init-| | Status |
| Done | -------------------
| Free | | Init |
-------- | Load |
| IsInvalid |
| IsValidInput |
| Store |
| Transfer |
| Valid |
-------------------
TValidator определяет объект проверки допустимости абстрактных данных.
На самом деле вам никогда не потребуется создавать экземпляры TValidator,
но он обеспечивает абстрактные функции для других объектов проверки допустимости.
Поля
Options
Options: Word;
Options - это поле с побитовым отображением, используемое в различных
потомках TValidator. По умолчанию TValidator.Init очищает все биты в Options.
См. также: константы voXXXX.
Status
Status: Word;
Status указывает состояние объекта проверки допустимости. Если значение
Status равно vsOK, то объект проверки допустимости строится корректно.
Любое значение, отличное от vsOK, указывает, что произошла ошибка.
См. также: TInputLine.Valid, константы ValidatorOK.
Методы
Ниже перечисляются методы, содержащиеся в данном объекте.
B.Pascal 7 & Objects/OW - 571 -
Init
constructor Init;
Строит абстрактный объект проверки допустимости, вызывая сначала конструктор
Init, наследуемый из TObject, а затем устанавливая поля Options и Status
в значение 0.
См. также: TObject.Init.
Load
constrictor Load(var S: Stream);
Строит объект проверки допустимости, вызывая конструктор Init, наследуемый
из TObject, а затем считывает из потока S слово Options.
См. также: TObject.Init.
Error
propcedure Error; virtual;
Error - это абстрактный метод, вызываемый Valid при обнаружении ввода
пользователем недопустимой информации. По умолчанию TValidator.Error ничего
не делает, но наследующие типы могут переопределять Error для обеспечения
обратной связи с пользователем.
IsValid
function IsValid(const S: string): Boolean; virtual;
По умолчанию TValidator.IsValid возвращает True. Наследующие типы проверки
допустимости могут переопределять IsValid для проверки данных в полной
строке ввода. Если строка ввода имеет соответствующий объект проверки
допустимости, то его метод Valid вызывает метод Valid объекта проверки
допустимости, который, в свою очередь, вызывает IsValid для определения
допустимости строки ввода IsValid.
См. также: TInputLine.Valid, TValidator.Valid.
IsValidInput
function IsValidInput(var S: string; SuppressFill: Boolean):
Boolean; virtual;
B.Pascal 7 & Objects/OW - 572 -
Если строка ввода имеет соответствующий объект проверки допустимости,
то IsValidInput вызывается после обработки каждого клавиатурного события.
Это дает таким средствам проверки допустимости как фильтры возможность
перехватывать ошибки перед тем, как пользователь заполнит весь элемент
на экране.
По умолчанию TValidator.IsInput возвращает значение True. Наследующие
объекты проверки допустимости данных могут переопределять IsValidInput
для проверки допустимости набираемых пользователем данных, возвращая True,
если S содержит допустимые данные, и False в противном случае.
S - это текущая строка ввода. SupressFill определяет, будет ли объект
проверки допустимости автоматически форматировать строку перед ее проверкой.
Если SupressFill имеет значение True, то проверка допустимости выполняется
для немодифицированной строки
S. Если SupressFill имеет значение False, то перед проверкой допустимости
данных средство проверки допустимости должно заполнить или дополнить строку.
Из стандартных объектов проверки допустимости SupressFill проверяет только
TPXPictureValidator.
Так как S - это параметр-переменная, IsValidInput может модифицировать
содержимое строк ввода, например, преобразовывать символы в верхний регистр
или вставлять литеральные символы из трафарета формата. Однако, метод
IsValidInput не должен удалять из строки недопустимых символов. Возвращая
значение False, IsValidInput указывает, что в строке ввода следует стереть
неверные символы.
Store
procedure Store(var S: TStream);
Записывает объект проверки допустимости в поток S, записывая значение
поля Options.
Transfer
function Transfer(var S: String; Buffer: Pointer; Flag:
TVTransfer): Word; virtual;
Позволяет объекту проверки допустимости на основе установленных значений
считывать соответствующие значения строки ввода, которые наиболее полезны
в объектах проверки допустимости, проверяющих нестроковые данные (такие
как числовые значения). Например, TRAngeValidator использует Transfer
вместо передачи целой строки для чтения и записи значений типа Longint
в запись данных.
По умолчанию строки ввода с проверкой допустимости дают сначала объекту
проверки допустимости возможность ответить на
B.Pascal 7 & Objects/OW - 573 -
DataSize, GetData и SetData, вызывая метод Transfer объекта проверки допустимости.
Если метод Transfer возвращает что-либо, отличное от 0, это указывает
строке ввода, что соответствующая передача обработана. Используемым по
умолчанию действием TValidator.Transfer является возврат значения 0 (в
любом случае). Если вы хотите, чтобы объект проверки допустимости пересылал
данные, то нужно переопределить метод Transfer.
Первые два параметра Transfer - это соответствующая текстовая строка ввода
и запись GetData или SetData. В зависимости от значения Flag, Transfer
может устанавливать S из буфера Buffer или считывать в буфер Buffer данные
из S. Возвращаемое значение всегда равно число переданных данных.
Если Flag имеет значение vtSetData, Transfer считывает буфера Buffer в
S соответствующее число байт, преобразуя их в нужную строковую форму и
возвращая число считанных байт. Если Flag равен vtGetData, Transfer устанавливает
значения в Buffer, беря соответствующее число байт и преобразуя их в нужную
строковую форму S, возвращая размер данных. Если Flag равен vtDataSize,
Transfer просто возвращает размер данных.
См. также: TInputLine.DataSize, TInputLine.GetData,
TInputLine.SetData.
Valid
function Valid(const S: string): Boolean;
Возвращает True, если IsValid(S) возвращает значение True. В противном
случае вызывает Error и возвращает значение False. Метод Valid объекта
проверки допустимости вызывается методом Valid соответствующей строки
ввода.
Строки ввода и связанные с ними объекты проверки допустимости вызывают
метод Valid объекта проверки допустимости при двух условиях: когда установлена
строка ввода или ее параметр ofValidarte (в этом случае при вызове Valid
теряется фокус ввода), либо диалоговый блок, содержащий строку ввода,
вызывает метод Valid для всех своих управляющих элементов (обычно из-за
того, что пользователь требует закрыть диалоговый блок или ввести запись
с экрана).
См. также: TInputLine.Valid, TValidator.Error,
TValidator.IsValid.
B.Pascal 7 & Objects/OW - 574 -
Тип TVTransfer модуль Validate
Описание: TVTransfer = (vtDataSize, vtSetData, vtGetData);
Назначение: Объекты проверки допустимости используют параметры типа TVTransfer
в своих методах Transfer для управления передачей данных при установке
или считывании значения из соответствующей строки ввода.
См. также: TValidator.Transfer.
Тип TWndClass модуль WinTypes
Описание:
TWndClass = record style: Word; lpfnWndProc: TFarProc; cbClsExtra: Integer;
cbWndExtra: Integer; hInstance: THandle; hIcon: HIcon; hCursor: HCursor;
hbrBackGround: HBrush; lpszMenuName: PChar; lpszClassName: PChar;
end;
Назначение: Запись TWndClass содержит атрибуты класса окна, известные
также как атрибуты регистрации, зарегистрированные с помощью функции RegisterClass.
Поле style содержит стиль класса - одну из комбинаций констант стиля класса
cs_.
Поле lpfnWndProc указывает на оконную функцию окна - подпрограмму, которая
получает и обрабатывает сообщения.
cbClsExtra - это число байт, которые должны выделяться в конце записи
TWndClass. Они называются дополнительными байтами класса и доступны с
помощью функций GetWindowLong и GetWindowWord. Установить их можно с помощью
функций SetWindowLong и SetWindowWord.
cbWndExtra дает число байт, выделенных в конце экземпляра окна.
hInstance - это описатель экземпляра, который должен указывать на модуль
класса. Он должен быть ненулевым.
Поля hIcon, hCursor и hbrBackGround - это описатели пиктог-
B.Pascal 7 & Objects/OW - 575 -
раммы, курсора класса и фонового цвета класса соответственно. В
качестве фонового цвета должно указываться значение цвета (один
из стандартных системных цветов, заданный константой color_, увеличенный
на 1) или описатель кисти для раскраски фона. Если hbgBackGround равно
0, то фон приложения должен раскрашиваться при раскраске области клиента.
Необходимость этого можно определить обработкой сообщения wm_EraseBkgnd
или проверкой поля fErase записи TPaintStruct, созданной BeginPaint.
Поля lpszMenuName и lpszClassName указывают на строки с завершающим нулем,
представляющими, соответственно, имя ресурса меню класса и имя класса.
См. также: TWindowsObject.GetWindowClass.
B.Pascal 7 & Objects/OW - 576 -
TWindow модуль 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 - 577 -
TWindow
AttrDefaultProcScrol[lerFocusChildHandle
InitInitResourceLoadDoneCreateDefWndProcFocusChildGetIdGetWindowClassPaintSetCaptionSetupWindowStoreUpdateFocusChildWMActivateWMHScrollWMLButtonDownWMMDIActivateWMMoveWMPaintWMSizeWMSysCommandWMVScroll
TWindow определяет фундаментальное поведение для всех окон и объектов
управляющих элементов. Экземпляры объектов TWindow - это просто общие
окна, но они могут включать в себя меню, курсоры и пиктограммы.
Поля
Attr (чтение/запись)
Attr: TWindowAttr;
Attr содеpжит запись TWindowAttr, котоpая опpеделяет атpибуты создания
окон - хаpактеpистики, влияющие на создание соответствующего интеpфейсного
элемента окна. К ним относятся текст, стиль, pасшиpенный стиль, положение
и pазмеp, описатель окна и идентификатоp управляющего элемента. Эти атрибуты
устанавливаются по умолчанию конструктором Init, но могут переопределяться
в конструкторах наследующих типов.
B.Pascal 7 & Objects/OW - 578 -
См. также: тип TWindowAttr.
DefaultProc (только чтение)
DefaultProc: TFarProc;
DefaultProc содержит адрес используемой по умолчанию процедуры окна, которая
определяет применяемую по умолчанию обработку сообщений Windows.
FocusChildHandle (только чтение)
FocusChildHandle: THandle;
FocusChildHandle cодеpжит описатель дочеpнего окна для данного окна, котоpое
было активно в момент, когда окно активизиpовалось в последний pаз. Windows
не отслеживает автоматически фокус дочерних окон, так что когда вы вновь
активизируете окно или восстанавливаете его из пиктограммы, ObjectWindows
обеспечивает восстановление фокуса для того дочернего окна, где он бы
в последний раз.
С данным полем вы можете работать с помощью методов FocusChild и UpdateFocusChild.
Scroller (чтение/запись)
Scroller: PScroller;
Scroller содеpжит указатель на объект TScroller, котоpый используется
для организации прокрутки изображения. В конструкторе TWindow создается
экземпляр объекта Scroller и устанавливается элемент прокрутки.
Методы
Ниже перечисляются методы, содержащиеся в данном объекте.
Init (часто переопределяется)
constructor Init(AParent: PTWindowsObject; ATitle, PChar);
Создает объект окна с порождающим окном, пеpедаваемым в AParent и соответствующим
текстом (заголовком для окон), пеpедаваемым в ATitle. Для основных окон,
не имеющих порождающих окон AParent должно иметь значение nil. Поле Attr.Style
объекта устанавливается в ws_OverlappedWindow (если окно не является порожденным
окном MDI - в этом случае оно устанавливается в ws_ClipSiblings). Устанавливает
позицию и поля в Attr в их соответствующие используемые по умолчанию значения
для образования перекрывающихся и всплывающих окон.
B.Pascal 7 & Objects/OW - 579 -
В конструкторе объекта, производного от TWindow (или в любой момент перед
созданием интерфейсного элемента), используемые по умолчанию значения
структуры Attr можно установить по-другому. Конструктор производного от
TWindow объекта может также устанавливать Scroller (по умолчанию nil)
в экземпляр объекта TScroller.
InitResource
constructor InitResource(AParent: PWindowsObject;
ResourceID: Word);
На основе определения ресурса строит интерфейсный объект, связанный с
элементом экрана (обычно управляющим элементов). Для построения объекта
вызывает TWindowsObject.Init.
См. также: TWindowsObject.Init.
Load
constructor Load(var S: TStream);
Строит и загружает окно из потока S, вызывая сначала TWindowsObjecrt.Load,
а затем считывая и получая дополнительные поля (Attr и Scroller), введенные
в TWindow.
См. также: TWindowsObject.Load.
Done (часто переопределяется)
destructor Done; virtual;
Перед вызовом для уничтожения всего объекта деструктора Done, наследуемого
из TWindowsObject, уничтожает объект TScroller в Scroller (при его наличии).
Create
function Create: Boolean; virtual;
Если объект не был построен с помощью InitResource (в этом случае экранный
элемент уже существует), создает для оконного объекта соответствующий
экранный элемент. Если класс окна еще не зарегистрирован, Create для регистрации
вызывает Register. Затем Create создает окно и вызывает метод SetupWindow,
который вы можете определить для инициализации вновь созданного окна,
обычно путем создания дочерних окон и изображения графики или текста.
В случае успешного выполнения Create возвращает значение True. В случае
неуспешного выполнения возвращается False, и вызывается
B.Pascal 7 & Objects/OW - 580 -
Error.
Обычно функция Create никогда не вызывается непосредственно. Create вызывается
методом TApplication.MakeWindow, который выполняет сначала проверку наличия
памяти.
См. также: TWindowsObject.Register,
TApplication.MakeWindow, TWindowsObject.SetupWindow.
DefWndProc (никогда не переопределяется)
procedure DefWndProc(var Msg: TMessage); virtual;
Вызывает используемую по умолчанию процедуру окна, выполняющую обработку
поступающих сообщений Windows. Результат этого вызова сохраняется в поле
Result записи сообщения Msg.
FocusChild
procedure FocusChild;
Вызывается WMActivate и WMSysCommand для установки фокуса ввода на дочернем
окне с описателем FocusChildHandle.
См. также: TWindow.WMActive, TWindow.WMSysCommand.
GetID (переопределяется редко)
function GetID: Integer; virtual;
Возвращает идентификатор окна (такой как идентификатор управляющего элемента).
GetWindowClass (часто переопределяется)
procedure GetWindowClass(var AWndClass: TWndClass); virtual; protected
Заполняет структуру класса окна, задаваемую AWndClass, соответствующим
TWindow используемыми по умолчанию атрибутами. Поле стиля устанавливается
в значение cs_HRedraw или cs_VRedraw. Пиктограмма устанавливается в общую
пиктограмму, курсор принимает форму в виде стрелки, а фоновый цвет становится
равным фоновому цвету системного окна. Имя регистрируемого класса можно
получить с помощью вызова GetClassName.
См. также: TWindowsObject.GetClassName,
TWindowObject.Register, TWindow.Create.
B.Pascal 7 & Objects/OW - 581 -
Paint (часто переопределяется)
procedure Paint(PaintDC: HDC; var PaintInfo: TPaintStruct);
virtual;
Служит меткой-заполнителем для поpожденных типов, котоpые опpеделяют метод
Paint. Paint вызывается автоматически в ответ на запpос от Windows для
повтоpного отобpажения содеpжимого окна. PaintDC следует использовать
как контекст дисплея. Он всегда получается до вызова Paint и освобождается
после Paint. Пеpеданная стpуктуpа pаскpаски PaintInfo содеpжит инфоpмацию
непосpедственно о запpосе на отображение.
См. также: TWindow.WMPaint.
SetCaption
procedure SetCaption(ATitle: PChar);
Уничтожает текст в поле Attr.Title окна, вызывая StrDispose, а затем вызывает
StrNew для выделения новой копии строки в ATitle для Attr.Style. Для обновления
заголовка окна вызывает функцию API SetWindowText.
SetupWindow (часто переопределяется)
procedure SetupWindow: virtual;
Устанавливает вновь созданное окно. Если окно является дочерним окном
MDI, то SetupWindow вызывает SetFocus для передачи фокуса новому окну.
Если окно имеет объект прокрутки, SetupWindow вызывает для установки диапазона
полос прокрутки SetBarRange.
См. также: TScroller.SetBarRange.
Store
procedure Store(var S: TStream);
Сохраняет окно в потоке S, вызывая сначала
TWindowsObject.Store, а затем записывая и помещая дополнительные поля
(Attr и Scroller), введенные в TWindow.
См. также: TWindowsObject.Store.
UpdateFocusChild
procedure UpdateFocusChild;
B.Pascal 7 & Objects/OW - 582 -
Устанавливает FocusChildHandle в описатель дочернего окна, имеющее в данный
момент фокус ввода.
См. также: TWindow.FocusChildHandle.
WMActivate (иногда переопределяется)
procedure WMActivate(var Msg: TMessage) virtual
vm_First + vm_Activate;
Для окон, которые перехватывают для своих управляющих элементов сообщения
от клавиатуры, реагирует на потерю и получение окном фокуса путем сохранения
описателя дочернего управляющего элемента, который в данный момент имеет
фокус в FocusChildHandle, и восстанавливает фокус.
См. также: TWindowsObject.EnableKBDriver.
WMCreate
procedure WMCreate(var Msg: TMessage); virtual
wm_First + wm_Create;
Отвечает на сообщение wm_Create вызовом SetupWindow, после чего вызывает
DefWntProc. Поскольку создание окна в ObjectWindows выполняется иначе
чем в Windows, сообщение wm_Create нужно перехватывать и использовать
для установки атрибутов окна.
См. также: TWindow.SetupWindow.
WMHScroll (иногда переопределяется)
procedure WMHScroll(var Msg: TMessage); virtual
wm_First + wm_HScroll;
Для окон с пpокpуткой на события в гоpизонтальной полосе пpокpутки окна
отвечает вызовом методов HScroll и DefWndProc объекта прокрутки HScroll.
См. также: TScroller.HScroll.
WMLButtonDown (иногда переопределяется)
procedure WMLButtonDown(var Msg: TMessage); virtual
vmFirst + wm_LButtonDown;
Этот метод при автоматической прокрутки отвечает на нажатие левой кнопки
"мыши", перехватывая весь будущий ввод от "мыши",
пока левая кнопка "мыши" не будет освобождена. Если вы планируете
B.Pascal 7 & Objects/OW - 583 -
для обработки нажатий кнопок "мыши" переопределить данный метод,
но все равно собираетесь пользоваться автоматической прокруткой,
убедитесь, что этот метод вызывается из вашего метода
WMLButtonDown.
WMMDIActivate
procedure TWindow.WMMDActivate(var Msg: TMessage); virtual
wm_First + wm_MDIActivate;
Вызывая WMActivate, управляется активизацией MDI Windows.
См. также: TWindow.WMActivate.
WMMove
procedure WMMove(var Msg: TMessage); virtual
wm_First + wm_MDIActivate;
При получении сообщения wm_Move обновляет координаты Attr.X и Attr.Y.
Если окно имеет вид пиктограммы или минимизировано, то это сообщение игнорируется.
WMPaint (переопределяется редко)
procedure WMPaint(var Msg: TMessage); virtual
wm_First + wm_Paint;
Отвечает на сообщение Windows wm_Paint, вызывая метод Paint оконного объекта.
Если окно имеет полосу прокрутки, перед вызовом Paint WMPaint вызывает
BeginView, а после вызова - EndView.
См. также: TWindow.Paint, TScroller.EndView,
TScroller.BeginView.
WMSize (иногда переопределяется)
procedure WMSize(var Msg: TMessage); virtual
wm_First + wm_Size;
Для окон с пpокpутками на события изменения pазмеpов окна отвечает вызовом
SetPageSize для установки нового pазмеpа окна.
См. также: TScroller.SetPageSize.
WMSysCommand
procedure WMSysCommand TWindow.WMSysCommand(var Msg:
B.Pascal 7 & Objects/OW - 584 -
TMessage); virtual wm_First + wm_SysCommand;
Если окно обрабатывает ввод с клавиатуры, перед вызовом DefWndProc для
выполнения нормальной обработки проверяет поле wParam на два значения.
Если Msg.wParam равно sc_Mininize (это означает, что окно будет сжато
в пиктограмму), вызывает перед сжатием в пиктограмму UpdateFocusChild.
Если Msg.wParam равно sc_Restore, WMSysCommand вызывает для восстановления
фокуса ввода перед восстановлением окна FocusChild.
См. также: TWindow.FocusChild, TWindow.UpdateFocusChild.
WMVScroll (иногда переопределяется)
procedure WMVScroll(var Msg: TMessage); virtual
wm_First + wm_VScroll;
Для окон с объектами прокрутки отвечает на события вертикальной полосы
прокрутки вызовом метода DefWndProc объекта VScroll.
См. также: TScroll.DefWndProc.
B.Pascal 7 & Objects/OW - 585 -
Тип TWindowAttr модуль OWindows
Описание:
TWindowAttr = record
Title: PChar;
Style: Longint;
ExStyle: Longint;
X, Y, W, H: Integer;
Param: Pointer; case Integer of
0: (Menu: HMenu); обработка меню окна или ...
1: Id: Integer); идентификатор управляющего
элемента
end;
Назначение: В записях TWindowAtt определяет свои атрибуты объекта TWindow.
См. также: TWindowAttr.
B.Pascal 7 & Objects/OW - 586 -
TWindowPrintout модуль OPrinter
TObject TPrintout
-------- -------------------
-------- | Banding |
|-Init-| | DC |
|-Done-| | ForceAllBands |
| Free | | Size |
-------- | Title |
-Init------------DoneBeginDocumentBeginPrinting -GetDialogInfo---GetSelectionHasNextPage
-PrintPage-------SetPrintParams
TWindowPrintout обеспечивает объект распечатки, упрощенный для печати
содержимого окна.
Поля
Scale
Scale: Boolean;
Имеет значение True, если распечатка должна масштабировать образ для заполнения
страницы. По умолчанию TWindowPrintout.Init устанавливает Scale в значение
True.
Window
Window: PWindow;
Window указывает на распечатываемое окно.
Методы
Ниже описываются методы объекта распечатки.
Init
constructor Init(ATitle: PChar; AWindow: PWindow);
Строит объект распечатки окна, вызывая сначала конструктор
B.Pascal 7 & Objects/OW - 587 -
Init, наследуемый из TPrintout, передавая ATitle, а затем устанавливая
Window в AWindow и устанавливая Scale в значение True.
См. также: TPrintout. Init.
GetDialogInfo
function GetDialogInfo(var Pages: Integer): Boolean; virtual;
Устанавливает Pages в 0 и возвращает False, так как окно генерирует только
одну страницу распечатки. Это предотвращает вывод диалога печати.
PrintPage
procedure PrintPage(Page: Word; var Rect: TRect;
Flags: Word); virtual;
Масштабирует для окна контекст устройства, так что распечатка будет иметь
правильный вид, а затем для вывода образа окна в контекст устройства вызывает
метод Paint.
B.Pascal 7 & Objects/OW - 588 -
TWindowsObject модуль OWindows
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 |
TWindowsObject определяет фундаментальное поведение всех интерфейсных
объектов, включая окна, диалоговые блоки и управляющие элементы. TWindowsObject
- это абстрактный объект, производный от Object, и его методы полезны
только для наследующих типов. Методы TWindowsObject реализуют фундаментальное
создание элементов экрана и действия по их уничтожению, поведение при
регистрации класса окна и механизм автоматического ответа на сообщения.
Поля
ChildList (только чтение)
B.Pascal 7 & Objects/OW - 589 -
ChildList: PWindowsObject;
ChildList - это связанный список всех объектов дочерних окон интерфейсного
объекта, таких как всплывающие окна, диалоговые блоки и управляющие элементы.
ChildList всегда указывает на последний добавленный объект.
Flags (чтение/запись)
Flags: Byte;
Flags - это байт данных, биты которого используются для записи следующих
атрибутов окна: обработки клавиатуры, автоматического создания, передачи,
статуса MDI и создания ресурса. Flags содержит одну или более констант
wb_ (которые описываются в данной главе).
См. также: TWindowsObject.SetFlags,
TWindowsObject.ISFlagSet.
HWindow (только чтение)
HWindow:; HWnd;
HWindow содержит описатель связанного с интерфейсным объектом интерфейсного
элемента. Если HWindow содержит 0, то значение является недопустимым описателем.
HWindow устанавливается в описатель связанного интерфейсного элемента
при его создании (Create) и обнуляется при уничтожении интерфейсного элемента
(WMNCDestroy).
Parent (только чтение)
Parent: TPWindowsObject;
PWindowsObject указывает на интерфейсный объект, который служит порождающим
окном для данного интерфейсного объекта. Например, выводимое в оконном
объекте поле Parent объекта управляющего элемента будет указывать на своего
предка - оконный объект.
Status (чтение/запись)
Status: Integer;
Status используется, чтобы сообщить об ошибке в инициализации интерфейсного
объекта. Ненулевое значение Status указывается, что инициализация объекта
не выполнена успешно, отрицательное свидетельствует о неудаче. Производные
от TWindowsObject объекты, включая TWindow и TDialog, проверяют Status
перед созданием соответствующих элементов. Используйте Status в коде наследующих
объектных типов, чтобы отметить ошибку инициализации.
B.Pascal 7 & Objects/OW - 590 -
Возможные значения ошибки, определенные в TWindowsObject, включают в себя
em_InvalidWindow (недопустимое окно), em_InvalidClient (недопустимый пользователь),
em_InvalidChild (недопустимое порожденное окно) и em_InvalidMainWindow
(недопустимое основное окно).
TransferBuffer (чтение/запись)
TransferBuffer: Pointer;
TransferBuffer указывает на буфер передачи, определенный приложением,
использующим механизм передачи. В противном случае это nil.
Методы
Ниже описываются методы, определенные в данном объекте.
Init (часто переопределяется)
constructor Init(AParent: PWindowsObject);
Строит и инициализирует интерфейсный объект. Конструктор наследующих типов
должен вызывать TWindowsObject.Init. Вызывает EnableAutoCreate, так что
дочерние окна будут по умолчанию создаваться и выводиться наряду с их
порождающими окнами. Кроме того, добавляет к списку дочерних окон объекта
порождающего окна интерфейсный объект.
См. также: TWindowsObject.EnableAutoCreate,
TWindowsObject.AddChild.
Load
constructor Load(var S: TStream);
Строит и загружает интерфейсный объект из потока S, считывая Status, другие
атрибуты и размер ChildList, а затем загружая каждое дочернее окно.
Done (часто переопределяется)
destructor Done; virtual;
Уничтожает интерфейсный объект, уничтожая сначала соответствующий интерфейсный
элемент (если он имеется), а затем вызывая наследуемый из TObject деструктор
Done. Уничтожает все свои дочерние окна и удаляет себя из списка дочерних
окон своего порождающего окна. Деструкторы всех наследующих типов должны
включать
B.Pascal 7 & Objects/OW - 591 -
в себя вызов TWindowsObject.Don.
AddChild
procedure AddChild(AChild: PWindowsObject);
Добавляет Achild с списку дочерних окон.
At
function At(I: Integer): PWindowsObject;
Возвращает указатель на I-ое дочернее окно в списке дочерних окон объекта.
Список дочерних окон циклический, так что если I больше числа дочерних
окон, то At выполняет переход к началу списка.
CanClose (иногда переопределяется)
function CanClose: Boolean; virtual
Для каждого дочернего окна вызывает метод CanClose и возвращает False,
если возвращает False какое-либо дочернее окно, указывая, что закрыть
интерфейсный элемент нельзя (не OK). Если методы CanClose всех дочерних
окон возвращают True, то CanClose также возвращает True.
ChildWithID (никогда не переопределяется)
ChildWithid(Id: Integer): PWindowsObject; virtual;
Возвpащает указатель на окно с пеpеданным идентификатоpом в списке дочеpних
окон. Если дочеpнего окна с указанным идентитфикатором Id нет, ChildWithid
возвpащает значение nil. Если Id равно -1, то ChildWithID возвращает первый
неуправляющий объект в списке дочерних окон.
CloseWindow
procedure CloseWindow;
Чтобы увидеть, готово ли окно к закрытию, вызывает CanClose. Если метод
CanClose возвращает значение True, CloseWindow уничтожает объект и уничтожает
соответствующий оконный элемент.
См. также: TWindowObject.CanClose.
B.Pascal 7 & Objects/OW - 592 -
CMExit
procedure CMExit(var Msg: TMessage); virtual
cm_First + cm_Exit;
Если CanCLose возвращает True, отвечает на командное сообщение cm_Exit,
прекращая выполнение приложения. Сообщение cm_Exit обычно посылается основному
окну приложения.
Create (никогда не переопределяется)
function Create: Boolean; virtual;
Создает соответствующий экранный элемент интерфейсного объекта. Это абстрактный
метод, переопределяемый в наследующих типах.
CreateChildren
function CreateChildren: Boolean;
Вызывает Create для всех дочерних окон. CreateWindow вызывается SetupWindow,
так что вам не нужно обычно вызывать этот метод непосредственно. CreateChildren
требуется вызывать только после GetChildren для получения визуальных элементов
для дочерних оконных объектов, загружаемых из потока.
См. также: TWindowsObject.GetChildren.
CreateDCMemory
function CreateDCMemory(var Msg: TMessage); virtual;
Создает контекст устройства памяти (DC), совместимый с контекстом дисплея
окна. Значения DC необходимы для поразрядного отображения.
DefChildProc (иногда переопределяется)
procedure DefChildProc(var Msg: TMessage); virtual
Выполняет стандаpтную обpаботку для поступающего сообщения, базиpующегося
на идентификатоpе дочеpнего окна, устанавливая поле Result в Msg в 0 (это
указывает, что сообщение обработано не было).
DefCommandProc (иногда переопределяется)
procedure DefCommandProc(var Msg: TMessage); virtual;
B.Pascal 7 & Objects/OW - 593 -
Выполняет стандаpтную обpаботку для поступающего сообщения, базиpующегося
на команде, устанавливая поле Result в Msg в 0 (это указывает, что сообщение
обработано не было).
DefNotificationProc (иногда переопределяется)
procedure DefNotificationProc(var Msg: TMessage); virtual;
Выполняет стандаpтную обpаботку для поступающего уведомляющего сообщения,
устанавливая поле Result в Msg в 0 (это указывает, что сообщение обработано
не было).
DefWndProc
procedure DefWndProc(var Msg: TMessage); virtual;
Эта используемая по умолчанию оконная процедура не выполняет никаких операций
и обычно переопределяется. Она полагает, что поле Result в Msg остается
нулевым (это указывает, что сообщение не обработано). TWindow переопределяет
DefWndProc для вызова предусмотренных в Windows стандартной реакции на
сообщения Windows.
См. также: TWindow.DefWndProc.
Destroy (никогда не переопределяется)
procedure Destroy; virtual;
Вызывает уничтожение связанного элемента интеpфейсного объекта, удаляя
его с экрана, вызывая получение оконным объектом сообщения wm_Destroy.
Destroy вызывает также для любого созданного дочернего окна метод EnableCreate.
Это обеспечивает, что при повторном создании объект будет выглядеть как
в момент уничтожения.
См. также: TWindowsObject.WMDestroy,
TWindowsObject.EnableAutoCreate.
Disable
procedure Disable;
Вызывая DisableWindow, запрещает связанный с интерфейсным объектом экранный
элемент. Запрещенный экранный элемент обычно выводится серым и не реагирует
в Windows на ввод с клавиатуры или от "мыши". Все экранные элементы
по умолчанию разрешены, но могут запрещаться вызовом Disable.
См. также: TWindowsObject.Enable.
B.Pascal 7 & Objects/OW - 594 -
DisableAutoCreate
procedure DisableAutoCreate;
Запpещает возможность, котоpая позволяет интеpфейсному объекту, как дочеpнему
окну, создаваться и отобpажаться наряду с его порождающим окном. Вызывайте
DisableAutoCreate для всплывающих окон и управляющих элементов в том случае,
если вы хотите, чтобы они создавались и отобpажались позднее, чем их порождающие
окна.
См. также: TWindowsObject.EnableAutoCreate.
DisableTransfer
procedure DisableTransfer;
Запpещает для интеpфейсного класса механизм пеpедачи, котоpый позволяет
осуществлять обмен инфоpмацией о состоянии с буфеpом пеpедачи.
DispatchScroll (никогда не переопределяется)
procedure DispatchScroll(var Msg: TMessage); virtual;
Вызывается WMHScroll и WMVScroll для диспетчеризации сообщений прокрутки
окон соответствующих объектов.
См. также: TWindowsObejct.WMHScroll,
TWindowsObject.WMVScroll.
Enable
procedure Enable;
Вызывая EnableWindow, разрешает связанный с интерфейсным объектом экранный
элемент. Реагировать на ввод с клавиатуры или от "мыши" может
только разрешенный экранный элемент (и, следовательно, объект). Все экранные
элементы по умолчанию разрешены, поэтому вам нужно вызывать Enable только
после запрещения элемента.
См. также: TWindowsObject.Disable.
EnableAutoCreate
procedure EnableAutoCreate;
B.Pascal 7 & Objects/OW - 595 -
Обеспечивает, чтобы интеpфейсный класс, как дочеpнее окно, создавался
и отобpажался наряду с его порождающим окном. Эта возможность pазpешена,
по умолчанию, для окон и управляющих элементов, но запpещена для диалоговых
блоков. Вызывайте EnableAutoCreate в том случае, если вы хотите, чтобы
диалоговый блок создавался и отобpажался вместе с его порождающими окнами.
См. также: TWindowsObject.DisableAutoCreate.
EnableKBHandler
procedure EnableKBHandler;
Разpешает такую возможность окон и безpежимных диалогов, котоpая позволяет
обеспечить интеpфейс с клавиатуpой для дочеpних элементов упpавления,
что позволяет пользователю пеpемещаться по упpавляющим элементам с помощью
клавиши табуляции. По умолчанию эта возможность отключена.
См. также: TWindowsObject.WMActive,
TApplication.SetKBHandler.
EnableTransfer
procedure EnableTransfer;
Разpешает для интеpфейсного объекта механизм пеpедачи, котоpый позволяет
осуществлять обмен инфоpмацией о состоянии упpавляющего элемента с буфеpом
пеpедачи.
FirstThat
function FirstThat(Test: Pointer): PWindowsObject;
Пpоходит итеративно по списку дочеpних окон и вызывает булевскую функцию
Test, пеpедавая поочередно в качестве аpгумента каждое дочеpнее окно списка.
Если при вызове Test возвращается значение True, итерация останавливается,
и FirstThat возвращает указатель объект дочернего окна, который передавался
в Test. В противном случае FirstThat возвращает значение nil.
Напpимеp, вы можете написать метод GetFirstChecked, котоpый использует
FirstThat для получения указателя на первую кнопку с независимой фиксацией
в выбранном состоянии:
function MyWindow.GetFirstChecked: PWindowsObject;
function IsThisOneChecked(ABox: PWindowsObject); Boolean;
far;
begin
B.Pascal 7 & Objects/OW - 596 -
IsThisOneChecked := ABox^.GetCheck <> 0; end;
begin
GetFirstChecked := FirstThat(@IsThisOneChecked); end;
Focus
procedure Focus;
Сообщает Windows о передаче фокуса ввода связанному с объектом экранному
элементу.
ForEach
procedure ForEach(Action: Pointer);
Пpоходит итеративно по списку дочеpних окон и для каждого дочеpнего окна
вызывает процедуру, указываемую Action, и пеpедает ей поочередно в качестве
аpгумента объект дочеpнего окна.
В следующем примере CheckAllBoxes вызывает ForEach, анализируя все блоки
проверки в списке порожденных окон:
function MyWindow.CheckAllBoxes;
procedure CheckTheBox(ABox: PWindowsObject); far;
begin
PCheckBox(ABox)^.Check; end;
begin
ForEach(@CheckTheBox); end;
GetChildPtr
procedure GetChildPtr(var S: TStream; var P);
Загружает из потока S указатель на дочернее окно. GetChildPtr следует
вызывать для считывания указателя дочернего окна, записанного в PutChildPtr
из метода Store.
См. также: TWindowsObject.GetSiblingPtr,
TWindowsObject.PutSiblingPtr, TWindowsObject.PutChildPtr.
GetChildren
B.Pascal 7 & Objects/OW - 597 -
procedure GetChildren(var S: TStream);
Считывает дочерние окна из указанного потока и помещает их в список дочерних
окон. GetChildren предполагает, что список дочерних окон ChildList первоначально
пуст: указатели на дочерние окна, добавленные перед вызовом GetChildren,
будут потеряны.
См. также: TWindowsObject.CreateChildren,
TWindowsObject.PutChildren.
GetClassName (иногда переопределяется)
function GetClassName: PChar; virtual
Возвращает используемое по умолчанию имя класса окна - 'TurboWindow'.
GetClient (никогда не переопределяется)
function GetClient: PMDIClient; virtual;
Возвращает NULL для всех интеpфейсных объектов, не относящихся к MDI,
котоpые не имеют окон пользователя MDI. TMDIWindows переопределяет этот
метод для обеспечения своих окон клиента MDI.
GetId (переопределяется редко)
function GetId: Integer; virtual;
В общем случае возвращает идентификатор окна. По умолчанию GetId просто
возвращает -1. GetId переопределяется потомками TControl для возврата
идентификатора управляющего элемента объекта. Все другие интерфейсные
объекты не имеют идентификаторов управляющих элементов.
См. также: TControl.GetId.
GetSiblingPtr
procedure GetSiblingPtr(var S: TStream; var P);
Загpужает указатель P "бpатского" окна из указанного потока.
"Бpатское" окно - это окно с тем же порождающим окном, что и
данное, напpимеp, окно TGroupBox объекта TCheckBox является "бpатским"
для TCheckBox. GetSiblingPtr должен использоваться только внутри конструкторов
Load для чтения значений указателей, которые были записаны в PutSibling
из метода Store. Значение, загpуженное в P, не становится допустимым до
тех поp, пока pодитель окна не закончит свою опеpацию Load; таким образом,
разыменование указа-
B.Pascal 7 & Objects/OW - 598 -
теля братского окна в конструкторе Load не дает корректного результата.
См. также: TWindowsObject.PutSiblingPtr,
TWindowsObject.GetChildPtr, TWindowsObject.PutChildPtr.
GetWindowClass (иногда переопределяется)
procedure GetWindowClass(var AWndClass: TWndClass); virtual;
Используется для подстановки в наследующих типах для определения записи
класса окна и возврата ее в AWndClass. Данная процедура GetWndClass не
выполняет никаких действий.
IndexOf
function IndexOf(P: PWindowsObject): Integer;
Возвращает порядковую позицию P в списке дочерних окон объекта. Первое
дочернее окно в списке имеет номер 1. Если P отсутствует в списке дочерних
окон, возвращает 0.
IsFlagSet
function IsFlagSet(Mask: Byte); Boolean;
Возвращает состояние битового флага, маска которого указывается в Mask.
Если битовый флаг установлен, возвращает значение True, в противном случае
возвращается значение False.
См. также: TWindowObject.SetFlag.
Next
function Next: PWindowsObject;
Возвpащает указатель на следующую окно в списке дочеpних окон порождающего
окна.
См. также: TWindowsObject.Previous.
Previous
function Previous: PTWindowsObject;
Возвращает указатель на предыдущее окно в списке дочерних окон порождающего
окна.
B.Pascal 7 & Objects/OW - 599 -
См. также: TWindowsObject.Next.
PutChildPtr
procedure PutChildPtr(var S: TStream;
var P: PTWindowsObject);
Записывает дочернее окно в указанный поток S. PutChildPtr следует вызывать
только в методе Store для записи значений указателей, которые позднее
можно считать с помощью GetChildPtr в конструкторе Load.
См. также: TWindowsObject.GetSiblingPtr,
TWindowsObject.GetSiblingPtr, TWindowsObject.PutChildPtr.
PutChildren
PutChildren(var S: TStream);
Выполняя итерацию по окнам списка дочерних окон, записывает каждое дочернее
окно в списке в указанный поток S. PutChildren автоматически вызывается
методом TWindowsObject.Store, но вы можете также вызывать этот метод непосредственно
в тех случаях, когда хотите сохранить контекст окна без сохранения самого
окна.
См. также: TWindowsObject.GetChildren.
PutSiblingPtr
PutSiblingPtr(var S: TStream; P: PWindowsObject);
Записывает указатель P "бpатского" окна в указанный поток. "Бpатское"
окно - это окно с тем же порождающим окном, что и данное. PutSiblingPtr
должна использоваться только в методе Store для записи значений указателей,
которые позднее можно считать с помощью GetSiblingPtr в конструкторе Load.
См. также: TWindowsObject.GetSiblingPtr,
TWindowsObject.GetChildPtr, TWindowsObject.PutChildPtr.
Register (никогда не переопределяется)
function Register: Boolean; virtual;
Регистрирует оконный класс, определенный в методе объкта GetWindowClass
и именует его в методе GetClassName (если он еще не зарегистрирован).
Register возвращает значение True, если класс успешно зарегистрирован.
B.Pascal 7 & Objects/OW - 600 -
См. также: TWindowsObject.GetClassName,
TWindowsObject.GetWindowClass.
RemoveChild
procedure RemoveChild(AChild: PWindowsObject); protected
Удаляет из списка дочерних окон объекта заданное окно AChild.
SetFlags
procedure SetFlags(Mask: Byte; OnOff: Boolean);
Включает или выключает битовый флаг в зависимости от значения OnOff. Если
OnOff имеет значение True, биты в Mask устанавливаются. В пpотивном случае,
биты сбpасываются. Mask может быть любой константой wb_ или их комбинацией.
См. также: TWindowsObject.IsFlagSet.
SetupWindow (часто переопределяется)
procedure SetupWindow; virtual;
Выполняет инициализацию вновь созданного интеpфейсного элемента. Путем
итерации списка дочерних окон пытается создать связанный интерфейсный
элемент для каждого объекта дочернего окна, для которого разрешено автоматическое
создание. (По умолчанию автоматическое создание разрешается для окон и
управляющих элементов и запрещается для диалогов.) Если дочернее окно
создать нельзя, то Status устанавливается в значение em_InvalidChild.
Затем SetupWindow для копирования данных в новые дочерние окна вызывает
TransferData. Для выполнения специальной инициализации в производных объектах
этот метод можно переопределить.
Show (никогда не переопределяется)
procedure Show(ShowCmd: Integer); virtual;
Show отобpажает интеpфейсный элемент на экpане таким обpазом, как указано
значением, пеpеданным в ShowCmd. ShowCmd может содеpжать следующие значения:
Значения параметров метода Show Таблица 21.28
Значение Описание
| sw_Hide | Скрыто |
B.Pascal 7 & Objects/OW - 601 -
| sw_Show | В текущем положении и с текущим |
| | pазмеpом окна |
| sw_ShowMaximized | Максимизиpовано и активно |
| sw_ShowMinimized | Минимизиpовано и активно |
| sw_ShowNornal | Восстановлено и активно |
-------------------------------------------------------------
Store
procedure Store(var S: TStream);
Записывает интерфейсный элемент в поток S, записывая Status, другие атрибуты
и размер ChildList. Затем записывается каждое дочернее окно.
Transfer (иногда переопределяется)
procedure Transfer(DataPtr: Pointer; TransferFlag: Word):
Word; virtual;
Возвращает 0. Transfer переопределяется в потомках TControl для передачи
их данных о состоянии в буфер передачи и из него. Возвращаемое из Transfer
значение представляет собой число переданных байт.
TransferData (иногда переопределяется)
procedure TransferData(Direction: Word); virtual;
Если установкой TransferBuffer в запись передачи разрешен механизм передачи,
передает данные и в буфер или из него и участвующих в pаботе дочеpних
окон интеpфейсного объекта. Для каждого участвующего дочернего окна TransferData
вызывает метод Transfer, передавая указатель на пересылаемые данные, а
также направление, заданное в параметре Direction (tf_SetData или tf_GetData).
См. также: TWindowsObject.EnableTransfer,
TWindowsObject.DisableTransfer, TWindowsObject.SetupWundow.
WMActivate (иногда переопределяется)
procedure WMActivate(var Msg: TMessage); virtual
wm_Fist + wm_Activate;
В случае, если интерфейсный объект участвует в механизме обработки клавиатуры,
отвечает на то, что интерфейсный объект становится активным окном, вызывая
метод SertKeyBoardHandler объекта приложения.
B.Pascal 7 & Objects/OW - 602 -
См. также: TApplication.SetKeyBoardHandler.
WMClose (иногда переопределяется)
WMClose(var Msg: TMessage); virtual wm_First + wm_Close;
Отвечает на запpос о закpытии окна вызовом метода CloseWindow данного
объекта или метода CanClose объекта приложения в случае, если данный объект
является основным окном приложения. Если CanClose возвращает True, данный
интерфейсный элемент уничтожается вызовом Destroy.
См. также: TWindowsObject.Destroy.
WMCommand (переопределяется редко)
procedure WMCommand(var Msg: TMessage); virtual
wm_First + wm_Command;
Обеспечивает механизм для обpаботки сообщений, базиpующихся на командах
и идентификатоpах дочерних окон, и вызова соответствующих методов реакции.
WMDestroy (переопределяется редко)
procedure WMDestroy(var Msg: TMessage); virtual
wm_First + wm_Destroy;
Отвечает на приходящее сообщение wm_Destroy. Если данный объект - это
основное окно, отвечает на это уничтожение интерфейсных элементов и посылает
для завершения прикладной программы сообщение выхода wm_Quit (информируя,
таким образом, Windows). Если объект не является основным окном приложения,
то вызывается поведение окна, используемое по умолчанию.
См. также: TWindowsObject.DispatchScroll.
WMHScroll (переопределяется редко)
procedure WMHScroll(var Msg: TMessage); virtual
wm_First + wm_Destroy;
Перехватывает поступающие сообщения горизонтальной прокрутки, вызывая
DispatchScroll.
См. также: TWindowsObject.DispatchScroll.
WMNCDestroy (никогда не переопределяется)
B.Pascal 7 & Objects/OW - 603 -
procedure WMNCDestroy(var Msg: TMessage); virtual
wm_First + wm_QueryEndSession;
Отвечает на последнее сообщение интерфейсного элемента, полученное перед
его уничтожением, установкой HWindow в 0.
WMQueryEndSession
procedure WMQueryEndSession(var Msg: TMessage); virtual
wm_First + wmQueryEndSession;
Если окно является основным окном приложения, то отвечает на сообщение
wm_QueryEndSession вызовом Application^.CanClose и, если этот метод возвращает
значение True, устанавливает Msg.Result в 1. В противном случае Msg.Result
устанавливается в 0.
WMVScroll (переопределяется редко)
procedure WMVScroll(var Msg: TMessage); virtual
wm_First + wm_VScroll;
Перехватывает сообщения вертикального окна полосы прокрутки и вызывает
DispatchScroll.
См. также: TWindowsObject.DispatchScroll.
Тип TWordArray модуль Objects
Описание: TWordArray = array[0..1683] of Word;
Назначение: Тип массива с элементами размером в слово для общего использования.
B.Pascal 7 & Objects/OW - 604 -
Константы voXXXX модуль Validate
Назначение: Константы, начинающиеся с vo, представляют в слове Options
с побитовым отображением в объектах проверки допустимости.
Значения: Биты Ooptions объекта проверки допустимости определены следующим
образом:
msb lsb
------------------------------- --------------------- | |
не определены | | |
voReserved = $00FC | |
| | voTransfer = $0002 |
| voFill = $0001
Рис. 21.1 Флаги параметров объекта проверки допустимости (msb - старший
бит, lsb - младший бит).
Флаги параметров объекта проверки допустимости Таблица 21.29
Константа Значение Смысл
voFill $0001 Используется в средствах проверки допустимости по трафарету
для указания заполнения набираемыми пользователем литеральными символами.
voTransfer $0002 Объект проверки допустимости обрабатывает передачу данных
для строки ввода. В данное время используется средством проверки допустимости
по диапазону.
voReserved $00FC Биты в данной маске, зарезервированные Borland.
B.Pascal 7 & Objects/OW - 605 -
Константы vsXXXX модуль Validate
Назначение: Объекты строки ввода используют vsOK для проверки и правильного
построения соответствующих объектов проверки допустимости. При вызове
с командным параметром или cmValid метод Valid объекта строки ввода проверяет
поле Status своего объекта проверки допустимости. Если Status равно vsOK,
то метод Valid строки ввода возвращает значение True, указывая, что объект
проверки допустимости можно использовать.
Единственное значение, определенное для поля Status и отличное от vsOK
- это vsSyntax, используемое в TPXPictureValidator для указания, что невозможно
интерпретировать переданную строку трафарета. Если вы создаете собственные
объекты проверки допустимости, то можете определить коды ошибок и возвратить
их в поле Status.
Значения: Модуль Validate определяет две константы, используемые в объектах
проверки допустимости для сообщения о своем состоянии.
Константы состояния объекта проверки допустимости Таблица 21.30
Константа Значение Смысл
vsOK 0 Объект проверки допустимости построен правильно.
vsSyntax 1 Ошибка синтаксиса в трафарете шаблона объекта проверки.
См. также: TValidator.Status.
B.Pascal 7 & Objects/OW - 606 -
Константы wb_XXXX модуль OWindows
Назначение Поле Glags в TWindowsObject - это поле с побитовым отображением.
К битам можно обращаться с помощью констант, начинающихся с wb_.
Значения: Определены следующие значения констант:
Константы поля с
побитовым отображением TWindowsObject Таблица 21.31
Константа Значение Смысл в случае установки
wb_KeyboardHandler $01 Окно обрабатывает события клавиш как диалог.
wb_FromResource $02 Диалог был загружен из ресурса.
wb_AutoCreate $04 Окно создается при создании его порождающего окна.
wb_MDIChild $08 Окно является дочерним окномMDI.
wb_Transfer $10 Окно участвует в механизме передачи Transfer. По умолчанию
этот бит устанавливается InitResource и очищается Init.
См. также: TWindowsObject.Flag.
Константы wm_XXXX модуль OWindows
Назначение: ObjectWindows определяет несколько констант, связанных со
стандартными сообщениями Windows и определяющими зарезервированные для
Windows диапазоны сообщений.
Значения: Определены следующие константы:
Константы сообщений Windows Таблица 21.23
Константа Значение Смысл
wmwm FirstCount $0000$8000 Начало сообщений Windows.Число сообщений Windows.
B.Pascal 7 & Objects/OW - 607 -
Тип WordRec модуль Objects
Описание:
WordRec = record
Lo, Hi: Byte; end;
Назначение: Рабочая запись, позволяющая обращаться к старшим (Hi) и младшим
(Lo) байтам слова.
См. также: LongRec.
B.Pascal 7 & Objects/OW - 608 -
Стили окна ws_XXXX модуль WinTypes
Вы можете использовать эти константы для установки атрибутов создания
интерфейсных объектов путем комбинирования их в поле Attrr.Style объекта
перед созданием объектом его экранного элемента. Вы можете также использовать
их для задания стилей окна при создании окон, диалоговых блоков и управляющих
элементов с CreateWindow или CreateWindowEx.
Стили окна Таблица 21.33
Константа Смысл
ws_Borded Окно имеет рамку. Не допускается с ws_DlgFrame.
ws_Caption Окно имеет строку заголовка и раму. ws_Caption и ws_DlgFrame
не могут использоваться вместе. ws_Caption предполагает включение ws_Border.
ws_Child Окно является дочерним окном. ws_Child и ws_Popup не могут использоваться
вместе.
ws ChildWindow То же, что ws Child.
ws_ClipChildren Окно не включает области, перекрытые при отображении дочерними
окнами.
ws_ClipSibling Окно при отображения обрезает все "братские"
окна. Это означает, что отображаемые области в каждой области клиента
дочерних окон одного порождающего окна не будут перекрываться.
ws Disables Окно первоначально запрещено.
ws_DlgFrame Окно имеет двойную рамку и не имеет заголовка. Не допускается
с ws_Borded.
ws_Group Окно - это управляющий элемент, который является первым элементом
в группе, и пользователь может получать к нему доступ с помощью клавиш
стрелок. Каждый последующий управляющий элемент, определенный без ed_Group,
принадлежит к группе, начинающейся с последнего управляющего элемента
с ws_Group.
B.Pascal 7 & Objects/OW - 609 -
| ws_HScroll | Окно имеет горизонтальную полосу|
| | прокрутки. |
ws Iconic То же, что ws Mininize.
ws_Maximize Окно занимает весь экран (максимизировано).
ws MaximizeBox Окно имеет блок максимизации.
ws_Overlapped Окно является перекрывающимся окном.Перекрывающееся окно
имеет заголовок и рамку.
ws_OverlappedWindow То же, что комбинация ws_Overlapped, ws_Caption, ws_SysMenu,
ws_ThickFrame, ws_MinimizeBox и ws_MaximizeBox.
ws Popup Окно является всплывающим окном.
ws_PopupWindow То же, что комбинация ws_Border, ws_ws_Popup и ws_SysMenu.
Блок управляющего меню выводится только если используется также стиль
ws_CAption.
ws SizeBox То же, что ws ThickFrame.
ws_SysMenu Окно содержит в строке заголовка блок управляющего меню. Применяется
только к окнам со строкой заголовка.
ws_TabStop Окно представляет собой управляющий элемент диалогового блока
в списке управляющих элементов, по которым пользователь может циклически
перемещаться с помощью клавиши Tab.
ws_ThickFrame Окно имеет жирную рамку, которую пользователь может перемещать
(буксировать) для изменения размера окна.
ws Tiled То же, что ws Overlapped.
ws TiledWindow То же, что ws OverlappedWindow.
ws Visible Окно первоначально является видимым.
ws_VScroll Окно имеет вертикальную полосу прорутки.
См. также: TWindow.Attr.
_
|
|