Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Corba";
Текущий архив: 2005.11.13;
Скачать: [xml.tar.bz2];

Вниз

Создание ActiveX...   Найти похожие ветки 

 
Dixi ©   (2005-02-03 13:12) [0]

Есть проблемка. DAX. Создал ActiveX. Начал пользовать (внедрил, настроил свойства и т.д.), сохранил документ, выгрузил и вновь загрузил. Свойства которые я настраивал сбросились. Ни одна из моих настроек не сохранилась... Кто имеет опыт разратотки ActiveX в Delphi, помогите разобраться, pls.


 
Набережных С. ©   (2005-02-03 17:06) [1]

Без твоего участия они не сохранятся. Сохраняй сам.


 
Dixi ©   (2005-02-04 15:47) [2]

Есть класс TActiveXControl. Он сам все делает, умеет сохранять себя и т.д. и т.п. (методы соответствующих интерфейсов реализованы и, на первый взляд, должны работать). У него есть внутреннее свойство FIsDirty, которое никогда не бывает True. Есть метод Close:

function TActiveXControl.Close(dwSaveOption: Longint): HResult;
begin
 if (dwSaveOption <> OLECLOSE_NOSAVE) and FIsDirty and
   (FOleClientSite <> nil) then FOleClientSite.SaveObject;
 ...
end;

в котором никогда не выполнится FOleClientSite.SaveObject.

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

Дело все в том, что IPersistStreamInit.IsDirty всегда возвращает S_False и контейнер думает, что сохранение не требуется...

Получается, что Borland не дает возможности разработчикам ActiveX писать полноценные компоненты (по крайней мере наследоваться от TActiveXControl), или я чего-то не понимаю? Может это не проблема вовсе, может тут какой-то специальный подход нужен?

Кто сталкивался с подобной проблемой, напишите. Заранее спасибо.

PS:
Тестировал ActiveX, созданный как обертка над TMemo (Delphi7). Внедрял в MS Word 2003. Настраивал: менял имя, размеры. При новой загрузке настройки были по умолчанию, а не те, которые я настроил.


 
Набережных С. ©   (2005-02-04 19:07) [3]

>Dixi ©   (04.02.05 15:47) [2]
>есть внутреннее свойство FIsDirty, которое никогда не бывает True

Вообще-то это не свойство, а поле. Но это так, к слову. А вот если сделать поиск в AxCtrls по этому слову, то мгновенно станет ясно, что оно в принципе  не может быть истинно. Что это - баг и или вражий умысел - я не знаю, да и не интересно. Я ж те говорю - сам сохраняй.
 Есть два пути(может и больше, но я их не знаю). Первый: исправить и перекомпилить AxCtrls. Второй: в своем контроле переопределить все методы, которые интересуют. Выбирай сам, реализуемо и то, и другое.


 
Dixi ©   (2005-02-07 09:17) [4]

Спасибо, конечно. Но я собственно и спрашивал про то, почему оно всегда ложь, а не где<b/> его найти. Все равно спасибо.



Страницы: 1 вся ветка

Форум: "Corba";
Текущий архив: 2005.11.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.042 c
3-1128085178
alpine
2005-09-30 16:59
2005.11.13
Как сделать выборку по полю SUM(SUMMA) ?


1-1130076984
Эксперт
2005-10-23 18:16
2005.11.13
А как сделать скролинг для TPanel как в TabControl?


3-1128366408
suharew
2005-10-03 23:06
2005.11.13
SQL Запрос


9-1120030753
Зм1й
2005-06-29 11:39
2005.11.13
Морфинг


3-1128073045
Ega23
2005-09-30 13:37
2005.11.13
Raiserror в вызове ХП





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский