Гповальный объект Application

ОбъектApplication относится к классуTApplication и инкапсулирует важнейшие свойства и методы программы как таковой. В частности, с его помощью осуществляется диспетчеризация сообщений Windows, реализуется контекстная справочная служба, он обрабатывает клавиши быстрого доступа, исключительные ситуации и т.д. Основные свойства класса TApplication приведены в табл. 6.1. Ряд свойств объектаApplication могут быть изменены командлйProject-->Options.

Таблица 6.1

Свойство Описание
property Active: Boolean read FActive; РавноTrue, если любое окно программы имеет фокус ввода
property ExeName: string read GetExeName; Имя исполняемого файла с путем
property HelpFile: string read FHelpFile write FHelpFile; Имя файла справочной службы
property Hint: string read FHint write SetHint; Длинная часть оперативной подсказки.
property HintColor: TColor read FHintColor write SetHintColor; Цвет фона окна оперативной подсказки
property HintHidePause: Integer read FHintHidePause write FHintHidePause; Пауза (в мс) от появления оперативной подсказки до ее исчезновения
property HintPause: Integer read FHintPause write FHintPause; Пауза (в мс) от момента остановки мыши до появления оперативной подсказки
property HintShortCuts: Boolean read FHintShortCufcs write FHintShortCuts; Если содержитTrue, текст оперативной подсказки автоматически дополняется информацией о горячих клавишах
property HintShortPause: Integer read FHintShortPause wri te FHintShortPause; Пауза (в мс) появления оперативной подсказки при переходе с одного компонента на другой
property Icon: TIcon read Ficon write Setlcon; Значок программы

Окончание табл. 6.1

property MainForm: TForm read FMainForm; Главное окно программы
property ShowHint: Boolean read FShowHint write SetShowHint; Разрешает/запрещает показ оперативной подсказки
property ShowMainForm: Boolean read FShowMainForm write FShowMainForm; Разрешает/запрещает показ главного окна в момент старта программы
property Terminated: Boolean read FTerminate; True если программа должна прекратить работу.
property Title: string read GetTitle write SetTitle; Определяет текст на кнопке свернутой программы
property UpdateFormatSettings: Boolean read FOpdateFormatSettings write FOpdateFormatSettings; ЕслиTrue, программа автоматически использует новые параметры формата Windows (например, разделитель целой и дробной частей числа), при их изменении в момент работы программы
property OpdateMetricSettings: Boolean read FOpdateMetrxcSettings write FOpdateMetricSettings; ЕслиTrue, программа автоматически учитывает новые метрические установки Windows (например, новый системный шрифт) при их изменении в момент работы программы

Методы классаTApplication приведены в табл. 6.2.

Таблица 6.2 '

