📄 pointreport.cpp
字号:
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 + -