|
|
Borland Delphi >
Статьи
Глобальные объекты в Дельфи. Их свойства и
методы.
В этой статье я постараюсь рассмотреть
существующие в Дельфи глобальные классы. Расскажу о том, как и где их
можно применять и что с ними можно делать.
Начнем мы с глобального класса (объекта)
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).
Ну вот и все, я кратко рассказал вам, о
некоторых глобальных объектах в Дельфи.
|