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

Вниз

Может кто подскажет по IPersistStorage   Найти похожие ветки 

 
antoniz   (2003-06-26 09:20) [0]

Смысл следующий открыть в Excel объект из TOleConteiner, т.е. по сути дела создать его копию. Привожу код:
procedure TfrmPattern.OpenInExcel(OleStream: TMemoryStream);
var
Excel: Variant;
begin
Excel:=CreateOleObject("Excel.Application");
if Assigned(frmPatternConteiner.olePattern.StorageInterface) then
(IDispatch(Excel.WorkBooks.Add) as IPersistStorage).Load(frmPatternConteiner.olePattern.StorageInterface);
Excel.Visible:=true;
end;

frmPatternConteiner.olePattern - это TOLEConteiner

Код выполняется без ошибки. Однако в Excel открывается книга как вновь созданная. Т.е. такое впечатление что в нее через IPersistStorage ничего не грузилось. Excel XP если это существенно, но я думаю что нет.

Подскажите в чем я не прав.


 
Digitman ©   (2003-06-26 09:53) [1]

а сам олей-контейнер чем и каким способом загружен перед загрузкой данных из него ?


 
antoniz   (2003-06-26 10:03) [2]

у него внедренный объект, из ёкселевского файла. Короче его средствами.


 
Digitman ©   (2003-06-26 10:15) [3]

метод IPersistStorage.Load - это ф-ция или процедура ?


 
antoniz   (2003-06-26 10:18) [4]

функция


 
Digitman ©   (2003-06-26 10:41) [5]

так ведь она же что-то возвращает !

проанализируй возвр. ей результат - возможно, он даст тебе подсказку...


 
antoniz   (2003-06-26 10:49) [6]

Переделал код теперь функция возвращает, что все отлично, но результат тот же. До этого она возвращала, что не доступа к Storage.
код теперь следующий:
procedure OpenInExcel;
var
Storage: IStorage;
PersistStorage, PersistStorage2: IPersistStorage;
Excel: Variant;

begin
Storage:=nil;
PersistStorage2:=IDispatch(frmPatternConteiner.olePattern.OleObject) as IPersistStorage;
OleCheck(StgCreateDocfile(nil, STGM_READWRITE
or STGM_SHARE_EXCLUSIVE or STGM_CREATE, 0,Storage));
OleCheck(PersistStorage2.Save(Storage,false));
Excel:=CreateOleObject("Excel.Application");
PersistStorage:=(IDispatch(Excel.WorkBooks.Add) as IPersistStorage);
if Assigned(Storage) then
Case PersistStorage.Load(Storage) of
S_OK: ShowMessage("Yes"); //возвращает теперь это
CO_E_ALREADYINITIALIZED: ShowMessage("Initial");
E_OUTOFMEMORY: ShowMessage("Out");
E_FAIL: ShowMessage("Fail");
end;
Excel.Visible:=true;
end;

И что делать теперь?



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

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

Наверх




Память: 0.48 MB
Время: 0.021 c
1-31281
picaroon
2003-06-26 13:23
2003.07.10
Как менять цвет Button а?


1-31340
Um
2003-06-26 07:42
2003.07.10
интерпретатор Delphi


7-31557
Dimaz-z
2003-04-26 20:18
2003.07.10
Как зарегистрировать расширение за своей программой?


14-31423
Axis_of_Evil
2003-06-25 11:20
2003.07.10
Lindows... А что это за девушка и где она живет ...


3-31084
Ann
2003-06-16 13:33
2003.07.10
Ошибка