Форум: "Corba";
Текущий архив: 2006.12.24;
Скачать: [xml.tar.bz2];
ВнизСвойство не сохраняется Найти похожие ветки
← →
Juice © (2005-09-15 19:17) [0]Тривиальная задача а напоролся на глупую проблему: создаю ActiveX форму, размещаю на ней компоненты и все такое. Теперь надо обьявить парочку своих дополнительных свойств. Открываю редактор библиотеки типов, создаю в интерфейсе нужные мне свойства, проверяю - они появились. Одна проблема - они не сохраняются в dfm-файле. Напр. кидаю на форму созданный ActiveX, редактирую в Object Inspector"e мое св-во "Params", сохраняю проект, закрываю, открываю - "Params" пустое. Глянул как оно в pas-файле библиотеке типов - property Params: WideString index 218 read GetWideStringProp write SetWideStringProp stored False;
Почему, что делаю не так ?
← →
Juice © (2005-09-16 14:26) [1]Больше всего добивает то, что в трех книгах (2 по СОМ и одна по Delphi) расписано до мелочей ка создвать ActiveX, Эктив-формы, редакторы свойств, куча страниц - и хоть бы где упомянулось какого @#$% свойства не сохраняются. В справке Delphi такая же картина, в нете тоже куча статей про кликанье по кнопкам. Я не верю что тут нет людей разбирающихся в ActiveX.
← →
k2 © (2005-09-19 09:58) [2]1) определить соответствующее поле для хранения значения свойства Params и реализовать методы доступа:
допустим
library Project1;
uses
ComServ,
Project1_TLB in "Project1_TLB.pas",
ActiveFormImpl1 in "ActiveFormImpl1.pas" {ActiveFormX: TActiveForm} {ActiveFormX: CoClass};
...
в ActiveFormImpl1.pas:
type
TActiveFormX = class(TActiveForm, IActiveFormX)
private
{ Private declarations }
FEvents: IActiveFormXEvents;
FParams: WideString;
procedure ActivateEvent(Sender: TObject);
...
end;
...
implementation
...
function TActiveFormX.Get_Params: WideString;
begin
Result := FParams;
end;
procedure TActiveFormX.Set_Params(const Value: WideString);
begin
if FParams <> Value then
FParams := Value;
end;
...
2)к сожалению не уверена какой флаг в библиотеке типов необходимо установить,
штобы при импорте получилось ActiveX контрола получилось stored true, но можно
на крайний случай поправить ручками(нехорошо ибо при возможном последующем импорте
значение затрется, думаю мастера подскажут какой флаг):Project1_TLB;
interface
...
TActiveFormX = class(TOleControl)
private
...
property Params: WideString index 16 read GetWideStringProp write SetWideStringProp stored True;
...
end;
← →
Juice © (2005-09-19 13:31) [3]Все сделано так, как вы говорите, визуальный редактор сам это все проделывает. А вот ручками поправить не приводит к нужному результату, т.к. при следующем refresh библиотеки оно снова устанавливается в false. Флаги я уже все перепробовал - никакого эффекта.
← →
k2 © (2005-09-20 09:11) [4]я была не права, пункт 2 не нужен
>Juice © (19.09.05 13:31) [3]
врядли визуальный редактор пишет реализацию, во всяком случае мой пятерочный не хочет, противный :)
пример: форма, библиотека и тестовое приложение http://www.webfile.ru/528471
весит 31кб без *.ocx и *.exe тестового приложения
удачи
← →
Juice © (2005-09-20 11:08) [5]
> k2 © (20.09.05 09:11) [4]
Большое спасибо!
Страницы: 1 вся ветка
Форум: "Corba";
Текущий архив: 2006.12.24;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.074 c