ВУЗ:
Составители:
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; iFieldCount; 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
- …
- следующая ›
- последняя »
