|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Как освободить объект, создаваемый OleCreatePropertyFrame?
Здравствуйте!
Каждый раз при вызове OleCreatePropertyFrame система автоматически создает объект TActiveXPropertyPage, соответственно у ComServ увеличивается счетчик ObjectCount. Необходимо как-то сделать, чтобы после закрытия странички свойств этот объект корректно разрушался и счетчик ObjectCount уменьшался. Подскажите пожалуйста, как это можно сделать или как-то обойти эту проблему? код вызова странички свойств примерно такой: Код:
procedure TXXX.ShowPropertyPage; procedure CoFreeMem(P: Pointer); begin if P <> nil then CoTaskMemFree(P); end; var Unknown: IUnknown; Pages: TCAGUID; begin OleCheck(GetPages(Pages)); try if Pages.cElems > 0 then begin Unknown := Self; OleCheck(OleCreatePropertyFrame(GetActiveWindow, 16, 16, nil, 1, @Unknown, Pages.cElems, Pages.pElems, GetSystemDefaultLCID, 0, nil)); end; finally CoFreeMem(pages.pElems); end; end; |
#2
|
||||
|
||||
Aristarh Dark, не нашел функции OleCreatePropertyFrame Занятно....
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#3
|
|||
|
|||
С проблемой удалось разобраться. Как выяснилось, проблема в VCL
Код:
destructor TActiveXPropertyPage.Destroy; begin FPropertyPageImpl.FPropertyPage.Free; FPropertyPageImpl.Free; end; Не вызывается inherited destroy |