» Главная
eXcode.ru » Статьи » Delphi/Pascal » Сеть
» Новости
» Опросы
» Файлы
» Журнал



Пользователей: 0
Гостей: 14





Добавление IPERSISTPROPERTYBAG к активным элементам управления




Данный совет рассказывает о том, как можно добавить интерфейс IPersistPropertyBag к элементу управления ActiveX. Существует возможность установки свойств элемента управления ActiveX с помощью HTML тэгов PARAM. Добавление интерфейса IPersistPropertyBag в элемент управления ActiveX также позволяет изменять его свойства с помощью инструментов типа ActiveX Control Pad.

Добавление интерфейса IPersistPropertyBag к элементу управления ActiveX очень простая процедура. Все, что необходимо сделать, это добавить интерфейс к определению класса объекта и реализовать три метода интерфейса. Приведенный здесь пример покажет вам эту технологию шаг за шагом, где наш элемент управления ActiveX будет базироваться на TButton. Для упрощения примера мы покажем реализацию функциональности для свойства "Caption" (заголовок). Для реализации полной функциональности можно экстраполировать данный пример на все доступные свойства элемента управления.

Начнем с использования ActiveX Control Wizard и создадим элемент управления ActiveX на основе TButton.

Активизируйте пункт меню File|New и выберите в диалоге New Item (новый элемент) закладку ActiveX. Затем в списке выберите элемент "ActiveX Control". В появившемся диалоговом окне выберите TButton для VCL Class Name. Все остальные настройки можете не трогать и оставить как есть. После нажатия на кнопку OK Delphi сгенерирует базовый код для вашего элемента управления.

Следующим шагом будет добавление интерфейса IPersistPropertyBag к определению класса. Измените первую строку определения, декларирующую тип...

Листинг 1. Код Delphi/Pascal


type
TButtonX = class(TActiveXControl, IButtonX)


на...

Листинг 2. Код Delphi/Pascal


type
TButtonX = class(TActiveXControl, IButtonX, IPersistPropertyBag)


Теперь интерфейс IPersistPropertyBag добавлен к объявлению типа. Затем объявите необходимые методы, добавляя следующие строки в секцию protected:

Листинг 3. Код Delphi/Pascal


function IPersistPropertyBag.InitNew = PersistPropBagInitNew;
function IPersistPropertyBag.Load = PersistPropBagLoad;
function IPersistPropertyBag.Save = PersistPropBagSave;
function PersistPropBagInitNew: HResult; stdcall;
function PersistPropBagLoad(const pPropBag: IPropertyBag;
const pErrorLog: IErrorLog): HResult; stdcall;
function PersistPropBagSave(const pPropBag: IPropertyBag;
fClearDirty: BOOL; fSaveAllProperties: BOOL): HResult;
stdcall;


Затем, конечно, реализуйте эти функции...


Листинг 4. Реализация функций


// -- реализация PersistPropBagInitNew
function TButtonX.PersistPropBagInitNew: HResult;
begin
Result := S_OK;
end;

// -- реализация PersistPropBagLoad
function TButtonX.PersistPropBagLoad(const pPropBag:
IPropertyBag; const pErrorLog: IErrorLog): HResult; stdcall;
var
v: OleVariant;
begin
if pPropBag.Read(′Caption′, v, pErrorLog) = S_OK then
FDelphiControl.Caption := v;
Result := S_OK;
end;

// -- реализация PersistPropBagSave
function TButtonX.PersistPropBagSave(const pPropBag:
IPropertyBag; fClearDirty: BOOL; fSaveAllProperties: BOOL)
: HResult; stdcall;
var
v: OleVariant;
begin
v := FDelphiControl.Caption;
pPropBag.Write(′Caption′, v);
Result := S_OK;
end;


Добавлением этого кода завершается создание элемента управления. Продолжаем дальше: соберите (build) элемент управления ActiveX и разместите его в сети. Сделайте это с помощью мастера Web Delpoy Wizard. Просто сделайте необходимые настройки на странице Project|Web Delpoyment Options и разместите ActiveX через Project| Web Deploy.

Мастер Web Deployment Wizard создаст HTML-страницу, содержащую тэг OBJECT, которая должна выглядеть приблизительно так:

Листинг 5. HTML-страница, созданная Web Deployment Wizard


<OBJECT
classid="clsid:324EB783-20A4-11D1-AB11-0020AF3E6306"
codebase="ActiveX/ButtonXControl.ocx"
width=100
height=50
align=center
hspace=0
vspace=0
>
</OBJECT>


Эта страница должна заработать без проблем. Тем не менее, теперь у вас имеется возможность задания заголовка для кнопок через HTML простым добавлением тэга PARAM. Вам измененный тэг OBJECT должен выглядеть таким образом:

Листинг 6. тэг OBJECT


listing=#тэг OBJECT#]<OBJECT
classid="clsid:324EB783-20A4-11D1-AB11-0020AF3E6306"
codebase="ActiveX/ButtonXControl.ocx"
width=100
height=50
align=center
hspace=0
vspace=0
>
<Param Name="Caption" Value="Привет">
</OBJECT>


