Глобальные объекты в Дельфи. Их свойства и методы.
В этой статье я постараюсь рассмотреть существующие в Дельфи глобальные классы. Расскажу о том, как и где их можно применять и что с ними можно делать.
Начнем мы с глобального класса (объекта) TApplication. Предлагаю вам ознакомиться с приведенной таблицей событий этого объекта:
События | Возникает |
---|---|
OnActionExecute: TActionEvent | Происходит при вызове метода Execute перед обработкой списка событий. |
OnActionUpdate: TNotifyEvent | Происходит при вызове метода Update; |
OnActivate: TNotifyEvent | При переходе приложения в активное состояние. |
OnDeactivate:TNotifyEvent | При переключении на другое приложение Windows |
OnException: TExceptionEvent | При возникновении исключительной ситуации |
OnHelp: THelpEvent | При запросе приложением справочной системы. |
OnHint: TNotifyEvent | При перемещении мыши над компонентом, у которого есть строка подсказки (Hint) |
OnIdle: TNotifyEvent | При отсутствии работы у приложения |
OnMessage: TMessageEvent | При получении сообщения Windows |
OnMinimize: TNotifyEvent | При минимизации приложения |
OnRestore: TNotifyEvent | При восстановлении приложения в нормальный размер |
OnShowHint: TShowHintEvent | При выводе строки подсказки (Hint) |
Для примера
хочу предложить вам пример программы,
которая при простое увеличивает счетчик на
единицу, а при нажатии клавиши перестает
это делать. Поставьте на форму одну кнопку и
метку. Свойство Caption
метки должно быть
равно '0';
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } procedure count(Sender:TObject; var Done:boolean); procedure stop(var Msg:TMsg; var Handled:boolean); public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure Tform1.Count; begin label1.Caption:=IntToStr(StrToInt(label1.caption)+1);//увеличиваем счетчик Done:=false; end; procedure TForm1.stop(var Msg:Tmsg; var Handled:boolean); begin if Msg.message=WM_KEYDOWN then begin //нажата любая клавиша Application.OnMessage:=nil;//сообщение не обрабаьывать Application.OnIdle:=nil;//Отменить фоновую работу Handled:=true;//сообщение обработано end; end; procedure TForm1.Button1Click(Sender: TObject); begin Application.OnIdle:=count;//процедура обработки простоя Application.OnMessage:=Stop;//процедура обработки сообщений end; end.
Еще у
объекта TApplication есть ряд полезных свойств.
Их названия и смысл приведены в таблице.
Свойство | Описание |
HelpFile: String | Имя файла контекстной помощи, которое используется приложением |
Hint: String | Строка подсказки |
HintHidePause: Integer | Время, в течении которого подсказка будет отображаться. По умолчанию 2500 мсек. |
HintPause: Integer | Время, через которое подсказка появится при перемещении курсора над объектом. По умолчанию 500 мсек. |
HintShortPause: Integer | Используется для уменьшения мерцания курсора при перемещении мыши над объектом. По умолчанию 50 мсек. |
ShowHint: Boolean | Разрешает выводить подсказку для всего приложения (по умолчанию). Установив в False, вы запретите вывод подсказок для всего приложения |
Следующий глобальный объект, который мы с вами рассмотрим - Screen. Этот объект инкапсулирует свойства дисплея. У него очень много свойств, но мы посмотрим только некоторые из них. Вам, наверно, часто приходилось встречать такую вещь: когда программа выполняет какую-нибудь долгую операцию, курсор над формой изменяет свой вид, а потом, когда операция выполнена, становится нормальным. Чтобы реализовать эту штуку, нам придется воспользоваться свойтсвом Cursor, объекта Screen. Это свойство отвечает за вид курсора над вашим приложением. Тогда общий вид какой-нибудь процедуры может быть таким:
try Screen.Cursor:=crHourGlass; {какие-нибудь длинные операции или вычисления} finally Screen.Cursor:=crDefault; end;
Также с помощью объекта Screen можно узнать параметры монитора. Свойства Width и Height указывают на ширину и высоту монитора соответственно. А свойство PixelPerInch - число точек на дюйм.
Как получить список всех шрифтов, о потом занести их в Combobox?? Такой вопрос, наверно, не раз задавали себе начинающие программисты, делая текстовые редакторы. Все очень просто, достаточно воспользоваться свойством Fonts. Записав эту строку в обработчике OnCreate для вашей формы, вы получите Combo со списком шрифтов, установленных у вас в системе:
Combobox1.Items:=Screen.Fonts;
Последний глобальный объект, который мы рассмотрим в этой статье будет объект Clipboard, необходимый для работы с буфером обмена. Для того, чтобы начать работу с этим объектом, необходимо в разделе Uses указать модуль Clipbrd. У этого объекта всего три свойства:
Свойство | Описание |
---|---|
AsText: string | Используется для обмена информацией в текстовом виде. |
FormatCount: integer | Содержит общее число форматов, которые находятся в буфере обмена в данный момент. |
Formats [Index: Integer]: Word | Содержит значения идентификаторов формата, Index[0..FormatCount-1]. |
Например, чтобы при загрузке программы, в Memo помещался текст из буфера обмена, в обработчике формы OnCreate, нужно написать следующее:
Memo1.Text:=Clipboard.AsText;
Для работы с буфером обмена существует ряд методов. Для очистки буфера используется метод Clear, для того, чтобы поместить в буфер изображение (*.BMP или *.WMF) нужно воспользоваться методом Assign (Source: TPersistent).
Ну вот и все, я кратко рассказал вам, о некоторых глобальных объектах в Дельфи.