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

📄 pointreport.cpp

📁 光学仪器的控制系统 用于教学和科研的仪器
💻 CPP
📖 第 1 页 / 共 3 页
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "pointreport.h"
#include "Unit1.h"
#include "dir.h"
#include "stdio.h"
#include "ThreadE.h"
//#include "IO.h"
#include "printers.hpp"
typedef void (*ExecFun)(void);
void waverevise(void);
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfmDpoint *fmDpoint;
//---------------------------------------------------------------------------
__fastcall TfmDpoint::TfmDpoint(TComponent* Owner)
        : TForm(Owner)
{
    bRun = false;
}
//---------------------------------------------------------------------------

void __fastcall TfmDpoint::FormShow(TObject *Sender)
{
//时间读取
  SYSTEMTIME time;
  GetLocalTime(&time);
  Str="";
  Str=IntToStr(time.wYear); Str+="-";
  Str+=IntToStr(time.wMonth); Str+="-";
  Str+=IntToStr(time.wDay); Str+=" ";
  Label6->Caption=Str;
  Str="";
  Str+=IntToStr(time.wHour); Str+=":";
  Str+=IntToStr(time.wMinute);// Str+=":";
  //Str+=IntToStr(Form1->ptc.dattim[6]);
  Label9->Caption=Str;
  mcs=Form1->mcs;
  wn=Form1->wn;
  if(Form1->bSaveFile)
  Edit6->Text=Form1->filename;
  else
  Edit6->Text="未命名";
  Str="";

  Button4->Enabled = false;

  StringGrid1->Cells[2][1]=0;
  StringGrid1->Cells[3][1]=0;

  bModify=false;

//---------------------------------------------------------------------
//表格填写
  StringGrid1->Font->Charset=GB2312_CHARSET;

  for(int i=1;i<=20;i=i+2)
  {
    StringGrid1->Cells[0][i]=i;
   //  StringGrid1->Cells[4][i]=i+1;
  }

  StringGrid1->Cells[0][0]="序号";
  StringGrid1->Cells[1][0]="波长(nm)";
  StringGrid1->Cells[2][0]="吸光度(Abs)";
  StringGrid1->Cells[3][0]="透过率(T)";
  StringGrid1->Font->Color=clBlue;

  /*
  StringGrid1->Cells[4][0]="序号";
  StringGrid1->Cells[5][0]="波长(nm)";
  StringGrid1->Cells[6][0]="吸光度(Abs)";
  StringGrid1->Cells[7][0]="透过率(T)";
  //StringGrid1->Font->Color=clBlack;
  */

  //StringGrid1->DefaultColWidth=(StringGrid1->Width-4)/4;

  //数据读取

}
//---------------------------------------------------------------------------

void __fastcall TfmDpoint::FormClose(TObject *Sender, TCloseAction &Action)
{
Form1->EnableMenuItems();
//Form1->Close();
}
//---------------------------------------------------------------------------


void __fastcall TfmDpoint::StringGrid1SelectCell(TObject *Sender, int ACol,
      int ARow, bool &CanSelect)
{

if(ACol==1&&ARow==StringGrid1->RowCount-1&&(StringGrid1->Cells[3][StringGrid1->RowCount-1]=="0"||StringGrid1->Cells[3][StringGrid1->RowCount-1]=="")
   &&  Button4->Enabled == false)
  {
    StringGrid1->Options<<goEditing;
    bModify=true;
  }  ////////////////////
else
    StringGrid1->Options>>goEditing;
if(ACol==0)
   StringGrid1->Options<<goRowSelect;
else
   StringGrid1->Options>>goRowSelect;

CanSelect = true;

if(CanSelect == false)
{
    CanSelect = false;
}

//Label1->Caption=ACol;
//Label2->Caption=ARow;


Col=ACol;
Row=ARow;


/*if(ACol==5&&ARow==StringGrid1->RowCount-1&&StringGrid1->Cells[2][StringGrid1->RowCount-1]!="")
  {
    StringGrid1->Options<<goEditing;
    bModify=true;
  }
else
    StringGrid1->Options>>goEditing;
//if(ARow>1)  */
}
//---------------------------------------------------------------------------

void __fastcall TfmDpoint::Button1Click(TObject *Sender)
{
if(bModify)
switch(Application->MessageBox("当前报告未保存,是否保存?","提示",MB_YESNOCANCEL))
 {
   case 6:{Button2Click(Sender); init(); break;}
   case 7:{init();break;}
 }
else
 init();
Button4->Enabled=false;


}
//---------------------------------------------------------------------------

void __fastcall TfmDpoint::Edit1Change(TObject *Sender)
{
bModify=true;
}
//---------------------------------------------------------------------------

