Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.13;
Скачать: CL | DM;

Вниз

Создание 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 вся ветка

Текущий архив: 2005.11.13;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.031 c
4-1126619198
Erik1
2005-09-13 17:46
2005.11.13
Как получить статус процесса?


14-1130034733
Form1.Canvas..........
2005-10-23 06:32
2005.11.13
Лицензионные проги


9-1119838497
Littel_user
2005-06-27 06:14
2005.11.13
Распознание текста


2-1129725400
kolos_rus
2005-10-19 16:36
2005.11.13
Диспетчер печати


14-1130080643
Pazitron_Brain
2005-10-23 19:17
2005.11.13
Кпк





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский