⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pointreport.cpp

📁 光学仪器的控制系统 用于教学和科研的仪器
💻 CPP
📖 第 1 页 / 共 3 页
字号:
 int x,y, x0, y0, x1, y1;
 AnsiString str;
 TSize sz;
 int iLeft1, iLeft2;

 print=Printer();
 print->BeginDoc();

 PixelsPerInchX=GetDeviceCaps(print->Canvas->Handle,LOGPIXELSX);
 PixelsPerInchY=GetDeviceCaps(print->Canvas->Handle,LOGPIXELSY);
 PixelsPerCmX=PixelsPerInchX/2.54; // 每厘米点数
 PixelsPerCmY=PixelsPerInchY/2.54;

 pw=print->PageWidth;  // 获得打印机的最大打印宽度的点数
 ph=print->PageHeight; // 获得打印机的最大打印高度的点数
 fPageWidth=(float)((float)pw/PixelsPerCmX); // 计算出最大打印宽度的厘米值
 fPageHeight=(float)((float)ph/PixelsPerCmY);

 //print->Canvas->Pen->Width=10;
 print->Canvas->Pen->Width=1;
 //Label1->Caption=print->PageHeight;
 YMax=print->PageHeight-254;

 //Label2->Caption=print->PageWidth;

 XMax=print->PageWidth-206;

 iBlankHeight = 1.0 * PixelsPerCmY;
 iLeft1 = 1.0 * PixelsPerCmX;
 iLeft2 = (fPageWidth / 2.0) * PixelsPerCmX;

 //Label3->Caption=GetDeviceCaps(print->Canvas->Handle,LOGPIXELSX);
 //Label4->Caption=GetDeviceCaps(print->Canvas->Handle,LOGPIXELSY);
 //print->Canvas->Rectangle(15,YMax*1/5,XMax,YMax);
 //Label3->Caption=XMax;
 //Label4->Caption=YMax;
 print->Canvas->Font->Name = "宋体";
 print->Canvas->Font->Charset =  GB2312_CHARSET;
 print->Canvas->Font->Size=-20;

 print->Canvas->Font->Style<<fsBold;
 print->Canvas->Font->Style<<fsUnderline;
 int iFontHeight=-(print->Canvas->Font->Height);

 //Label5->Caption=iFontHeight;
 str = "WFZ-26A紫外分光光度计定点测量";
 sz = print->Canvas->TextExtent(str);
 x = (pw - sz.cx) / 2;
 y = 0.5 * PixelsPerCmY;  //距离顶格0.5 厘米
 print->Canvas->TextOut(x, y, str);

 y = (y + sz.cy) + 2;
 print->Canvas->MoveTo(x, y);
 x = x + sz.cx;
 print->Canvas->LineTo(x, y);
 iCurrentTop = y;

 print->Canvas->Font->Size=-15;
 str = "单    位:  ";
 sz = print->Canvas->TextExtent(str);
 x = iLeft1;
 y = iCurrentTop + 0.5 * PixelsPerCmY ;
 print->Canvas->TextOut(x, y, str);
 iCurrentTop = y;


 x = x + sz.cx;
 print->Canvas->TextOut(x, y,Edit1->Text);

 str = "操 作 者:  ";
 sz = print->Canvas->TextExtent(str);
 x = iLeft2;
 print->Canvas->TextOut(x, y, str);

 x = x + sz.cx;
 print->Canvas->TextOut(x, y,Edit4->Text);

 iCurrentTop=iCurrentTop+iBlankHeight;
 str = "样品名称:  ";
 sz = print->Canvas->TextExtent(str);
 x = iLeft1;
 y = iCurrentTop;
 print->Canvas->TextOut(x, y, str);

 x = x + sz.cx;
 print->Canvas->TextOut(x, y, Edit3->Text);

 str = "批    号:  ";
 sz = print->Canvas->TextExtent(str);
 x = iLeft2;
 print->Canvas->TextOut(x, y, str);

 x = x + sz.cx;
 print->Canvas->TextOut(x, y,Edit2->Text);

 iCurrentTop=iCurrentTop+iBlankHeight;
 str = "测量日期:  ";
 sz = print->Canvas->TextExtent(str);
 x = iLeft1;
 y = iCurrentTop;
 print->Canvas->TextOut(x, y, str);

 x = x + sz.cx;
 print->Canvas->TextOut(x, y,Label6->Caption);

 str = "测量时间:  ";
 sz = print->Canvas->TextExtent(str);
 x = iLeft2;
 print->Canvas->TextOut(x, y, str);

 x = x + sz.cx;
 print->Canvas->TextOut(x, y, Label9->Caption);

 iCurrentTop=iCurrentTop+iBlankHeight;
 str = "编号:  ";
 sz = print->Canvas->TextExtent(str);
 x = iLeft1;
 y = iCurrentTop;
 print->Canvas->TextOut(x, y, str);

 x = x + sz.cx;
 print->Canvas->TextOut(x, y, Edit5->Text);

 str = "文件名:  ";
 sz = print->Canvas->TextExtent(str);
 x = iLeft2;
 print->Canvas->TextOut(x, y, str);

 x = x + sz.cx;
 print->Canvas->TextOut(x, y, Edit6->Text);

 iCurrentTop=iCurrentTop+iBlankHeight;


 sz = print->Canvas->TextExtent("高");
 iFontHeight = sz.cy;

 int iTableHeight;
 iTableHeight = (fPageHeight - 1.0) * PixelsPerCmY - iCurrentTop;
 //int RowCount=(iTableHeight) / (iFontHeight + 0.2 * PixelsPerCmY);
 int RowCount = StringGrid1->RowCount - 1;
 int Rowtable = (iFontHeight + 0.2 * PixelsPerCmY);
 int iSS = 0.2 * PixelsPerCmY;
 //制作表格
 //横线
 int temp;
 x0 = 1.0 * PixelsPerCmX;
 y0 = iCurrentTop;
 //x1 = (fPageWidth - 1.0) * PixelsPerCmX;
 //y1 = iCurrentTop + iTableHeight;
 x1 = (fPageWidth - 1.0) * PixelsPerCmX;
 y1 = iCurrentTop + Rowtable * RowCount;
 int Coltable=(x1 - x0)/4;

 ///print->Canvas->Rectangle(x0, y0, x1, y1);
 
 //表头
 iCurrentTop += iSS;
 str = "序  号" ;
 sz = print->Canvas->TextExtent(str);
 x = x0 + (Coltable - sz.cx) / 2;
 y = iCurrentTop;
 print->Canvas->TextOut(x, y, str);

 str = "波  长(nm)";
 sz = print->Canvas->TextExtent(str);
 x = x0 + 1 * Coltable + (Coltable - sz.cx) / 2;
 print->Canvas->TextOut(x, y, str);

 str = "吸光度(Abs)";
 sz = print->Canvas->TextExtent(str);
 x = x0 + 2 * Coltable + (Coltable - sz.cx) / 2;
 print->Canvas->TextOut(x, y, str);

 str = "透过率(T%)";
 sz = print->Canvas->TextExtent(str);
 x = x0 + 3 * Coltable + (Coltable - sz.cx) / 2;
 print->Canvas->TextOut(x, y, str);

  //打印数据
  char gs[80];

  temp = iCurrentTop;
  for(int i=1;i<StringGrid1->RowCount-1;i++)
    {
      temp=temp+Rowtable;
      str = i;
      sz = print->Canvas->TextExtent(str);
      x = x0 + 0 * Coltable + (Coltable - sz.cx) / 2;
      print->Canvas->TextOut(x, temp, str);

      sprintf(gs, "%1.1f", Dpoint[i].WaveLength);
      str = gs;
      sz = print->Canvas->TextExtent(str);
      x = x0 + 1 * Coltable + (Coltable - sz.cx) / 2;
      print->Canvas->TextOut(x, temp, str);

      sprintf(gs, "%1.3f", Dpoint[i].abs);
      str = gs;
      sz = print->Canvas->TextExtent(str);
      x = x0 + 2 * Coltable + (Coltable - sz.cx) / 2;
      print->Canvas->TextOut(x, temp, gs);

      sprintf(gs, "%1.3f", Dpoint[i].tran);
      str = gs;
      sz = print->Canvas->TextExtent(str);
      x = x0 + 3 * Coltable + (Coltable - sz.cx) / 2;
      print->Canvas->TextOut(x, temp, str);
      //print->Canvas->TextOut(700+Coltable-400,temp,Dpoint[i].WaveLength);
      //print->Canvas->TextOut(700+Coltable*2-400,temp,Dpoint[i].abs);
      //print->Canvas->TextOut(700+Coltable*3-400,temp,Dpoint[i].tran);
     }
 //print->Canvas->Rectangle(5,15,XMax,(YMax)/2+15);
 //print->Canvas->Rectangle(5,15,XMax,(YMax)/4+15);
 //print->Canvas->Rectangle(5,15+YMax/4,XMax,15+YMax/2);
 //print->Canvas->Rectangle(5,15+YMax/2,XMax,15+YMax*3/4);

 //print->Canvas->Rectangle(Edit1->Text.ToInt(),Edit2->Text.ToInt()+2360/2+2360/4,Edit3->Text.ToInt(),Edit2->Text.ToInt()+2360);
 

 //print->Canvas->Rectangle(x0, y0, x1, y1);
 print->Canvas->MoveTo(x0, y0);
 print->Canvas->LineTo(x1, y0);
 print->Canvas->LineTo(x1, y1);
 print->Canvas->LineTo(x0, y1);
 print->Canvas->LineTo(x0, y0);
 
 temp = y0;
 //print->Canvas->Pen->Width=5;
 print->Canvas->Pen->Width=1;
 for(int i = 1; i < RowCount; i++)
   {
      temp=temp+Rowtable;
      print->Canvas->MoveTo(x0, temp);
      print->Canvas->LineTo(x1, temp);
   }

 //竖线
 temp = x0;
 for(int j=0;j<3;j++)
   {
      temp=temp+Coltable;
      print->Canvas->MoveTo(temp, y0);
      print->Canvas->LineTo(temp, y1);
   }
 print->EndDoc();