void __fastcall TfmDpoint::Edit2Change(TObject *Sender)
{
bModify=true;
}
//---------------------------------------------------------------------------

void __fastcall TfmDpoint::Edit4Change(TObject *Sender)
{
 bModify=true;
}
//---------------------------------------------------------------------------

void __fastcall TfmDpoint::Button2Click(TObject *Sender)
{
  int iFileHandle;

  char filehead[10];
  strcpy(filehead,"wfz26-uvr");
  char szFileName[MAXFILE+4];

  char apart[50];
  strcpy(apart,Edit1->Text.c_str());
  char pihao[50];
  strcpy(pihao,Edit2->Text.c_str());
  char samplename[50];
  strcpy(samplename,Edit3->Text.c_str());
  char operater[10];
  strcpy(operater,Edit4->Text.c_str());
  char date[16];
  strcpy(date,Label6->Caption.c_str());
  char time[10];
  strcpy(time,Label9->Caption.c_str());
  char bianhao[20];
  strcpy(bianhao,Edit5->Text.c_str());
  char filename[20];
  strcpy(filename,Edit6->Text.c_str());
  int rowcount;
  rowcount=StringGrid1->RowCount;

  if(SaveDialog1->Execute())
  {
    if(FileExists(SaveDialog1->FileName))
    {
      fnsplit(SaveDialog1->FileName.c_str(),0,0,szFileName,0);
      strcat(szFileName,"r.BAK");
      RenameFile(SaveDialog1->FileName,szFileName);
    }

    iFileHandle=FileCreate(SaveDialog1->FileName);

    FileWrite(iFileHandle,filehead,10);
    FileWrite(iFileHandle,apart,50);
    FileWrite(iFileHandle,operater,10);
    FileWrite(iFileHandle,pihao,50);
    FileWrite(iFileHandle,samplename,50);
    FileWrite(iFileHandle,date,16);
    FileWrite(iFileHandle,time,10);
    FileWrite(iFileHandle,bianhao,20);
    FileWrite(iFileHandle,filename,20);
    FileWrite(iFileHandle,&rowcount,4);

   //先保存数据
    for(int i=0;i<rowcount-2;i++)
    {
      Dpoint[i].WaveLength= StrToFloat(StringGrid1->Cells[1][i+1]);
      Dpoint[i].abs= StrToFloat(StringGrid1->Cells[2][i+1]);
      Dpoint[i].tran= StrToFloat(StringGrid1->Cells[3][i+1]);
    }

    for(int i=0;i<rowcount-2;i++)  //按数组顺序写入
    {
      FileWrite(iFileHandle,&Dpoint[i].WaveLength,4);
      FileWrite(iFileHandle,&Dpoint[i].abs,4);
      FileWrite(iFileHandle,&Dpoint[i].tran,4);
    }

    FileClose(iFileHandle);
    bModify=false;
  }
}
//---------------------------------------------------------------------------



void __fastcall TfmDpoint::Button6Click(TObject *Sender)
{
bstop=true;
if(Button7->Caption=="检索中")
{
  while(bRun)
  {
        bstop=true;
        Application->ProcessMessages();
  }
  Button7->Caption="定点检索";
  MenuEnable();
  Button4->Enabled = false;
  return;
}
MenuEnable();
if(bModify)
  {
    switch(Application->MessageBox("报告已经修改,还未保存,是否保存?","提示",MB_YESNOCANCEL))
     {
       case 6:{
               Button2Click(Sender);
               break;
              }
       case 7:{
               fmDpoint->Close();
              }
     }
   // case 2:break;


  }
else
  fmDpoint->Close();

}
//---------------------------------------------------------------------------

void __fastcall TfmDpoint::FormCreate(TObject *Sender)
{
  for(int i=0;i<100;i++)
  {
    Dpoint[i].WaveLength=0;
    Dpoint[i].abs=0;
    Dpoint[i].tran=0;
  }

  Thread1=NULL;
  bstop=false;
  bWaveRight=false;
  bKey=false;

  StringGrid1->DefaultColWidth=(fmDpoint->Width-15)/4;
//StringGrid1->Cells[1][StringGrid1->RowCount-1]="200";
}
//---------------------------------------------------------------------------

