?? unit1.~cpp
字號:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
#include "Unit4.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "SUIForm"
#pragma link "SUIMainMenu"
#pragma link "SUIStatusBar"
#pragma link "SUIToolBar"
#pragma link "SUIImagePanel"
#pragma link "SUIImagePanel"
#pragma link "SUIComboBox"
#pragma link "SUIColorBox"
#pragma resource "*.dfm"
TForm1 *Form1;
bool Editable=false;//是否開始編輯,false是不測量,true是測量
bool Saveable=false;//是否有修改,false是沒有,true是有過修改
bool Dataable=false;//是否顯示波形參數,false是不顯示,true是顯示
bool Pointable=false;//是否進行點編輯,false是進行
bool Coordinate=false;//是否顯示
bool MultiImage=false;
bool MeasureKind=false;//測量的方式,false是手動,true是自動
bool CrossCursor=false;
bool NewDataType=false;//是否是新的文件類型,
bool OpenFiled=false;//是否已經打開了文件
bool LineColorful=true;//是否彩色顯示疊加波形
int HEIGHT,WIDTH; //整個窗口的大小
int Standandx,Standandy; //標準的圖像的比例尺
int StandXoff,StandYoff;//標準圖像的偏移
//int ForStand=1;//只有第一次才記錄為標準
int Measure=0; //測量的不同項目
String DataFileName=NULL;
int aheadx=0;
int aheady=0;
int yrp,xtop,ytop,xbottom,ybottom;//取得圖像的最低最高點
int imageclick=2;//在局部修改時,記錄當前是第幾次點
int ximagefirst,yimagefirst,ximagelast,yimagelast,imagedelta;
TColor CurColor=clBlack;//默認的當前顏色是黑色
//在局部修改時,記錄第一次和第二次的點
FILE *pf=NULL;
//---------------------------------------------------------------------------
/****************************************************************************
Initialize the system
****************************************************************************/
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
//Form1->destr
Form1->suiImagePanel1->DoubleBuffered=true;
Form1->ShowHint=true;
TForm4 *Form4 = new TForm4(this);
Form4->ShowHint=true;
MyPath=GetCurrentDir();
Form1->ToolButton3->Enabled=false;
Form1->ToolButton4->Enabled=false;
Form1->ToolButton6->Enabled=false;
Form1->ToolButton7->Enabled=false;
Form1->ToolButton9->Enabled=false;
Form1->ToolButton10->Enabled=false;
Form1->ToolButton12->Enabled=false;
Form1->ToolButton13->Enabled=false;
Form1->ToolButton15->Enabled=false;
Form1->ToolButton16->Enabled=false;
//文件下
Form1->S1->Enabled=false;
Form1->I1->Enabled=false;
Form1->N3->Enabled=false;
Form1->N28->Enabled=false;
Form1->N13->Enabled=false;
//編輯下
Form1->N7->Enabled=false;
Form1->N8->Enabled=false;
Form1->N26->Enabled=false;
Form1->N9->Enabled=false;
Form1->N10->Enabled=false;
Form1->N31->Enabled=false;
Form1->N32->Enabled=false;
//測量下
Form1->N17->Enabled=false;
Form1->N19->Enabled=false;
Form1->N22->Enabled=false;
Form1->N24->Enabled=false;
Form1->N27->Enabled=false;
Form1->N20->Enabled=false;
Form1->APD201->Enabled=false;
Form1->APD501->Enabled=false;
Form1->APD1->Enabled=false;
//幫助下
Form1->N15->Enabled=false;
Form1->N30->Enabled=false;
//Form1->N20->Enabled=false;
//Form1->APD201->Enabled=false;
//Form1->APD501->Enabled=false;
//Form1->APD1->Enabled=false;
HEIGHT=this->Height;
WIDTH=this->Width;
//Form1->Image1->Picture = NULL;
Form1->suiStatusBar1->Panels->Items[0]->Text="請打開文件";
}
//---------------------------------------------------------------------------
/****************************************************************************
Exchange Edit model
****************************************************************************/
void __fastcall TForm1::ToolButton4Click(TObject *Sender)
{
if(Editable==false)
{
if(Application->MessageBox("開始編輯", "Message", MB_YESNO)==IDYES)
{
Editable=true;
Saveable=true;
imageclick=2;
Measure=0;
Form1->N19->Enabled=false;
Form1->N20->Enabled=false;
Form1->APD201->Enabled=false;
Form1->APD501->Enabled=false;
Form1->APD1->Enabled=false;
Form1->ToolButton6->Enabled=false;
Form1->ToolButton7->Enabled=false;
Form1->ToolButton9->Enabled=false;
Form1->ToolButton10->Enabled=false;
Form1->ToolButton12->Enabled=false;
Form1->ToolButton13->Enabled=false;
Form1->ToolButton15->Enabled=false;
Form1->ToolButton16->Enabled=false;
Form1->suiStatusBar1->Panels->Items[0]->Text="編輯狀態_局部編輯 請確定起始點";
}
}
else
{
if(Application->MessageBox("停止編輯", "Message", MB_YESNO)==IDYES)
{
Editable=false;
imageclick=2;
Form1->ToolButton6->Enabled=true;
Form1->ToolButton7->Enabled=true;
Form1->ToolButton9->Enabled=true;
Form1->ToolButton10->Enabled=true;
Form1->ToolButton12->Enabled=true;
Form1->ToolButton13->Enabled=true;
Form1->ToolButton15->Enabled=true;
Form1->ToolButton16->Enabled=true;
Form1->suiStatusBar1->Panels->Items[0]->Text="顯示狀態";
}
}
}
//---------------------------------------------------------------------------
/****************************************************************************
Quit system
****************************************************************************/
void __fastcall TForm1::X1Click(TObject *Sender)
{
if(Saveable==true)
{
switch(Application->MessageBox("是否保存文件修改","Message",MB_YESNOCANCEL))
{
case IDYES:
Form1->S1->Click();
case IDNO:
Saveable=false;
this->Close();
break;
case IDCANCEL:
break;
}
}
else
this->Close();
}
//---------------------------------------------------------------------------
/***********************************************************************
Setup the Setting of the Print
***********************************************************************/
void __fastcall TForm1::N4Click(TObject *Sender)
{
Form1->PrinterSetupDialog1->Execute();
}
//---------------------------------------------------------------------------
/***********************************************************************
Print the Image
***********************************************************************/
void __fastcall TForm1::N3Click(TObject *Sender)
{
TRect strect;
int temhi,temwd;
TPrinter *Prntr=Printers::Printer();
//TPrinter Prntr=Printer();
if(Form1->PrintDialog1->Execute())
{
temhi=Form1->Image1->Height*4;
temwd=Form1->Image1->Width*4;
strect.Top=(Prntr->PageHeight-temhi)/2;
strect.Left=(Prntr->PageWidth-temwd)/2;
strect.Bottom=strect.Top+temhi;
strect.Right=strect.Left+temwd;
Prntr->BeginDoc();
Prntr->Canvas->StretchDraw(strect,Image1->Picture->Graphic);
Prntr->EndDoc();
}
}
//---------------------------------------------------------------------------
/***********************************************************************
Save the Image in BMP model
***********************************************************************/
void __fastcall TForm1::I1Click(TObject *Sender)
{
int i=0;
SaveDialog1->Filter="BMP FILE(*.bmp)|*.bmp";
if(SaveDialog1->Execute())
{
if(SaveDialog1->FileName==NULL)
{
/*
creat(SaveDialog1->FileName.c_str(),S_IREAD | S_IWRITE );
if(SaveDialog1->FileName==NULL)
{
ShowMessage("保存文件失敗");
i=1;
}
*/
ShowMessage("保存文件失敗");
}
else
{
Image1->Picture->SaveToFile(SaveDialog1->FileName+".bmp");
}
}
}
//---------------------------------------------------------------------------
/***********************************************************************
Save the Data in dat file
***********************************************************************/
void __fastcall TForm1::S1Click(TObject *Sender)
{
FILE *pf=NULL;
struct comframe stim[8][8]={0,};
short int ni,temp3=3,temp2=2,temp0=0,num;
char justify[0x10];
ni=trial_dis.stim_num;
stim[0][0].value=trial->out_amp;
stim[0][0].time=trial->out_t1;
stim[1][0].value=trial->hold_potential;
stim[1][0].time=trial->out_t-trial->out_t1;
stim[0][1].value=trial->out_amp;
stim[0][1].time=trial->out_t1;
stim[1][1].value=trial->hold_potential;
stim[1][1].time=trial->out_t-trial->out_t1;
SaveDialog1->Filter="數據文件(*.dat)|*.DAT";
if(SaveDialog1->Execute())
{
if((pf=fopen(SaveDialog1->FileName.c_str(),"r+b"))==NULL)
{
creat(SaveDialog1->FileName.c_str(),S_IREAD | S_IWRITE );
if((pf=fopen(SaveDialog1->FileName.c_str(),"r+b"))==NULL)
{
ShowMessage("保存文件失敗");
pf=NULL;
}
}
}
if(pf!=NULL)
{
DataFileName=SaveDialog1->FileName.c_str();
fputs("NEW HUST DATA",pf);
ffill('\0',0x10-ftell(pf),pf);
fwrite(&temp3,sizeof(short unsigned),1,pf);
fwrite(&temp2,sizeof(short unsigned),1,pf);
fwrite(&(trial->stim_during),sizeof(short unsigned),1,pf);
fwrite(&(trial->sample_inter),sizeof(short unsigned),1,pf);
fwrite(&(trial->sample_delay),sizeof(short unsigned),1,pf);
fwrite(&(trial->hold_potential),sizeof(short unsigned),1,pf);
fwrite(&temp0,sizeof(short unsigned),1,pf);
fwrite(&temp0,sizeof(short unsigned),1,pf);
fwrite(&(trial->stim_number),sizeof(short unsigned),1,pf);
fwrite(&temp0,sizeof(short unsigned),1,pf);
fwrite(&(trial->out_t),sizeof(short int),1,pf);
fwrite(&(trial->out_t1),sizeof(short int),1,pf);
fwrite(&(trial->out_l),sizeof(short int),1,pf);
fwrite(&(trial->out_n),sizeof(short int),1,pf);
fwrite(&(trial->out_delay),sizeof(short int),1,pf);
fwrite(&(trial->out_amp),sizeof(short int),1,pf);
ffill('\0',0x30-ftell(pf),pf);
fwrite(&((trial->inch[0]).num),sizeof(short int),1,pf);
fwrite(&((trial->inch[0]).gain),sizeof(float),1,pf);
fwrite(&((trial->inch[1]).num),sizeof(short int),1,pf);
fwrite(&((trial->inch[1]).gain),sizeof(float),1,pf);
ffill('\0',0x60-ftell(pf),pf);
fwrite(&((trial->outch).gain),sizeof(float),1,pf);
ffill('\0',0x80-ftell(pf),pf);
fwrite(&((trial->inch[0]).unit),sizeof(char),4,pf);
fwrite(&((trial->inch[1]).unit),sizeof(char),4,pf);
ffill('\0',0xa0-ftell(pf),pf);
fwrite(&((trial->outch).unit),sizeof(char),4,pf);
ffill('\0',0xb0-ftell(pf),pf);
fwrite(&record_clock,sizeof(REALTIME_T),1,pf);
fwrite(&count_clock,sizeof(REALTIME_T),1,pf);
fwrite(&sys_date.da_mon,sizeof(char),1,pf);
fwrite(&sys_date.da_day,sizeof(char),1,pf);
fwrite(&sys_date.da_year,sizeof(short int),1,pf);
ffill('\0',0x100-ftell(pf),pf);
fwrite(&(stim[0][0]),sizeof(struct comframe)*8*8,1,pf);
ffill('\0',0x200-ftell(pf),pf);
//fwrite("",sizeof(char),0x100,pf);
for(num=0;num<=trial_dis.trial_num;num++)
{
fwrite(&(trial->ap_param[num].vmax),sizeof(int),1,pf);
fwrite(&(trial->ap_param[num].rp),sizeof(int),1,pf);
fwrite(&(trial->ap_param[num].apa),sizeof(int),1,pf);
fwrite(&(trial->ap_param[num].apd20),sizeof(int),1,pf);
fwrite(&(trial->ap_param[num].apd50),sizeof(int),1,pf);
fwrite(&(trial->ap_param[num].apd90),sizeof(int),1,pf);
fwrite(&(trial->ap_param[num].fc),sizeof(int),1,pf);
}
ffill('\0',0x300-ftell(pf),pf);
fwrite((trial->in_data_buff)[ni],sizeof(short unsigned),trial->\
stim_data,pf);
fwrite((trial->fc_data_buff)[ni],sizeof(short unsigned),trial->\
stim_data,pf);
fclose(pf);
}
Saveable=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::O1Click(TObject *Sender)
{
if(OpenFiled==true&&Saveable==true)
{
switch(Application->MessageBox("是否保存文件修改","Message",MB_YESNOCANCEL))
{
case IDYES:
Form1->S1->Click();
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -