Распределенные приложения: контроллеры автоматизации. Часть 2. Фертиков В.В. - 12 стр.

UptoLike

Составители: 

12
Exec(Procedure("ConvertToTable")
<<NamedParm("Separator","\t")
<<NamedParm("AutoFit",true)
<<NamedParm("AutoFitBehavior",1)
<<NamedParm("DefaultTableBehavior",1)
);
Теперь, наконец, мы готовы реализовать рассматриваемый генератор от -
четов на C++Builder. Ниже приводится полный текст обработчика события на-
жатия кнопки для запуска генератора:
void __fastcall TForm1::Button1Click(TObject *Sender)
{ Table1->DatabaseName="DBDEMOS";
Table1->TableName="country.db"; Table1->Open();
Variant W,D,S,PosBeg,PosEnd;
try // если Word запущен - подключиться к нему
{ W = GetActiveOleObject("Word.Application");
}
catch(...) // если нет - запустить
{ W = CreateOleObject("Word.Application");
}
// W.Exec(PropertySet("Visible")<<true);
W.OlePropertySet("Visible",true);
// D=W.Exec(PropertyGet("Documents")).Exec(Function("Add"));
D=W.OlePropertyGet("Documents").OleFunction("Add");
S=W.OlePropertyGet("Selection");
// S.OleProcedure("TypeText",WideString("Hello, World!\n"));
S.Exec(Procedure("TypeText")
<<WideString("Hello, World!\n"));
PosBeg = S.Exec(PropertyGet("Start"));
int i,j=0; WideString ws="";
for(i=0; i<Table1->FieldCount; i++)
ws+="\t"+Table1->Fields->Fields[i]->FieldName;
ws+="\n";
S.OleProcedure("TypeText",ws);
while(!Table1->Eof)
{ ws=IntToStr(++j)+".";
for(i=0; i<Table1->FieldCount; i++)
ws+="\t"+Table1->Fields->Fields[i]->AsString;
ws+="\n";
S.OleProcedure("TypeText",ws);
Table1->Next();
}
PosEnd = S.Exec(PropertyGet("Start"));
Table1->Close();
// D.OleFunction("Range",PosBeg,PosEnd).Exec(
                               12
Exec(Procedure("ConvertToTable")
              <DatabaseName="DBDEMOS";
     Table1->TableName="country.db"; Table1->Open();
     Variant W,D,S,PosBeg,PosEnd;
     try // если Word запущен - подключиться к нему
     {    W = GetActiveOleObject("Word.Application");
     }
     catch(...)     // если нет - запустить
     {    W = CreateOleObject("Word.Application");
     }
//   W.Exec(PropertySet("Visible")<FieldCount; i++)
          ws+="\t"+Table1->Fields->Fields[i]->FieldName;
     ws+="\n";
     S.OleProcedure("TypeText",ws);
     while(!Table1->Eof)
     {    ws=IntToStr(++j)+".";
          for(i=0; iFieldCount; i++)
               ws+="\t"+Table1->Fields->Fields[i]->AsString;
          ws+="\n";
          S.OleProcedure("TypeText",ws);
          Table1->Next();
     }
     PosEnd = S.Exec(PropertyGet("Start"));
     Table1->Close();
//   D.OleFunction("Range",PosBeg,PosEnd).Exec(