Метод Описание  
procedure ActivateHint (CursorPos: TPoint); Показывает оперативную подсказку в заданной координатамиCursorPos позиции экрана  
procedure BringToFront; Помещает окно, которое было активным в последний раз, поверх остальных окон  
procedure CancelHint; Запрещает показ оперативной подсказки  
procedure CreateForm (InstanceClass: TComponentClass; var Reference); Создает объект-окно: вызывает конструктор классаTFormClass и связывает созданный с его помощью объект с переменнойReference.  
procedure HandleException (Sender: TObject); Осуществляет обработку исключительных ситуаций, заданную по умолчанию.  
procedure HandleMessaga; Приостанавливает работу программы до тех пор, пока не будут обработаны все сообщения, после чего генерируется событиеOnldle  
function HelpCammand (Command: Integer; Data: Longint): Boolean; Посылает справочной службе команду Command и параметрData  
function HelpContext (Context: THelpContext): Boolean; Вызывает разделContext справочной службы, и возвращает значениеTrue, если такой раздел существует  
function HelpJump(const JumpID: string): Boolean; Вызывает раздел справочной службы по еп> идентификаторуJumpID и возвращает значение True, если такой раздел существует
procedure HideHint; Убирает текущую оперативную подсказку
TWindowHook = function (var Message: TMessage): Boolean of object; procedure HookMainWindow (Hook: TWindowHook); Регистрирует оконную процедуру для передачи сообщений Windows.
procedure Initializer- Проверяет глобальную переменнуюInitProcмодуляForms; если переменная ссылается на процедуру без параметров, выполняет ее.
function MessageBox(const Text, Caption: PChar; Flags: Longint = MB_OK): Integer; Создает и показывает окно с текстом и кнопками:Text- сообщение в окне,Caption-заголовок окна,Flags - атрибуты окна.
procedure Minimize; Свертывает программу
procedure NormalizeTopMosts; Приостанавливает действие стиляfsTopMost(поместить окно поверх остальных) для всех окон, кроме главного
procedure Normal izeAHTopMosts ; Распространяет действие NormalizeTopMosts на главное окно
procedure ProcessMessages; То же, чтоHandleMessages, но событие Onldle не генерируется.
procedure Restorer- Восстанавливает размеры всех окон программы, имевшие место до ее свертывания.
procedure RestoreTopMosts ; Восстанавливает действие стиляfsTopMostдля всех окон программы
procedure Run; Запускает цикл получения и обработки всех сообщений Windows
procedure ShowException(E: Exception); Реализует обработку исключительных ситуаций, заданную по умолчанию.
procedure Terminate; Завершает работу программы
procedure UnhookMainWindow(Hook: TWindowHook); Удаляет перехватчик сообщений, ранее установ­ленный методомHookMainWindow. Параметр Hook — имя той же функции перехвата, что и при обращении к методуHookMainWindow.
       

может временно приостановить свою работу до тех пор, пока не будут обработаны все предназначенные ей сообщения Windows. Это бывает необходимо для обновления видимых компонентов в процессе отображения длительного времени цикла работы (например,ProgressBar).





ФункцияMessageBox дает удобное средство вывода на экран небольшого сообщения. ПараметрFlags задает количество и тип кнопок на окне (ОК, Cancel, Abort, Retry, Yes, No), а также кнопку по умолчанию; он же определяет вид изображений в окне (восклицательный знак, буква i и т.п.) и другие параметры окна. ФункцияMessageBox возвращает целое значение от 1 до 6, определющее тип нажатой клавиши или О-в случае ошибки.

События классаTAppli.cati.on представлены в табл. 6.3.

Таблица б.З

Событие Описание
property OnActivate: TNotifyEvent read FOnActivate write FOnActivate; Возникает, когда программа получает фокус ввода
property OnDeactivate: TUotifyEvent read FOnDeactivate write FOnDeactivate; Возникает, когда программа теряет фокус ввода
TExcaptionEvent « procedure (Sender: TObject; B: Exception) of object; property OnException: TExceptionEvent read FOnException write FOnException; Обработчик этого события реализует обработку исключи­тельных ситуаций, заданную по умолчанию
THelpEvent = function(Command: Word; Data: Longint; var CallHelp: Boolean): Boolean of object; property OnHelp: THelpEvent read FOnHelp write FOnHelp; Возникает при каждом обращении к справочной системе
property OnHint: TNotifyEvent read FOnHint write FOnHint; Возникает при необходимости отобразить длинную часть всплывающей подсказки
TIdleEvent = procedure (Sender: TObject; var Done: Boolean) of object; property Onldle: TIdleEvent read FOnldle write FOnldle; Обработчик этого события реализует фоновую работу
TMessageEvent = procedure (var Msg: TMsg; var Handled: Boolean) of object; property OnMessage: TMessageEvent read FOnMessage write FOnMessage; Возникает при получении программой сообщения Windows, что позволяет обра­ботать сообщения до того, как их получит активная форма
property OnMinimize: TNotifyEvent read FOnMinimize write FOnMinimize; Возникает при свертывании программы
property OnReatore: TNotifyEvent read FOnBestore write FOnRestore; Возникает после восстановления программы после ее свертывания
property OnShowHint: TShowHintEvent read FOnSbowHint write FOnShowHint; Возникает при необходимости отобразить окно с оперативной подсказкой

