

| стрелялки |
| спорт |
| драки |
| стратегии |
| гонки |
| логические |
| азартные |
| аркады |
| эротические |
| фильмы онлайн |
| Поддержка 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() не создает дубликата каких-то данных, а лишь разделяет их с другим объектом. |
