TOLEContainer в BCB 6 без Parent'a?
От: gbs Россия  
Дата: 24.05.04 08:28
Оценка:
У меня возникла след. ситуация: при отрисовке на TForm Excell-диаграмм ранее мной использовался TOLEContainer, а точнее OleDraw через интерфейс TOLEContainer'a. Сейчас возникла необходимость делать то же самое, но в DLL, т.е. не визуализируя Active X Control в TOLEContainer'e. Я попытался создать контейнер в run-time, без указания Parent'a, но при попытки загрузить из TStream информации в OLEContainer — ругается — типа Control has not parent...
Вот дилемма — отказаться от использования OLEContainer и делать все руками путем создания подобного контейнера или может все-таки кому-то удалось заставить стандартный компонент вести себя правильно?
Спасибо.
Re: TOLEContainer в BCB 6 без Parent'a?
От: Denis Titov Россия  
Дата: 24.05.04 10:01
Оценка:
Здравствуйте, gbs, Вы писали:

gbs>У меня возникла след. ситуация: при отрисовке на TForm Excell-диаграмм ранее мной использовался TOLEContainer, а точнее OleDraw через интерфейс TOLEContainer'a. Сейчас возникла необходимость делать то же самое, но в DLL, т.е. не визуализируя Active X Control в TOLEContainer'e. Я попытался создать контейнер в run-time, без указания Parent'a, но при попытки загрузить из TStream информации в OLEContainer — ругается — типа Control has not parent...

gbs>Вот дилемма — отказаться от использования OLEContainer и делать все руками путем создания подобного контейнера или может все-таки кому-то удалось заставить стандартный компонент вести себя правильно?
gbs>Спасибо.

А может просто создать объект через CreateOleObject? Если все равно не надо визуализации...
Re[2]: TOLEContainer в BCB 6 без Parent'a?
От: gbs Россия  
Дата: 24.05.04 12:25
Оценка:
Здравствуйте, Denis Titov, Вы писали:

DT>А может просто создать объект через CreateOleObject? Если все равно не надо визуализации...


Угу, я так и собираюсь сделать...Но встает вопрос — как загрузить его из потока?
Re[3]: TOLEContainer в BCB 6 без Parent'a?
От: Denis Titov Россия  
Дата: 25.05.04 05:23
Оценка:
Здравствуйте, gbs, Вы писали:

gbs>Здравствуйте, Denis Titov, Вы писали:


DT>>А может просто создать объект через CreateOleObject? Если все равно не надо визуализации...


gbs>Угу, я так и собираюсь сделать...Но встает вопрос — как загрузить его из потока?


Надо лезть в исходники TOleContainer и смотреть как он это делает. Я бы и сам глянул, да вот ни Delphi ни Builder
не имею в данный момент
Re[4]: TOLEContainer в BCB 6 без Parent'a?
От: gbs Россия  
Дата: 26.05.04 06:47
Оценка:
Здравствуйте, Denis Titov, Вы писали:

DT>>>А может просто создать объект через CreateOleObject? Если все равно не надо визуализации...


gbs>>Угу, я так и собираюсь сделать...Но встает вопрос — как загрузить его из потока?


DT>Надо лезть в исходники TOleContainer и смотреть как он это делает. Я бы и сам глянул, да вот ни Delphi ни Builder

DT>не имею в данный момент

Спасибо за наводку. Я посмотрел — примерно так же все реализовал у себя, все прекрасно загружается в Excel(без ActiveX), но...
при попытке опросить доступные интрефейсы экселя на предмет наличия IViewObject — не находит ничего
А задача у меня — отрисовать построенную диаграму на Bitmap в памяти... Даже не знаю что и делать теперь... Есть конечно вариант создать из dll форму в памяти — пихнуть на нее OleContainer и через его IOleObject интерфейс выполнить OleDraw... Но это же "через голову" получиться...
Re[5]: TOLEContainer в BCB 6 без Parent'a?
От: Denis Titov Россия  
Дата: 26.05.04 08:30
Оценка:
Здравствуйте, gbs, Вы писали:

gbs>Здравствуйте, Denis Titov, Вы писали:


DT>>>>А может просто создать объект через CreateOleObject? Если все равно не надо визуализации...


gbs>>>Угу, я так и собираюсь сделать...Но встает вопрос — как загрузить его из потока?


DT>>Надо лезть в исходники TOleContainer и смотреть как он это делает. Я бы и сам глянул, да вот ни Delphi ни Builder

DT>>не имею в данный момент

gbs>Спасибо за наводку. Я посмотрел — примерно так же все реализовал у себя, все прекрасно загружается в Excel(без ActiveX), но...

gbs>при попытке опросить доступные интрефейсы экселя на предмет наличия IViewObject — не находит ничего
gbs>А задача у меня — отрисовать построенную диаграму на Bitmap в памяти... Даже не знаю что и делать теперь... Есть конечно вариант создать из dll форму в памяти — пихнуть на нее OleContainer и через его IOleObject интерфейс выполнить OleDraw... Но это же "через голову" получиться...

Вообще-то, OleDraw просто IUnknown требует а не IViewObject. Или я чего не понял?
Re[6]: TOLEContainer в BCB 6 без Parent'a?
От: gbs Россия  
Дата: 26.05.04 12:23
Оценка:
Здравствуйте, Denis Titov, Вы писали:

DT>Вообще-то, OleDraw просто IUnknown требует а не IViewObject. Или я чего не понял?


К сожалению требует

Remarks
The OleDraw helper function calls the QueryInterface method for the object specified (pUnk), asking for an IViewObject interface on that object. Then, OleDraw converts the RECT structure to a RECTL structure, and calls IViewObject::Draw as follows:

lpViewObj->Draw(dwAspect,-1,0,0,0,hdcDraw,&rectl,0,0,0);

Re: TOLEContainer в BCB 6 без Parent'a?
От: Alex  
Дата: 26.05.04 19:07
Оценка:
Здравствуйте, gbs, Вы писали:

gbs>У меня возникла след. ситуация: при отрисовке на TForm Excell-диаграмм ранее мной использовался TOLEContainer, а точнее OleDraw через интерфейс TOLEContainer'a. Сейчас возникла необходимость делать то же самое, но в DLL, т.е. не визуализируя Active X Control в TOLEContainer'e. Я попытался создать контейнер в run-time, без указания Parent'a, но при попытки загрузить из TStream информации в OLEContainer — ругается — типа Control has not parent...

gbs>Вот дилемма — отказаться от использования OLEContainer и делать все руками путем создания подобного контейнера или может все-таки кому-то удалось заставить стандартный компонент вести себя правильно?
gbs>Спасибо.

Можно положить контейнер на форму. Форму в RunTime создать, но не показывать. Для надёжности можно в конструкторе формы вызвать функцию HandleNeeded().
Re[2]: TOLEContainer в BCB 6 без Parent'a?
От: gbs Россия  
Дата: 27.05.04 07:54
Оценка:
Здравствуйте, Alex, Вы писали:

A>Можно положить контейнер на форму. Форму в RunTime создать, но не показывать. Для надёжности можно в конструкторе формы вызвать функцию HandleNeeded().


В конце концов я так и сделал
Re[3]: TOLEContainer в BCB 6 без Parent'a?
От: Alex  
Дата: 27.05.04 08:06
Оценка:
Здравствуйте, gbs, Вы писали:

gbs>Здравствуйте, Alex, Вы писали:


A>>Можно положить контейнер на форму. Форму в RunTime создать, но не показывать. Для надёжности можно в конструкторе формы вызвать функцию HandleNeeded().


gbs>В конце концов я так и сделал


И никакого гимороя
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.