Событиеonldla возникает, когда программа обнаруживает, что ее очередь сообщений пуста. Обработчик .этого события может незаметно для пользователя выполнить вспомогательную работу, например, проверить орфографические

ошибки или собрать и обработать статистические данные. При этом выполняемая в обработчике работа не должна занимать много времени. Если фоновая работа занимает много времени, ее следует разбить на части и периодически вызывать методHandleMessage. Обработчик в параметреDone сообщает о необходимости продолжить фоновую работу(Done=Falsa) или об ее завершении. В первом случае программа просмотрит очередь сообщений и после ее очистки вернет управление обработчикуonldle. Во втором случае программа будет ожидать поступления новых сообщений. Вообще, в 32-разрядных версиях Windows рекомендуется вместо этого способа организовывать отдельный поток команд и фоновую работу осуществлять в нем.

Гповальный объект Screen

ОбъектScreen классаTScreen инкапсулирует свойства и методы, упрощающие работу с дисплеем компьютера, например с для изменения указателя мыши используется его свойствоCursor (см. §4.6). Большинство свойств объектаScreen доступны только для чтения. Наиболее важные свойства приведены в табл. 6.4.

Таблица 6.4

Свойство Описание
property ActiveControl: TWinControl; Ссылка на элемент с фокусом ввода
property ActiveForm: TForm ; Ссылка на окно с фокусом ввода
property Cursor: TCursor; Текущий указатель мыши для окон программы
property Cursors[Index: Integer]: HCursor; Открывает доступ к зарегистрированным указателям мыши по индексам
property DataModuleCount: Integer; Количество модулей данных в программе
property DataModules [Index: Integer]: TDataModule; Список модулей данных
property DefaultKbLayout: HKL; Исходная раскладка клавиатуры
proj. 3rty DesktopHeight: Integer; Высота экрана относительно высоты экрана первичного монитора
property DesktopLeft: Integer; Горизонтальное положение левого верхнего угла экрана левого верхнего угла экрана первичного монитора
property DesktopTop: ! Integer; Вертикальное положение левого верхнего угла экрана относительно левого верхнего угла экрана первичного монитора
!property DesktopWidth: Integer; Ширина экрана относительно ширины экрана первичного монитора
property Fonts: TStrings; | Список имен всех установленных шрифтов
property FormCount: Integer; Общее количество всех показываемых на экране окон программы  
property Forms[Index: Integer]: TForm; Открывает доступ к окну программы по его индексу  
property Height: Integer; Высота экрана в пикселах  
property HintFont: TFont; Шрифт оперативной подсказки  
property IconFont: TFont; Шрифт надписи на кнопке свернутой программы  
property MenuFont: TFont; Шрифт команд меню  
property MonitorCount: Integer; Количество мониторов в операционной системе  
property Monitors[Index: Integer]: TMonitor; Открывает индексированный доступ к монитору  
property PixelsPerlnch: Integer; Содержит разрешающую способность экрана в пикселах на линейный дюйм  
property Width: Integer; Ширина экрана в пикселах  

При работе под управлением W2000/XP программа может работать со множеством мониторов, которые в совокупности образуют первичный монитор, составленный из остальных слева направо и сверху вниз. Ряд свойств DesJctopXXXX определяют положение и размеры текущего монитора в координатах первичного. Если программа работает с единственным монитором, значения этих свойств и свойствХХХХ (Height, Width и т.д.) совпадают. СвойствоMonitorCount содержит общее количество обслуживаемых мониторов.

С объектомScreen связаны 2 события: property OnActiveControД.Change: TNotifyEve.it; - возникаетПри переходефокуса ввода от одного элемента другому;

property OnActiveFoxmChange: TNotifyEvent; - возникает при переходе фокуса ввода от одной формы к другой;

Глобальный объект Printer

