Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Бип из системно... 65535
Пример работы с... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
21 ошибка прогр... 65535
Гостевая книга ... 65535
Форум на вашем ... 65535
HACK F.A.Q 65535
Содержание сайт... 65535
Invision Power ... 65535
Программируемая... 65535
Оператор выбора... 65535
Модуль Forms 65535
Реклама
Сейчас на сайте
Гостей: 4
На сайте нет зарегистрированных пользователей

Пользователей: 13,155
новичок: akshin
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Диплом - база данных поставщиков на Delphi (MS Sql Server)+ Пояснительна...
Моделирование литейного цеха на GPSS + Пояснительная записка
Обработка задач на ЭВМ на GPSS + Пояснительная записка

Реклама



Подписывайся на YouTube канал о программировании, что бы не пропустить новые видео!

ПОДПИСЫВАЙСЯ на канал о программировании
Добавление 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 к определению класса. Измените первую строку определения, декларирующую тип...



type
TButtonX = class(TActiveXControl, IButtonX)




на...



type
TButtonX = class(TActiveXControl, IButtonX, IPersistPropertyBag)




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



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;




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



// -- реализация 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, которая должна выглядеть приблизительно так:

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

Эта страница должна заработать без проблем. Тем не менее, теперь у вас имеется возможность задания заголовка для кнопок через HTML простым добавлением тэга PARAM. Вам измененный тэг OBJECT должен выглядеть таким образом:
classid="clsid:324EB783-20A4-11D1-AB11-0020AF3E6306"
codebase="ActiveX/ButtonXControl.ocx"
width=100
height=50
align=center
hspace=0
vspace=0
>


Заголовок кнопки теперь будет говорить вам "Привет". В нашем примере заголовок будет доступен только с помощью данного метода. Для того, чтобы рулить другими свойствами, следуйте нашему примеру и изменяйте имя свойства, которое вы хотите использовать.
Опубликовал Kest Ноябрь 14 2008 00:50:00 · 0 Комментариев · 6353 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Blobs [Исходник н...
Песочные часы
AddPage [Исходник...
Ics
С# для профессион...
32 урока по Delphi
Советы по Delphi
Удаление своего EXE
Abc_component
Генетический алго...
PDF
Работа с базами д...
Отключение и вклю...
Binary2XMLDemo (Р...
Prolog Interprete...
KOL & MCK v1.69
JanButtonsV
mp3tag
Пример работы с б...
Exe in exe

Топ загрузок
Приложение Клие... 100685
Delphi 7 Enterp... 95554
Converter AMR<-... 20190
GPSS World Stud... 16719
Borland C++Buil... 13937
Borland Delphi ... 9754
Turbo Pascal fo... 7244
Калькулятор [Ис... 5613
Visual Studio 2... 5133
FreeSMS v1.3.1 3624
Случайные статьи
Категории компонентов
Работа над языком ...
Установка съемной ...
29юс20з Почтовый с...
Дополнительные вст...
Сертификация специ...
Элемент ввода text...
площадь треугольни...
Структура ОП должн...
Где ареометры купить
Слот-автоматы
Возможности окруже...
9.6. Заключение
Тестирование, поис...
4.1. Порождение ...
Криптозащита текст...
Выполнение процеду...
Способы вывода сре...
Типы данных
Простые советы про...
Основы OLE. Термин...
Умножение
Дрожание фотоаппар...
Сигналы в SVR4
Глава 10
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?