Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-31083
OlegM
2003-06-16 13:11
2003.07.10
Вопрос по MySQL


8-31368
Катерина
2003-03-21 11:50
2003.07.10
Гистограмма


3-31112
SKX
2003-06-16 09:05
2003.07.10
Access сжатие????


3-31090
abc
2003-06-16 12:45
2003.07.10
почему не работает Locate в TADOQuery?? может кто сталкивался?


14-31447
anbezr
2003-06-23 18:43
2003.07.10
Определить, уничтожен ли объект





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