ОбъектPrinter классаTPrinter автоматически создается, если в программе есть ссылка на модульPrinter». При помощи свойств и методов этого класса можно распечатывать не только тексты, но и графику. Настроить принтер можно с помощью специального компонента VCL - стандартного системного диалогаTPrinterSetupDialog (см.§4.1). Вывод на принтер в Windows ничем не отличается от вывода на экран: рисование осуществляется с использованием свойстваCanvas объектаPrinter. Размер листа в пикселах определяют свойстваHeight иWidth, а набор принтерных шрифтов - свойство Fonts. Основные свойства объектаPrinter приведены в табл. 6.5.


Свойство Описание
property Aborted: Boolean; СодержитTrue, если выполнение предыдущего задания на печать было досрочно прекращено
property Canvas: TCanvas; Канва принтера - основной инструмент создания изображения на листе бумаге
TPrinterCapability = (pcCopies, pcOrientation, pcCollation); TPrinterCapabilities = set of TPrinterCapability; property Capabilities: TPrinterCapabilities; Содержит текущие параметры драйвера принтера: pcCopies - может печататься несколько копий док-та; pcOrientation - драйвер поддерживает разную ориентацию листа pcCollation - документ печатается в подбор по экземплярам
property Copies: Integer; Указывает требуемое количество копий документа
property Fonts: TStrings; Содержит список доступных принтеру шрифтов
TPrinterOrientatiOn = (poPor.trai t, poLandscape) ; property Orientation: TPrinterOrientatiOn; Определяет ориентацию листа бумаги
property PageHeight: Integer; Содержит высоту листа бумаги в пикселах принтера
property PageNumber: Integer; Содержит номер печатаемой страницы документа (с 1)
property PageWidth: Integer; Содержит ширину листа бумаги в пикселах принтера
property Printerlndex: Integer; Содержит индекс принтера, назначенного принтером по умолчанию в спискеPrintersокна параметров печати
property Printers: TStrings; Содержит список всех доступных принтеров
property Printing: Boolean; СодержитTrue, если принтер занят печатью документа
property Title: string; Содержит имя задания на печать

Методы объектаPrinter представлены в табл. 6.6.

Таблица 6.6

Метод Описание
procedure Abort; Досрочно прекращает печать документа
procedure BeginDoc; Начинает печать документа
procedure EndDoc; Завершает печать документа
procedure NewPage; Начинает печать новой страницы документа

Глобальный объект Clipboard

Класс TClipboard предоставляет программисту интерфейс с буфером, обмена Windows. При использовании модуляClipbrd, становится доступным глобальный объектClipboard классаTClipboard, инкапсулирующий свойства и методы для работы с буфером обмена. Свойства объектаClipboardприведены в табл. 6.7.

Таблица 6.7

Свойство Описание
property AsText: string; Рассматривает содержимое буфера обмена как текстовую строку неограниченной длины
property FormatCount: Integer; Содержит число форматов, в буфере на данный момент.
property Formats[Index: Integer]: Word; Открывает доступ к данным по формату, указанному индексомIndex

Методы объектаClipboard приводятся в табл. 6.8.

___________________________________________________________ Таблица 6.8

Метод Описание
procedure Assign (Source: TPersistent); Копирует изображение в буфер обмена
procedure Clear; Очищает буфер обмена
procedure Close; Уменьшает на 1 счетчик блокировок буфера обмена и закрывает его, если счетчик содержит 0.
function GetTextBuf (Buffer: PChar; BufSire: Integer): Integer; Копирует из буфера обмена не болееBufSizeсимволов в текстовый буферBuffer и возвращает действительное число скопированных символов
procedure HasFormat (Format: Word) : Boolean; Возвращает значениеTrue, если буфер обмена содержит данные в форматеFormat: CF_TEXT - текст с CR-LF в конце каждой строки. Нулевой символ означает конец текста. CF_BITMAP - BMP-файл. CF~MBTAFILEPICT - WMF-файл. CF_PICTURE - Объект типа TPicture. CF COMPONENT - Объект - наследник TPersistent.
procedure Open; Увеличивает на 1 счетчик блокировок буфера обмена и открывает его, если он еще не был открыт
procedure SetTextBuf (Buffer: PChar); Помещает в буфер обмена содержимое текстового буфераBuffer

