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

Объект Clipboard

TClipboard = class(TPersistent)

Объект TClipboard представляет программисту интерфейс с буфером обмена (Clipboard) Windows. При включении в проект модуля CLIPBRD этот гло­бальный объект создается автоматически и доступен приложению в течение всего цикла.

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

procedure Open;

procedure Close;

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

Очистка содержимого буфера (для всех форматов) производится вызовом ме­тода:

procedure Clear;

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

(Ro) property FormatCount: Integer;

— содержит число форматов в буфере на данный момент;

(Ro) property Formats[Index: Integer]: Word;

— содержит их полный список. Функция

function HasFormat(Format: Word): Boolean;

проверяет, содержится ли в данный момент формат Format.

Волею разработчиков различаются способы обмена графической и текстовой информацией через буфер обмена. Рассмотрим их независимо.

Через вызов метода

procedure Assign(Source: TPersistent);

в буфер обмена помещаются данные классов TGraphic, точнее, его потомков — классов TBitmap (формат CF.BITMAP) и TMetaffle (CF.METAFILEPICT). Данные класса TIcon не имеют своего формата и с TClipboard несовместимы.

Допустимо и обратное: в TClipboard есть специальные (скрытые) методы для присваивания содержимого объектам классов TPicture, TBitmap и TMetafile. Допустимы выражения вида:

My Image.Picture.Assign(Clipboard) ;

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

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

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

procedure SetTextBuf(Buffer: PChar);

— помещает текст из Buffer в буфер обмена в формате CF_TEXT;

Свойство

property AsText: string;

соответствует содержимому буфера обмена в текстовом формате CF_TEXT

(приведенному к типу string). При отстутствии там данных этого формата возвращается пустая строка.

Методы

function GetAsHandle(Format: Word): THandle;

procedure SetAsHandle(Format: Word; Value: THandle);

соответственно читают и пишут данные в буфер в заданном формате Format. При чтении возвращается дескриптор находящихся в буфере данных (или О при отсутствии). Для дальнейшего использования эти данные должны быть скопированы. При записи данные, передаваемые в параметре Value, в даль­нейшем должны быть уничтожены системой (а не программой пользователя).

Два метода предназначены для обмена компонентами через буфер обмена (в специально зарегистрированном формате CF_COMPONENT):

function GetComponent(Owner, Parent: TComponent): TComponent;

procedure SetComponent(Component: TComponent);

Они используются составными частями среды Delphi.

Компонент tScreen

TScreen = class(TComponent);

Этот компонент представляет свойства дисплея, на котором выполняется приложение. Поскольку экземпляр данного класса только один (он создается системой при запуске приложения), то большинство методов и свойств имеют информационный характер и недоступны для записи.

Курсор приложения, общий для всех форм, доступен через свойство:

property Cursor: TCursor;

Часто приходится включать "песочные часы" на время выполнения длительной операции. Лучше всего это сделать следующим образом:

Screen.Cursor := crHourglass;

try

(Calculations...} finally

Screen.Cursor := crDefault;

end;

Возвращает дескриптор курсора с индексом Index свойство:

property Cursors[Index: Integer]: HCURSOR;

Няпомшм, что шщексы зарегистрированных курсоров лежат в диапазоне от -17 (crSQLWait) до 0 (crDefault).

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

procedure TFormI.FormCreate(Sender: TObject);

type

TGetStrPunc = function(const Value: string): Integer of object;

var

CursorNames: TStringList;

AddValue: TGetStrPunc;

begin

CursorNames := TStringList.Create;

AddValue := CursorNames.Add;

GetCursorValues(TGetStrProc(AddValue));

ListBoxl.Items.Assign(CursorNames) ;

end;

procedure TFormI-ListBoxlClick(Sender: TObject);

begin Screen.Cursor :=

StringToCursor(ListBoxl.Items[ListBoxl.Itemlndex]);

end;

Имена всех установленных в системе шрифтов помещаются в список, опреде-ленньш в свойстве:

(Ro\ property Fonts: TStrings;

Компонент сообщает неизменяемые свойства экрана (в данном видеорежиме). Его размеры в пикселах определены в свойствах:

(ro) property Height: Integer;

(Ro) property Width: Integer;

Число точек на дюйм дисплея содержится в свойстве:

(Ro) property PixelsPerInch: Integer;

При появлении каждая форма заносит себя в список форм глобального объекта Screen. Два (доступных только для чтения) свойства дают информацию об этом списке:

J property Forms[Index: Integer]: TForm;

property FormCount: Integer;

Нужно иметь в виду, что в списке указаны только формы, открытые приложением, а не все окна системы.

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

(Ro) property ActiveControl: TWinControl;

(ro) property ActiveForm: TForm;

При их изменении генерируются соответственно события:

property OnActiveControlChange: TNotifyEvent;

property OnActiveFormChange: TNotifyEvent;

Соседние файлы в папке Delphi