/*
 int XMax,YMax;
 int iCurrentTop;
 int iBlankHeight;   //行距离
 TPrinter *print;
 print=Printer();
 print->BeginDoc();
 print->Canvas->Pen->Width=10;
 //Label1->Caption=print->PageHeight;
 YMax=print->PageHeight-254;

 //Label2->Caption=print->PageWidth;

 XMax=print->PageWidth-206;

 iBlankHeight=300;
 //Label3->Caption=GetDeviceCaps(print->Canvas->Handle,LOGPIXELSX);
 //Label4->Caption=GetDeviceCaps(print->Canvas->Handle,LOGPIXELSY);
 //print->Canvas->Rectangle(15,YMax*1/5,XMax,YMax);
 //Label3->Caption=XMax;
 //Label4->Caption=YMax;
 print->Canvas->Font->Size=20;

 print->Canvas->Font->Style<<fsBold;
 print->Canvas->Font->Style<<fsUnderline;
 int iFontHeight=-(print->Canvas->Font->Height);

 //Label5->Caption=iFontHeight;
 print->Canvas->TextOut(1000,150,"WFZ-26A紫外分光光度计定点测量");
 print->Canvas->MoveTo(1000,150+iFontHeight+5);
 print->Canvas->LineTo(3425,155+iFontHeight);
 print->Canvas->Font->Size=15;
 iCurrentTop=iBlankHeight+iFontHeight;
 print->Canvas->TextOut(500,iBlankHeight+iFontHeight, "单    位:");
 print->Canvas->TextOut(1100,iBlankHeight+iFontHeight,Edit1->Text);
 print->Canvas->TextOut(2500,iBlankHeight+iFontHeight,"操 作 者:");
 print->Canvas->TextOut(3100,iBlankHeight+iFontHeight,Edit4->Text);
 iCurrentTop=iCurrentTop+iBlankHeight;
 print->Canvas->TextOut(500,iCurrentTop, "样品名称:");
 print->Canvas->TextOut(1100,iCurrentTop,Edit3->Text);
 print->Canvas->TextOut(2500,iCurrentTop,"批    号:");
 print->Canvas->TextOut(3100,iCurrentTop,Edit2->Text);
 iCurrentTop=iCurrentTop+iBlankHeight;
 print->Canvas->TextOut(500,iCurrentTop, "测量日期:");
 print->Canvas->TextOut(1100,iCurrentTop,Label6->Caption);
 print->Canvas->TextOut(2500,iCurrentTop,"测量时间:");
 print->Canvas->TextOut(3100,iCurrentTop,Label9->Caption);
 iCurrentTop=iCurrentTop+iBlankHeight;
 print->Canvas->TextOut(500,iCurrentTop, "编号:");
 print->Canvas->TextOut(1100,iCurrentTop,Edit5->Text);
 print->Canvas->TextOut(2500,iCurrentTop,"文件名:");
 print->Canvas->TextOut(3100,iCurrentTop,Edit6->Text);
 iCurrentTop=iCurrentTop+iBlankHeight;
 int iTableHeight;
 iTableHeight=YMax-iCurrentTop;
 //iTableHeight=iTableHeight;
 int Rowtable=(iTableHeight-1000)/20;

 //制作表格
 //横线
 int temp;
 print->Canvas->Rectangle(245,iCurrentTop,XMax,YMax);
 temp=iCurrentTop;
 print->Canvas->Pen->Width=5;
 for(int i=0;i<20;i++)
   {
      temp=temp+Rowtable;
      print->Canvas->MoveTo(245,temp);
      print->Canvas->LineTo(XMax,temp);
   }

 //竖线
 int Coltable=(XMax-245)/4;
 temp=245;
 for(int j=0;j<3;j++)
   {
      temp=temp+Coltable;
      print->Canvas->MoveTo(temp,iCurrentTop);
      print->Canvas->LineTo(temp,iCurrentTop+Rowtable*20);
   }
 //表头
  print->Canvas->TextOut(500,iCurrentTop+50,"序  号");
  print->Canvas->TextOut(500+Coltable,iCurrentTop+50,"波  长(nm)");
  print->Canvas->TextOut(500+Coltable*2,iCurrentTop+50,"吸光度(Abs)");
  print->Canvas->TextOut(500+Coltable*3,iCurrentTop+50,"透过率(T%)");

  //打印数据
  char gs[80];

  temp=iCurrentTop+50;
  for(int i=1;i<StringGrid1->RowCount-1;i++)
    {
      temp=temp+Rowtable;
      print->Canvas->TextOut(700,temp,i);
      sprintf(gs, "%1.1f", Dpoint[i].WaveLength);
      print->Canvas->TextOut(700+Coltable,temp,gs);
      sprintf(gs, "%1.3f", Dpoint[i].abs);
      print->Canvas->TextOut(700+Coltable*2,temp,gs);
      sprintf(gs, "%1.3f", Dpoint[i].tran);
      print->Canvas->TextOut(700+Coltable*3,temp,gs);
      //print->Canvas->TextOut(700+Coltable-400,temp,Dpoint[i].WaveLength);
      //print->Canvas->TextOut(700+Coltable*2-400,temp,Dpoint[i].abs);
      //print->Canvas->TextOut(700+Coltable*3-400,temp,Dpoint[i].tran);
     }
 //print->Canvas->Rectangle(5,15,XMax,(YMax)/2+15);
 //print->Canvas->Rectangle(5,15,XMax,(YMax)/4+15);
 //print->Canvas->Rectangle(5,15+YMax/4,XMax,15+YMax/2);
 //print->Canvas->Rectangle(5,15+YMax/2,XMax,15+YMax*3/4);

 //print->Canvas->Rectangle(Edit1->Text.ToInt(),Edit2->Text.ToInt()+2360/2+2360/4,Edit3->Text.ToInt(),Edit2->Text.ToInt()+2360);
 print->EndDoc();
*/
}
//---------------------------------------------------------------------------

