F1book

来源:互联网 发布:百傲瑞达软件下载 编辑:程序博客网 时间:2024/05/22 10:46

to xxxyyyuuu(xy(不懂)): 我使用的是C++ Builder 中本身带着的F1Book,C++ Builder版本号为 5.0 (build 12.34), 点击F1book的帮助显示的是 Formula One 3.0 (除此之外我不知怎样还能看其版本号)
下面我贴上我程序的源码,麻烦你测试一下,若没问题,估计可能是版本问题,那样能否告诉我何处获得高版本的Formula One

程序的目的是将通用的DBGrid中的内容显示到F1Book,这样便于数据的导出。输入数据(除非是批量输入)我还是使用DBGrid,但DBGrid不能很容易地实现块复制、打印、导出等功能。

首先创建一Form, 上面拖上 Database1 Query1 DataSource1 DBGrid 三个控件,随便连接上一数据库,我使用的是SQL server,显示成功后,再在画面上放上F1Book1,再加上一个按钮,点击按钮后相应的代码如下:(功能是DBGrid中的内容再显示到F1Book1,代码的书写具有通用性)

     AnsiString tmpfd,tmpname;
     int i,j,totalnum,totalcol,kk;

     totalnum=DBGrid1->DataSource->DataSet->RecordCount;   // 记录总数

     kk=0;
     for(i=0;i<DBGrid1->Columns->Count;i++)
     {
         if(DBGrid1->Columns->Items[i]->Visible)
            kk=kk+1;
     }
     totalcol=kk;   // 表格的列数
     if(totalnum>16384)
     {
        Application->MessageBox("结果集太大,不能超过16384行!","提示",48);
     }
     if(totalnum==0)
     {
        F1Book1->MaxCol=1;
        F1Book1->MaxRow=1;
        return;
     }
     if(totalcol>0)    F1Book1->MaxCol=totalcol;
     if(totalnum>0)    F1Book1->MaxRow=totalnum;

     F1Book1->ClearRange(1,1,F1Book1->MaxRow,F1Book1->MaxCol,1);

     for(i=1;i<=totalcol;i++)
     {
        F1Book1->ColText[i]=Char(i+64);
     }

// 输出标题 
     kk=0;
     for(i=0;i<DBGrid1->Columns->Count;i++)
     {
         if(DBGrid1->Columns->Items[i]->Visible)
         {
            kk=kk+1;
            TColumn *Column=DBGrid1->Columns->Items[i];
            TColumnTitle *ColumnTitle =Column->Title;
            AnsiString tmpname=ColumnTitle->Caption;
            F1Book1->ColText[kk]=tmpname;
         }
     }


// 以下输出内容
     TDataSet *theDS = DBGrid1->DataSource->DataSet;
     theDS->DisableControls();
     theDS->First();
     for (j=0;j<totalnum;j++)
     {
       kk=0;
       for(i=0;i<DBGrid1->Columns->Count;i++)
       {
         if(DBGrid1->Columns->Items[i]->Visible)
         {
           kk=kk+1;
           tmpfd=DBGrid1->Columns->Items[i]->FieldName;
           if(theDS->FieldByName(tmpfd)->DataType==ftInteger)
             F1Book1->TextRC[j+1][kk]=IntToStr(theDS->FieldByName(tmpfd)->AsInteger);
           else
             F1Book1->TextRC[j+1][kk]=theDS->FieldByName(tmpfd)->AsString;
         }
       }
       theDS->Next();
     }
     theDS->EnableControls();
     theDS->First();

//设置效果
   Screen->Cursor=crDefault;
   F1Book1->ColHidden[1]=false;
   F1Book1->RowHidden[1]=false;
   F1Book1->SetFont('宋体',9,false,false,false,false,RGB(0,0,0),false,false);
   F1Book1->SetColWidthAuto(1,1,F1Book1->MaxRow,F1Book1->MaxCol,true);
   //最大宽度不超过6000
   for(i=0;i<F1Book1->MaxCol;i++) //file://将字段名写到工作薄的第一行
   {
        if(F1Book1->ColWidth[i+1]>6000||F1Book1->ColWidth[i+1]<0)
        F1Book1->ColWidth[i+1]=6000;
   }
   F1Book1->HdrHeight=400;
   F1Book1->SetRowHeight(1,F1Book1->MaxRow,300,true);

 

按此代码,带有勾运行正常,去掉后就会报错。显示内容为 Project Project1 raised exception class EOleSysError with message '未知界面'. Peocess stop. Use step or run to continue

原创粉丝点击