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

Вниз

можно иметь два указателя на один Excel, разных типов?   Найти похожие ветки 

 
OW ©   (2011-04-29 12:08) [0]

Половина кода написана в таком стиле:
 ExcelApp, Workbook: Variant;
     ExcelApp := CreateOleObject("Excel.Application");
     Workbook := ExcelApp.WorkBooks.Add;

половина через компоненты
 exapp1: TExcelApplication;  
 IWorkbook: Excel2000.ExcelWorkbook;
    exapp1.Connect;
    exapp1.Workbooks.Add(EmptyParam, 0);
    IWorkbook := exapp1.ActiveWorkbook;

подскажите прием, как бы сделать так, что бы exapp1 и ExcelApp указывали на одно и тоже.

 exapp1.Connect;
 exapp1.Visible[0] := True;
 exapp1.Workbooks.Add(EmptyParam, 0);
 IWorkbook := exapp1.ActiveWorkbook;

 Workbook := Variant(IWorkbook);  // тут можно приравнять книги

 ShowMessage( IntToStr(IWorkbook.Worksheets.Count) ); //спрашиваем кол- во у одного

 WorkBook.WorkSheets[1].delete; // удаляем у другого

 ShowMessage( IntToStr(IWorkbook.Worksheets.Count) ); // переспрашиваем у первого, он понял все. На одну меньше показал.

то же с объектом выше не идет
ExcelApp := Variant(exapp1);
[Error] : Invalid typecast


 
DiamondShark ©   (2011-04-29 12:14) [1]


> ExcelApp := Variant(exapp1);

ExcelApp := exapp1.DefaultInterface;


 
OW ©   (2011-04-29 12:39) [2]

а ларчик прост..
Спасибо!


 
OW ©   (2011-04-29 12:41) [3]

А еще бы наоборот, для полного счастья..


 
OW ©   (2011-04-29 12:42) [4]

или где почитать?


 
OW ©   (2011-04-29 12:42) [5]

или что погуглить?


 
DiamondShark ©   (2011-04-29 13:03) [6]


> OW ©   (29.04.11 12:41) [3]
> А еще бы наоборот, для полного счастья..

Наоборот будет не совсем наоборот.

var
 dispExcel: IExcelApplication; // или какой там тип интерфейса?
...

dispExcel := IDispatch(ExcelApp) as IExcelApplication;

где-то так.

А может быть у обёртки TExcelApplication есть возможность подключиться к существующему экземпляру COM-объекта.
Я наизусть не помню, дельфи нет, и давно это было.

Загляни в исходник TExcelApplication, там всё понятно должно быть, это довольно тупая машинногенерированная обёртка над automation-объектами.

Читать и гуглить можно про COM, Automation. Чтоб далеко не гуглить можно начать с мсдн, делая поправки на дельфи. Исходники обёрток, которые дельфи генерирует для COM-объектов, тоже очень проясняют дело.


 
OW ©   (2011-04-29 13:56) [7]

понял. так и думал.
никогда не копался в сторону интерфейсов.. боюсь я их :)

Спасибо, Дмитрий!


 
OW ©   (2011-04-29 15:44) [8]

еще раз спасибо!
всех получилось скрестить :)


 
Anatoly Podgoretsky ©   (2011-04-29 16:09) [9]

> DiamondShark  (29.04.2011 12:14:01)  [1]

Pointer1: Pointer;
Pointer2: Pointer;

а если нужно три, то

Pointer3: Pointer;


 
ов (дом)   (2011-04-30 10:27) [10]


> Anatoly Podgoretsky ©   (29.04.11 16:09) [9]



> разных типов?


 
Anatoly Podgoretsky ©   (2011-04-30 13:54) [11]

> ов (дом)  (30.04.2011 10:27:10)  [10]

Любых



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

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

Наверх




Память: 0.49 MB
Время: 0.008 c
2-1304098588
SIV5000
2011-04-29 21:36
2011.08.07
TObject + TObjectList + Assigned


15-1303072193
Юрий
2011-04-18 00:29
2011.08.07
С днем рождения ! 18 апреля 2011 понедельник


2-1303971606
Vann
2011-04-28 10:20
2011.08.07
Не изменяется заголовок MDI-child окна


2-1303716955
ANB
2011-04-25 11:35
2011.08.07
IdHTTPServer и HTTPS


15-1302298974
Re
2011-04-09 01:42
2011.08.07
Delphi и Win7