void __fastcall TfmDpoint::N1Click(TObject *Sender)
{
  char temp[10];

  Row=StringGrid1->Row;

  if((Row!=0)&&(Row!=StringGrid1->RowCount-1))
  {
    for(int i=Row;i<StringGrid1->RowCount-1;i++)
    {
      Dpoint[i].WaveLength=Dpoint[i+1].WaveLength;
      Dpoint[i].abs=Dpoint[i+1].abs;
      Dpoint[i].tran=Dpoint[i+1].tran;
    }

    StringGrid1->RowCount--;
    Dpoint[StringGrid1->RowCount].WaveLength=0;
    Dpoint[StringGrid1->RowCount].abs=0;
    Dpoint[StringGrid1->RowCount].tran=0;

    for(int i=1;i<StringGrid1->RowCount;i++)
    {
      if(Dpoint[i].WaveLength==0)
      {
        StringGrid1->Cells[1][i]="";
        StringGrid1->Cells[2][i]="";
        StringGrid1->Cells[3][i]="";
      }
      else
      {
        StringGrid1->Cells[1][i]=Dpoint[i].WaveLength;
        sprintf(temp,"%1.4f",Dpoint[i].abs);
        StringGrid1->Cells[2][i]=temp;
        sprintf(temp,"%3.2f",Dpoint[i].tran);
        StringGrid1->Cells[3][i]=temp;
      }
    }
  }
}
//---------------------------------------------------------------------------
void TfmDpoint::DelData(int t)
{
  if(t==0)
  return;
  for(int i=t;i<StringGrid1->RowCount;i++)
   {
   Dpoint[i].WaveLength=Dpoint[i+1].WaveLength;
   Dpoint[i].abs=Dpoint[i+1].abs;
   Dpoint[i].tran=Dpoint[i+1].tran;
   char temp[10];
   StringGrid1->Cells[1][i]=Dpoint[i].WaveLength;
   sprintf(temp,"%1.4f",Dpoint[i].abs);
   StringGrid1->Cells[2][i]=temp;
   sprintf(temp,"%3.2f",Dpoint[i].tran);
   StringGrid1->Cells[3][i]=temp;
   //StringGrid1->Cells[2][i]=Dpoint[i].abs;
   //StringGrid1->Cells[3][i]=Dpoint[i].tran;
   }


  StringGrid1->RowCount--;

  
  StringGrid1->RowCount--;
  Dpoint[StringGrid1->RowCount].WaveLength=0;
  Dpoint[StringGrid1->RowCount].abs=0;
  Dpoint[StringGrid1->RowCount].tran=0;
  //StringGrid1->Refresh();
  //StringGrid1->Repaint();
  if(StringGrid1->Cells[3][StringGrid1->RowCount-1]!="")
              {
                StringGrid1->RowCount++;
                StringGrid1->Cells[0][StringGrid1->RowCount-1]=StringGrid1->RowCount-1;
                StringGrid1->Cells[1][StringGrid1->RowCount-1]="";
                StringGrid1->Cells[2][StringGrid1->RowCount-1]="";
                StringGrid1->Cells[3][StringGrid1->RowCount-1]="";
              //StringGrid1->Cells[4][StringGrid1->RowCount-1]=StringGrid1->RowCount+1;
              }
  StringGrid1->FixedRows=1;
}
void __fastcall TfmDpoint::StringGrid1Click(TObject *Sender)
{
  bModify=true;      
}
//---------------------------------------------------------------------------
void TfmDpoint::ReFreshWn()
{
     char gs[80];

     sprintf(gs, "%1.2f nm", (float)wn/(float)Form1->wnd0);
     Form1->StatusBar1->Panels->Items[1]->Text = Form1->sCurBC + gs;
     Form1->StatusBar1->Repaint();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -