Главная страница
    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.008 c
1-31297
hex_for_delphi
2003-06-26 13:13
2003.07.10
Как работать с большой группой одинаковых компонентов


1-31272
MegaVolt
2003-06-26 12:33
2003.07.10
Как преобразовать строку в PWideString ?


14-31518
TCrash
2003-06-25 14:40
2003.07.10
проблема с кодеками


1-31316
NikB
2003-06-26 01:54
2003.07.10
Помогите пожалуста сделать Print Preview в TChart!


3-31082
Oleg-owl
2003-06-15 03:20
2003.07.10
SQL и вычисляемые поля





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