ВУЗ:
Составители:
16
try // если Excel запущен - подключиться к нему
{ Exl = GetActiveOleObject("Excel.Application");
}
catch(...) // Excel не запущен - запустить его
{ Exl = CreateOleObject("Excel.Application");
}
Exl.OlePropertySet("Visible", true);
Book=Exl.OlePropertyGet("WorkBooks").OleFunction("Add");
Sheet = Book.OlePropertyGet("ActiveSheet");
Sheet.OlePropertyGet("Range","A1").
OlePropertySet("Value","Hello, World!");
Sheet.OlePropertyGet("Range","A2").
OlePropertySet("Value","№");
int i,j=0;
for(i=0; i<Table1->FieldCount; i++)
Sheet.OlePropertyGet("Cells",2,i+2).
OlePropertySet("Value",
Table1->Fields->Fields[i]->FieldName);
int Bounds[]={0,Table1->FieldCount};
Arr = VarArrayCreate(Bounds,1,varVariant);
while(!Table1->Eof)
{ Arr.PutElement(IntToStr(++j),0);
for(i=0; i<Table1->FieldCount; i++)
Arr.PutElement(
Table1->Fields->Fields[i]->AsString,i+1);
Sheet.OlePropertyGet("Range",
Sheet.OlePropertyGet("Cells",j+2,1),
Sheet.OlePropertyGet("Cells",j+2,
Table1->FieldCount+1)).
OlePropertySet("Value", Arr);
Table1->Next();
}
Table1->Close();
}
Программа использует описанные в предыдущем разделе механизмы
управления диспинтерфейсом. Новым здесь является лишь использование ва-
риантного массива, для создания которого функцией VarArryCreate потребо -
вался вспомогательный массив Bounds, описывающий его размерности.
Использование библиотеки типов для раннего связывания
В предыдущих разделах достаточно подробно рассмотрен способ созда-
ния клиентов с использованием типа Variant, основанного на механизме ди -
намического (позднего) связывания. При таком способе клиент (контроллер ав -
томатизации) явно или неявно использует метод
IDispatch::GetIDsOfNames, а возможно, также другие методы IDispatch,
для генерирования динамического запроса к объекту во время выполнения.
Данный способ наиболее прост в использовании изнутри Delphi (как и
16 try // если Excel запущен - подключиться к нему { Exl = GetActiveOleObject("Excel.Application"); } catch(...) // Excel не запущен - запустить его { Exl = CreateOleObject("Excel.Application"); } Exl.OlePropertySet("Visible", true); Book=Exl.OlePropertyGet("WorkBooks").OleFunction("Add"); Sheet = Book.OlePropertyGet("ActiveSheet"); Sheet.OlePropertyGet("Range","A1"). OlePropertySet("Value","Hello, World!"); Sheet.OlePropertyGet("Range","A2"). OlePropertySet("Value"," №"); int i,j=0; for(i=0; iFieldCount; i++) Sheet.OlePropertyGet("Cells",2,i+2). OlePropertySet("Value", Table1->Fields->Fields[i]->FieldName); int Bounds[]={0,Table1->FieldCount}; Arr = VarArrayCreate(Bounds,1,varVariant); while(!Table1->Eof) { Arr.PutElement(IntToStr(++j),0); for(i=0; i FieldCount; i++) Arr.PutElement( Table1->Fields->Fields[i]->AsString,i+1); Sheet.OlePropertyGet("Range", Sheet.OlePropertyGet("Cells",j+2,1), Sheet.OlePropertyGet("Cells",j+2, Table1->FieldCount+1)). OlePropertySet("Value", Arr); Table1->Next(); } Table1->Close(); } Программа использует описанные в предыдущем разделе механизмы управления диспинтерфейсом. Новым здесь является лишь использование ва- риантного массива, для создания которого функцией VarArryCreate потребо- вался вспомогательный массив Bounds, описывающий его размерности. Использование библиотеки типов для раннего связывания В предыдущих разделах достаточно подробно рассмотрен способ созда- ния клиентов с использованием типа Variant , основанного на механизме ди- намического (позднего) связывания. При таком способе клиент (контроллер ав- томатизации) явно или неявно использует метод IDispatch::GetIDsOfNames , а возможно, также другие методы IDispatch , для генерирования динамического запроса к объекту во время выполнения. Данный способ наиболее прост в использовании изнутри Delphi (как и
Страницы
- « первая
- ‹ предыдущая
- …
- 14
- 15
- 16
- 17
- 18
- …
- следующая ›
- последняя »