Главная страница
    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
14-31429
Andrey
2003-06-18 16:31
2003.07.10
Стандартный способ передачи параметров в Dll


1-31330
VISA
2003-06-27 10:53
2003.07.10
TImageList


14-31517
VolanD
2003-06-25 15:05
2003.07.10
Epox 8KTA3L+ and GForce4 MX440 TV-out


1-31325
hex_for_delphi
2003-06-26 17:20
2003.07.10
как сделать цикл шагами


3-31159
xxxCrazyManxxx
2003-06-16 09:52
2003.07.10
Подскажите как в проге на делфи проверить конект с MSSQL7





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