.
Tuesday 22nd of May 2012    

Информация

Счетчики

Голосование

Лучшая марка телефона
 

Реклама

фильмы онлайн

фильмы онлайн


Поддержка COM
загрузка...

В завершение приведем несколько методов для программистов, имеющих представление о модели многокомпонентных объектов (Component Object Model, COM). Функция:

function GetInterface(const IID: TGUID; out Obj): Boolean;

возвратит интерфейс, определенный в уникальном идентификаторе IID. Результат будет помещен в выходной параметр Obj.

Есть еще две функции класса, позволяющие собрать данные о всех полях и методах данного объекта в единую таблицу интерфейсов (точнее структуру

TInterfaceTable):

class function GetInterfaceEntry(const IID: TGUID): PInterfaceEntry; class function GetInterfaceTable: PInterfaceTable;

где PInterfaceTable - указатель на описанную в модуле System структуру

TInterfaceTable.

type PInterfaceTable = "TInterfaceTable; TInterfaceTable = packed record

EntryCount: Integer;

Entries: array[0..9999] of TInterfaceEntry; end;

Класс TPersistent

Основная задача абстрактного класса TPersistent - научить создаваемые из него объекты сохранять и загружать свое описание из потока (файла или специально зарезервированной области памяти). Благодаря этому все элементы управления способны взаимодействовать с файлом *.dfm, а программист получает возможность сохранять все изменения, сделанные в проекте. Как и в случае с TObject, основу рассматриваемого класса составляют методы. К наиболее заслуживающим внимание методам TPersistent стоит отнести методы присвоения данных:

procedure Assign(Source: TPersistent); virtual; procedure AssignTo(Dest: TPersistent); virtual;

Метод Assign() позволяет элементу управления присваивать себе данные, связанные с другим объектом. Например, Image2, специализирующийся на хранении и отображении графической информации, получит доступ к картинке, содержащейся в элементе управления Image1, следующим образом:

Image2.Picture.Assign(Image1.Picture);

Вполне естественно, что особенности реализации метода Assign() изменяются от класса к классу, поэтому у потомков TPersistent процедура Assign() вполне может быть переписана, или, как часто говорят, перекрыта. Метод AssignTo() - близкий приятель метода Assign(). С его помощью элемент управления сможет разделить свои данные с другим объектом. Например, специализирующийся на отображении графических файлов компонент Im-age1 (класс TImage) может поделиться загруженным в него изображением с коллегой по цеху - компонентом Image2.

Image1.Picture.AssignTo(Image2.Picture);

Важно запомнить, что метод AssignTo() не создает дубликата каких-то данных, а лишь разделяет их с другим объектом.


загрузка...
 

Самое популярное:

bottom

карта сайта