Большая nactb компонентов, предназначенных для хранения текста и/или изображений, имеют собственные методы для работы с буфером обмена. Например, текстовые поляTEdit, ТМешо, TRichEdit имеют методы CopyToClipboard, CutToClipboard, PasteFramClipboaxd. Компонент 'IImage имеет свойствоPicture классTPicture, которое инкапсулирует

методыLoadFromClipboardFormat, S aveToC 1 ipbos rdForma t и RegisterClipboardFormat - с помощью этих методов компонент обменивается с буфером изображениями определенного формата и может зарегистрировать в нем новый формат изображения. Тем не менее эти и другие компоненты для работы с буфером могут использовать свойствоAsText объекта Clipboard и его методыAssign, GetTextBuffer, SetTextBuf f er.

Для копирования в буферобмена графических и текстовых данных используются различные методы. Чтобы поместить в буфер обмена изображение, необходимо обратиться к методуAssign буфера. Clipboard.Open;

Clipboard.Assign (Image1.Picture); Clipboard.Close;

Для копирования изображения из буфера обмена можно воспользоваться методомAssign компонентаTImage: CI ipboard.Open;

Imagel.picture.Assign (Clipboard) ; Clipboard.Close;

Для работы с текстовой информацией используются методыSetTextBuf и GetTextBuf. Также можно копировать текст напрямую через свойствоAsText.Например:

Clipboard. Open ;

Labell.Caption:» Clipboard.AsText; Clipboard.Close;

Можно поместить в буфер обмена содержимое свойстваCaption метки: CI ipboard. Open ;

Clipboard.AsText :=* Labell.Caption; Clipboard.Close;

ИБЛИОГРАФИЧЕСКИЙ СПИСОК

· Александровский А.Д. Delphi 4: Шаг в будущее,- М.: ДМК, 1999.-524 е.

· Архангельский А.Я. 100 компонентов общего назначения библиотеки Delphi 5.-М : БИНОМ, 1999.-215 с.

· Архангельский А.Я. Интегрированная среда разработки Delphi. От версии 1 до версии 5.- М.: БИНОМ, 1999.-266 с.

· Архангельский А.Я. Программирование в Delphi 4.- М.: БИНОМ, 1999.— 761 с.

· Архангельский А.Я. Разработка прикладных программ для Windows в Delphi 5 - М.: БИНОМ, 1999.-250 с.

· Архангельский А.Я. Object Pascal в Delphi 5.- М.: БИНОМ, 1999.-219 с.

· Баас Р., Фервай М., Гюнтер X. Delphi 5 - Киев: Ирина: BHV, 2000.-494 с.

· Дантеманн Д., Мишел Д., Тейлор Д. Программирование в среде Delphi. - Киев: НИПФ «ДиаСофт Лтд.», 1995 .-608 с.

· Дарахвелидзе П.Г., Марков Е.П. Delphi 4.- СПб.: BHV-Санкт-Петербург, 1999.-802 с.

· Дарахвелидзе П.Г., Марков Е.П., Котенок О.А. Программирование в Delphi 5.- СПб.: BHV-Санкт-Петербург, 2000.-748 с.

П.Елманова Н.З., Трепалин С.В. Delphi 4: Технология COM: OLE. ActiveX. Автоматизация. MIDAS. Microsoft Transaction Server.- M.: Диалог-МИФИ, 1999.-318 с.

. Епанешникоз A.M., Епанешников B.A. DELPHI 4: Среда разработки,- M.: Диалог-МИФИ, 1999.-304 с.

. Иваноьа Г.С., Ничушкина Т.Н., Пугачев Е.К. Объектно-ориентированное программирование,- М.: Изд-во МГТУ им. Н.Э. Баумана, 2001.-320 с.

. Культин Н. Delphi 3: Программирование на Object Pascal.- СПб.:ВНУ- Саякт-Петербург, 1998.-304 с.

. Канту М., Гуч Т., Лэм Д.Ф. Delphi: Руководство разработчика.- М.; Киев: Энтроп: Десс: Век+, 1999.-749 с.

Наши рекомендации