Elin |
Отправлено: 23.06.2003, 12:16 |
|
Не зарегистрирован
|
Не могу понять как добраться к ячейке тоблици из Buildera — ?
В Helpe по Visual Basic есть пример типа :
[COLOR=red]
ActiveDocument.Tables(1).Cell(1, 1).Range.InsertAfter "First write"
[COLOR=blue]
но в Builder 5.0 не работает код типа
WordAplication1->ActiveDocument->Tables(1)->Cell(2,3)->Range->InsertAfter(TVariant("First write"));
так тоже не работает :
WordAplication1->ActiveDocument->Tables[1]->Cell[2,3]->Range->InsertAfter(TVariant("First write"));
и вообще пишет, что у ActiveDocument нет метода Tables (точнее наверное объекта )
аналогично и у Tables нет свойства Cell
И как спрашивается мне добратся до ячеек таблицы ?
|
|
Гость_Evgenyy |
Отправлено: 24.06.2003, 11:53 |
|
Не зарегистрирован
|
Этот кусок кода когдато работал
__fastcall Totchet::Connect(void)
{
if (WordApplication1->Documents->Count == 0)
{
Application->MessageBox("В Word нет открытого документа",
"Команда не выполнена",
MB_OK + MB_ICONEXCLAMATION);
Abort();
}
WordDocument1->ConnectTo(WordApplication1->ActiveDocument);
N3->Enabled = true;
N4->Enabled = true;
N5->Enabled = true;
N9->Enabled = true;
}
//---------------------------------------------------------------------------
//SELECT o.mydate, p.name, pp.name, t.name, t.vesNeTykovan, o.countmoney FROM people p, people pp, oplata o, tovar t WHERE o.id_pokupatel=p.id AND o.id_prodavec=pp.id AND o.id_tovar=t.id AND p.name <> pp.name");
void __fastcall Totchet::N3Click(TObject *Sender)
{
TVariant Direction = wdCollapseEnd; // свернуть выделение "в конец"
// TVariant snew = "\n"; // перевод на новую строку
// TVariant stab = "\t"; // табуляция
Connect();
// изменить шрифт worda-a на 12
WordFont1->ConnectTo(WordApplication1->Selection->Font);
WordFont1->Size = 12;
WordParagraphFormat1->ConnectTo(WordApplication1->Selection->ParagraphFormat);
// Перейти к первой ячейке таблицы word-a, в которую будет вносится информация из программы
for (int j=0; j<7; j++)
WordApplication1->Selection->MoveRight( &TVariant(wdCell) ); // перейти к следующей ячейке таблицы
// ----- start transaktion ---------------------
addSotrudnik->IBTransParus->StartTransaction();
// ----- open dataset --------------------------
// addSotrudnik->parus->DataSets[4]->Open();
IBQueryPeople->Open();
IBQueryPeople->First();
while( !IBQueryPeople->Eof )
{
// WordApplication1->Selection->InsertAfter( snew );
WordApplication1->Selection->Cells->Shading->BackgroundPatternColor = wdColorWhite; //wdColorAutomatic
WordApplication1->Selection->InsertAfter( TVariant(IBQueryPeople->FieldByName("mydate")->AsString ) );
WordApplication1->Selection->MoveRight( &TVariant(wdCell) ); // перейти к следующей ячейке таблицы
WordApplication1->Selection->Cells->Shading->BackgroundPatternColor = wdColorWhite; //wdColorAutomatic
WordApplication1->Selection->InsertAfter( TVariant(IBQueryPeople->FieldByName("name")->AsString ) );
WordApplication1->Selection->MoveRight( &TVariant(wdCell) ); // перейти к следующей ячейке таблицы
WordApplication1->Selection->Cells->Shading->BackgroundPatternColor = wdColorWhite; //wdColorAutomatic
WordApplication1->Selection->InsertAfter( TVariant(IBQueryPeople->FieldByName("name1")->AsString ) );
WordApplication1->Selection->MoveRight( &TVariant(wdCell) ); // перейти к следующей ячейке таблицы
WordApplication1->Selection->Cells->Shading->BackgroundPatternColor = wdColorWhite; //wdColorAutomatic
WordApplication1->Selection->InsertAfter( TVariant(IBQueryPeople->FieldByName("name2")->AsString ) );
WordApplication1->Selection->MoveRight( &TVariant(wdCell) ); // перейти к следующей ячейке таблицы
WordApplication1->Selection->Cells->Shading->BackgroundPatternColor = wdColorWhite; //wdColorAutomatic
WordApplication1->Selection->InsertAfter( TVariant(IBQueryPeople->FieldByName("vesNeTykovan")->AsString ) );
WordApplication1->Selection->MoveRight( &TVariant(wdCell) ); // перейти к следующей ячейке таблицы
WordApplication1->Selection->Cells->Shading->BackgroundPatternColor = wdColorWhite; //wdColorAutomatic
WordApplication1->Selection->InsertAfter( TVariant(IBQueryPeople->FieldByName("countMoney")->AsString ) );
WordApplication1->Selection->MoveRight( &TVariant(wdCell) ); // перейти к следующей ячейке таблицы
// WordApplication1->Selection->MoveRight( &TVariant(wdCell) ); // перейти к следующей ячейке таблицы
// WordApplication1->Selection->InsertAfter( TVariant(IBQueryPeople->FieldByName("prole")->AsString) );
// WordApplication1->Selection->MoveRight( &TVariant(wdCell) ); // перейти к следующей ячейке таблицы
IBQueryPeople->Next();
}
IBQueryPeople->Close();
addSotrudnik->IBTransParus->Commit();
// изменитьцвет фона одной из заключительных ячеек
WordApplication1->Selection->Cells->Shading->BackgroundPatternColor = wdColorGray10;
// Записать сумму денег в таблицу
WordApplication1->Selection->InsertAfter( TVariant( "Общая сумма денег " ) );
for (int i = 0; i < 5; i++) // Перейти к последней ячейке
{
WordApplication1->Selection->MoveRight( &TVariant(wdCell) ); // перейти к следующей ячейке таблицы
WordApplication1->Selection->Cells->Shading->BackgroundPatternColor = wdColorGray10;
}
// Посчитать общую сумму денег за выбранный период времени
addSotrudnik->IBTransParus->StartTransaction();
IBQSumMoney->Open();
IBQSumMoney->First();
WordApplication1->Selection->InsertAfter( TVariant( IBQSumMoney->FieldByName("dengi")->AsString ) );
IBQSumMoney->Close();
addSotrudnik->IBTransParus->Commit();
WordApplication1->Selection->Collapse(&Direction); //снять выделеие текста
}
//---------------------------------------------------------------------------
|
|
Гость_elin |
Отправлено: 26.06.2003, 09:41 |
|
Не зарегистрирован
|
Чето совсем я не воткнул в этот код.
Но врочем я уже разобрался методом "тыка"
Нашел такой вот способ :
TablePtr myt;
CellPtr myc;
ZSWap1->Connect();
ZSWap1->Visible=true;
ZSWap1->ActiveDocument->Tables->Add(ZSWap1->Selection->Range,11,2);
myt=ZSWap1->ActiveDocument->Tables->Item(1) ;
myc=myt->Cell(1,1);
myc->Range->Text=TVariant("Строчка будет записана в таблице");
//---------------------------------------------
Здесь ZSWap1 — имя компонента Builder — а WordApplication
Короче — сам спросил, сам ответил — смешно! |
|
|