Заголовок кнопки теперь будет говорить вам "Привет". В нашем примере заголовок будет доступен только с помощью данного метода. Для того, чтобы рулить другими свойствами, следуйте нашему примеру и изменяйте имя свойства, которое вы хотите использовать.
К началу статьи





Добавил: LedWormДата публикации: 2005-12-17 22:13:40
Рейтинг статьи:3.00 [Голосов 5]Кол-во просмотров: 5895

Комментарии читателей

Всего комментариев: 45

2018-01-31 01:00:28
Greydui
Требуются деньги на короткий срок?
- срочный долг
Выдача кредита онлайн на карту за 25 мин. Получить здесь: http://bit.ly/2CrQ2Pz - деньги в долг без
Тинькофф банк кредитная карта
http://bit.ly/2CIVX3B - заявка на кредит
*money**

2017-12-22 22:07:58
Qtuircv
Платим за лайки! - Оплата по требованию!

Наш сервис предоставляет настоящие лайки на фото заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и зарабатывать за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

достаточно просто зарегистрироваться на нашем сервисе. > www.click-likes.tk <

Вывод заработанных средств ежедневно в течении нескольких минут.

2017-11-20 10:30:00
Ffqbbqh
Сервис для заработка на просмотре видео

Новинка интернет заработка видео-просмотры, которые приносят реальные деньги!

1 просмотр видео 100 рублей! Все просто, понятно и доступно!

Оплата за просмотр моментально. На счёт который Вы укажите при регистрации.

Для начала работы пройдите несложную регистрацию на сайте: http://video.exrabota.ru/

2017-10-26 15:55:09
Xvazsgf
Предлагаем Вам возможность работы в интернете, выбирайте самостоятельно более чем из тридцати вариантов заработка наиболее удобный и близкий для Вас.
Все подробности у нас на сайте. > www.exrabota.ru < скопируйте и вставьте в адресную строку вашего браузера.

2017-10-24 15:43:21
Kzmuyuo
Предлагаем Вам работу без вложений, на системе автоматического приёма и обработки заказов.

Мы предоставляем:

- Наш лицезионный софт.
- документы со всей необходимой доп. информацией.
- постоянная техническая поддержка.

Оплата от 5500 в день. Выплаты ежедневно.

Более подробная информация на нашем сайте >> http://zakaz.exrabota.ru/ <<

2017-10-22 15:58:32
Bnwzzgg
Предлагаем Вам работу без вложений, на системе автоматического приёма и обработки заказов.

Мы предоставляем:

- Наш лицезионный софт.
- документы со всей необходимой доп. информацией.
- постоянная техническая поддержка.

Оплата от 5500 в день. Выплаты ежедневно.

Более подробная информация на нашем сайте >> http://zarabotoker.tk/ <<

2017-10-22 08:57:35
Wnsfxmz
Пройдите 1 регистрацию, сделайте 2 действия
и получайте от 8950 рублей каждые сутки в автоматическом режиме.

Мы гарантируем:
- Первый заработок в течении 60 минут.
- Стабильный доход 24 часа в сутки.
- Поступление денег без задержек.
- Для России, стран СНГ и Европы.
- Без вложений и установки ПО.
- Специально для новичков и людей без опыта.

Более подробная информация на нашем сайте. ( http://prosto-dengi.tk/ )

2017-10-21 13:49:56
Udodajr
Мы платим за лайки! - Ежедневные выплаты!

Наш сервис предоставляет настоящие лайки на фото заказчиков, которые готовы платить за качество.

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

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

Вам достаточно просто зарегистрироваться на нашем сервисе. > http://rabotaist.tk/ <

Вывод заработанных средств ежедневно в течении нескольких минут.

2017-10-16 13:04:48
Awysxph
Платим за лайки! - Оплата сдельная!

Наш сервис предоставляет настоящие лайки на фотографии заказчиков, которые готовы платить за качество.

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

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

Вам достаточно просто зарегистрироваться на нашем сервисе. > www.oplata-vklike.tk <

Вывод заработанных средств ежедневно в течении нескольких минут.

2017-10-11 16:10:16
Whnueol
Новый сервис для заработка на просмотре видеороликов

Новинка интернет заработка видео-просмотры, которые приносят реальные деньги!

1 просмотр видео = 100 рублей! Все просто, понятно и доступно!

Оплата за просмотр моментально. На счёт который Вы укажите при регистрации.

Для начала работы пройдите несложную регистрацию на сайте: www.moneygrup.tk
Ваше имя: *
Текст записи: *
Имя:

Пароль:



Регистрация

Каким языком программирования вы чаще пользуйтесь?
C++
27% (108)
Delphi
47% (190)
PHP
8% (34)
Basic
3% (13)
Assembler
3% (11)
ASP
1% (6)
Perl
3% (11)
JAVA
3% (14)
Другой
4% (17)

Проголосовало: 404
Дневник программиста:
ВТОРИК: "Устанавливал полуось- чуть не умер."
СРЕДА: "Устанавливал Windows 95- лучше бы я умер во вторник."
Рейтинг: 4.5/10 (2)
Посмотреть все анекдоты