Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование в среде Delphy / Программирование в среде Delphi.doc
Скачиваний:
189
Добавлен:
01.05.2014
Размер:
1.3 Mб
Скачать

24.2. Объект Application

Этот объект создается для каждой программы, написанной в Delphi, и является связующим звеном с операционной системой Windows. Объект Application доступен только на этапе выполнения программы. Основные его методы вызываются в файле проекта приложения. Например:

program Project1;

uses Forms,

Unit1 in 'Unit1.pas' {Form1}; // Подключение текста программы

{$R *.res} // Подключение файлов ресурсов

begin

Application.Initialize; // Инициализация объекта Application

Application.CreateForm(TForm1, Form1); // Создание формы

Application.Run; // Запуск обработчика событий

end.

Приведем некоторые свойства этого объекта:

Property ExeName:String; – имя исполняемого файла программы,

Property HelpFile:String; – имя файла справки программы,

Property Hint:String; – вторая часть оперативной подсказки,

Property Title:String; – текст на кнопке свернутой программы.

Особый интерес представляет метод Procedure ProcessMessages;

Он приостанавливает выполнение программы до тех пор, пока не будут обработаны все сообщения в очереди Windows. Вызывать метод ProcessMessages необходимо для обновления содержимого визуальных компонентов в случае, когда в программе выполняется большой объем вычислений. Любое изменение содержимого компонента попадает в очередь сообщений Windows и остается в ней, пока не приостановится текущий вычислительный процесс. Поэтому в программах с большим объемом вычислений необходимо периодически (например, в конце итерации или на каждом шаге интегрирования) вызывать процедуру ProcessMessages, которая позволяет отслеживать этапы вычислительного процесса.

24.3. Глобальные объекты

Глобальные объекты доступны одновременно всем приложениям, выполняющимся на одном компьютере, и создаются автоматически при запуске приложения. Основными глобальными объектами являются: ClipBoard, Screen и Printer.

Объект ClipBoard

Объект Clipboard используется как буфер межпрограммного обмена в системе Windows. Для использования его возможностей достаточно в разделе uses подключить модуль Clipbrd.

Методы открытия и закрытия буфера обмена:

Procedure Open;

Procedure Close;

вызываются во всех остальных методах TClipBoard, поэтому прямой их вызов практически не используется.

Очистка буфера обмена производится методом – Procedure Clear;

С помощью свойств

Property FormatCount:Integer; // число форматов

Property Formats[Index:Integer]:Word; // номера форматов

можно узнать о форматах данных, записанных в буфер обмена.

Стандартно поддерживаются форматы, определяемые следующими текстовыми константами:

CF_TEXT – буфер содержит текст,

CF_BITMAP – буфер содержит картинку,

CF_METAFILEPICT – буфер содержит векторную картинку,

CF_PICTURE – буфер содержит объект типа TPicture,

CF_COMPONENT – буфер содержит компонент,

CF_PALETTE – буфер содержит палитру картинки.

Для работы с текстом предназначены следующие методы:

Function GetTextBuf(Buffer:PChar; BufSize:Integer):Integer;

Procedure SetTextBuf(Buffer:PChar);

Первый метод помещает текст из буфера обмена в переменную Buffer, длина которого ограничена значением BufSize. Функция возвращает истинную длину перемещенного текста. Второй метод помещает текст из переменной Buffer в буфер обмена в формате CF_TEXT.

Например, оператор

Clipboard.SetTextBuf(PChar(Memo1.SelText));

записывает в буфер обмена выделенный текст из компонента Memo1. Можно произвести и обратную операцию – поместить текст из буфера обмена, например, в компонент Memo2:

Memo2.Lines.Add(ClipBoard.AsText);

Здесь используется свойство AsText для извлечения текста из буфера обмена. Используя метод

Procedure Assing(Source:TPersistent);

можно помещать в буфер обмена данные классов TBitMap (формат CF_BITMAP) или TMetaFile (формат CF_METAFILEPICT).

Следующий пример показывает возможность сохранения картинки из компонента Image1 в буфере обмена и последующей переписи этой картинки в компонент Image2:

ClipBoard.Asssign(Image1.Picture);

Image2.Picture.Assing(ClipBoard);

Для определения формата данных, находящихся в буфере обмена, можно использовать, например, следующий обработчик события нажатия кнопки Button1:

Procedure TForm1.Button1Click(Sender: TObject);

begin

if Clipboard.HasFormat(CF_TEXT) then

ShowMessage('Буфер содержит текст');

if Clipboard.HasFormat(CF_BITMAP) then

ShowMessage('Буфер содержит картинку');

if Clipboard.HasFormat(CF_METAFILEPICT) then

ShowMessage('Буфер содержит векторную картинку');

if Clipboard.HasFormat(CF_PICTURE) then

ShowMessage('Буфер содержит объект типа TPicture');

if Clipboard.HasFormat(CF_COMPONENT) then

ShowMessage('Буфер содержит компонент');

end;

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