Форум: "Основная";
Текущий архив: 2003.07.10;
Скачать: [xml.tar.bz2];
ВнизМожет кто подскажет по 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c