void __fastcall TfmDpoint::Button3Click(TObject *Sender)
{
  int iFileHandle;
  int rowcount;

  char sfilehead[10];
  strcpy(sfilehead,"wfz26-uvr");

  char dfilehead[10];
  char szFileName[MAXFILE+4];

  char apart[50];
  char pihao[50];
  char samplename[50];
  char date[16];
  char operater[10];
  char time[10];
  char bianhao[20];
  char filename[20];

  char temp[10];

  if(OpenDialog1->Execute())
  {
    for(int i=0;i<100;i++)             //首先删除表格内所有数据
    {
      Dpoint[i].WaveLength=0;
      Dpoint[i].abs=0;
      Dpoint[i].tran=0;
    }

    for(int i=1;i<StringGrid1->RowCount;i++)
      for(int j=0;j<4;j++)
        StringGrid1->Cells[j][i]="";
//StringGrid1->RowCount=2;
//    StringGrid1->Cells[0][1]=1;              //首先删除表格内所有数据

    iFileHandle=FileOpen(OpenDialog1->FileName,fmOpenRead);
    FileRead(iFileHandle,dfilehead,10);

    if(strcmp(dfilehead,sfilehead)==0)
    {
      FileRead(iFileHandle,apart,50);
      FileRead(iFileHandle,operater,10);
      FileRead(iFileHandle,pihao,50);
      FileRead(iFileHandle,samplename,50);
      FileRead(iFileHandle,date,16);
      FileRead(iFileHandle,time,10);
      FileRead(iFileHandle,bianhao,20);
      FileRead(iFileHandle,filename,20);
      FileRead(iFileHandle,&rowcount,4);

      for(int i=0;i<rowcount-2;i++)
      {
        FileRead(iFileHandle,&Dpoint[i].WaveLength,4);
        FileRead(iFileHandle,&Dpoint[i].abs,4);
        FileRead(iFileHandle,&Dpoint[i].tran,4);
      }

      FileClose(iFileHandle);

        //strcpy(Edit1->Text.c_str(),apart);
      Edit1->Text=apart;
      Edit2->Text=pihao;
      Edit4->Text=operater;
      Edit3->Text=samplename;
      Label6->Caption=date;
      Label9->Caption=time;
      Edit5->Text=bianhao;
      Edit6->Text=filename;

      StringGrid1->RowCount=rowcount;

      for(int i=1;i<rowcount-1;i++)
      {
        StringGrid1->Cells[0][i]=i;

        StringGrid1->Cells[1][i]=Dpoint[i-1].WaveLength;

        sprintf(temp,"%1.4f",Dpoint[i-1].abs);
        StringGrid1->Cells[2][i]=temp;

        sprintf(temp,"%3.2f",Dpoint[i-1].tran);
        StringGrid1->Cells[3][i]=temp;
      }
//      StringGrid1->Cells[0][StringGrid1->RowCount-1]=StringGrid1->RowCount-1;
        //ShowMessage("就是他");
      bModify=false;
    }
  }
  else
  {
    ShowMessage("不是定点报告");
  }
}
//---------------------------------------------------------------------------
void TfmDpoint::init()
{
  Edit1->Clear();
  Edit2->Clear();
  Edit4->Clear();


  SYSTEMTIME time;
  GetLocalTime(&time);

  Str=IntToStr(time.wYear); Str+="-";
  Str+=IntToStr(time.wMonth); Str+="-";
  Str+=IntToStr(time.wDay); Str+=" ";
  Label6->Caption=Str;
  Str="";
  Str+=IntToStr(time.wHour); Str+=":";
  Str+=IntToStr(time.wMinute);// Str+=":";
  //Str+=IntToStr(Form1->ptc.dattim[6]);
  Label9->Caption=Str;
  Str="";

  bModify=false;
  //Label4->Caption=sizeof(Str);
  
  for(int i=0;i<100;i++)
   {
       Dpoint[i].WaveLength=0;
       Dpoint[i].abs=0;
       Dpoint[i].tran=0;
   }

  for(int i=1;i<StringGrid1->RowCount;i++)
      for(int j=0;j<4;j++)
           StringGrid1->Cells[j][i]="";
  StringGrid1->RowCount=2;
  StringGrid1->Cells[0][1]=1;
 /* for(int i=0;i<100;i++)
    {
     Dpoint[i].WaveLength=NULL;
     Dpoint[i].abs=NULL;
     Dpoint[i].tran=NULL;
    }
  StringGrid1->RowCount=2;
  for(int i=1;i<StringGrid1->RowCount;i++)
    for(int j=1;j<5;j++)
      StringGrid1->Cells[j][i]="";    */
}
//---------------------------------------------------------------------------

void __fastcall TfmDpoint::Button4Click(TObject *Sender)
{
if(StringGrid1->Cells[1][StringGrid1->RowCount-1]!="")
    if(wn!=StrToInt(StringGrid1->Cells[1][StringGrid1->RowCount-1])*Form1->wnd0)
      {
        bWaveRight=false;
        Button7Click(Sender);
        bWaveRight=true;
        if(bWaveRight)
          {
           if(StringGrid1->Cells[1][StringGrid1->RowCount-1]!="")
           {
           char temp[10];
           float tempdata;
           tempdata=Form1->pp2*Form1->tas(2)*Form1->tbb();

⌨️ 快捷键说明

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