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

📄 unit20.cpp

📁 光学仪器的控制系统 用于教学和科研的仪器
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    {
        Timer1->Enabled = false;
        //DisableMenuItems();
        m_WntoGo=InputBoChang->BoChang; // fBoChangValue 输入的波长值
        if(Thread1!=NULL) DeleteThread1();
//        CreatThread1();
//        Thread1->SetFun((ExecFun) To_GotoWn);
        m_bStop = false;  // 按下Stop 按纽
        DisableMenuItems();
        Thread1->Resume();
    }
}
//---------------------------------------------------------------------------
void TFormXGD::CreatThread1(void)
{// 创建线程
    if(Thread1==NULL)
    {
        Thread1=new ThreadE(true);
        Thread1->Priority=tpNormal;
    }
}
//---------------------------------------------------------------------------
void TFormXGD::DeleteThread1(void)
{// 删除线程
    if(Thread1!=NULL)
    {
        Thread1->Terminate();
        Thread1->WaitFor();
        delete Thread1;
        Thread1=NULL;
    }
}
//---------------------------------------------------------------------------
void __fastcall TFormXGD::btnStopClick(TObject *Sender)
{
/*
    TSize sz;
    sz = StringGrid1->Canvas->TextExtent("2004-7-19 17:20:23");
    StringGrid1->ColWidths[8] = sz.cx + 1;
*/    
    m_bStop = true;
}
//---------------------------------------------------------------------------
void TFormXGD::EnableMenuItems(void)
{
    btnGotoWn->Enabled = true;
    //btnCeLiang->Enabled = true;
    btnReturn->Enabled = true;
}
//---------------------------------------------------------------------------
void TFormXGD::DisableMenuItems(void)
{
    btnGotoWn->Enabled = false;
    //btnCeLiang->Enabled = false;
    btnReturn->Enabled = false;
}
//---------------------------------------------------------------------------
void __fastcall TFormXGD::FormCloseQuery(TObject *Sender, bool &CanClose)
{
    int bt;
    
    if(CheckAmended())
    {
        bt = Application->MessageBox("测量内容已经改变,是否保存?","提示",MB_YESNO|MB_ICONWARNING);
        if(bt == IDYES)
        {
            bt = DoSave();
            if(bt != 1)
            {
                CanClose = false;
                return ;
            }
        }
    }
    //CanClose = m_CanCloseed;
    CanClose = true;
    InitPara();
}
//---------------------------------------------------------------------------
void __fastcall TFormXGD::StringGrid1DrawCell(TObject *Sender, int ACol,
      int ARow, TRect &Rect, TGridDrawState State)
{
    TStringGrid *sgrid;
    TRect rectt;
    int i;

    sgrid = (TStringGrid *)Sender;

    if(ARow < 0 || ACol < 0) return ;

    if(ARow == 0)
    {
        sgrid->Canvas->Brush->Color = sgrid->FixedColor;
        sgrid->Canvas->FillRect(Rect);
        DrawText(sgrid->Canvas->Handle,sgrid->Cells[ACol][ARow].c_str(),-1,(RECT*)&Rect,
                           DT_SINGLELINE | DT_VCENTER | DT_CENTER);

        //sgrid->Canvas->TextOut(Rect.Left+(Rect.Width()-Rect.Left-sgrid->Cells[ACol][ARow].Trim().Length())/2,Rect.Top,sgrid->Cells[ACol][ARow].Trim());
    }
    else
    {
        if(!m_bStdCompl)
        {
            if(ACol == 0
                || ACol == 5
                || ACol == 6
                || ACol == 7
                || ACol ==8
                )
            {
                //不可输入的颜色
                sgrid->Canvas->Brush->Color = clOlive;
            }
            else
            {
                sgrid->Canvas->Brush->Color = clWhite;
                if(   ACol == 3
                   || ACol == 4
                   )
                {
                    sgrid->Canvas->Brush->Color = (TColor)0xEFE3F7;
                }
            }
        }
        else
        {
            if((ARow-1) < m_StdParaCount)
            {
                sgrid->Canvas->Brush->Color = (TColor)0x0075baff;

            }
            else
            {
                if(ACol == 0
                   || ACol ==6
                   || ACol ==7
                   || ACol ==8
                   )
                {
                    //不可输入的颜色
                    sgrid->Canvas->Brush->Color = clOlive;
                }
                else
                {
                    //sgrid->Canvas->Brush->Color = clWhite;
                    if(   ACol == 3
                        || ACol == 4
                        )
                    {
                        sgrid->Canvas->Brush->Color = (TColor)0xEFE3F7;
                    }
                }
            }
        }



        sgrid->Canvas->FillRect(Rect);
        DrawText(sgrid->Canvas->Handle,sgrid->Cells[ACol][ARow].c_str(),-1,(RECT*)&Rect,
                           DT_SINGLELINE | DT_VCENTER | DT_CENTER);
    }

    if(ARow == m_SelectRow && m_SelectRow > 0)
    {
        sgrid->Canvas->Brush->Color = clBlue;
        for(i = 0; i < sgrid->ColCount; i++)
        {
            rectt = sgrid->CellRect(i, ARow);
            sgrid->Canvas->FillRect(rectt);
            DrawText(sgrid->Canvas->Handle,sgrid->Cells[i][ARow].c_str(),-1,(RECT*)&rectt,
                           DT_SINGLELINE | DT_VCENTER | DT_CENTER);
        }
    }

}
//---------------------------------------------------------------------------
void TFormXGD::UpdatePara(void)
{
    int i;
    char gs[80];

    for(i = 0; i < m_AllParaCount; i++)
    {
        if(i < m_StdParaCount)
        {
            StringGrid1->Cells[0][i+1]= "√";
        }
        else
        {
            if(m_bStdCompl)
                StringGrid1->Cells[0][i+1]= i - m_StdParaCount + 1;
            else
                StringGrid1->Cells[0][i+1]= i + 1;
        }
        StringGrid1->Cells[1][i+1] = m_pXGDParas[i].Name;
        StringGrid1->Cells[2][i+1] = m_pXGDParas[i].Num;

        //sprintf(gs, "%1.3f", );
        FNFloatToStr(gs, 1, m_XGDJD, m_pXGDParas[i].Abs);
        StringGrid1->Cells[3][i+1] = gs;

        //sprintf(gs, "%1.3f", );
        FNFloatToStr(gs, 1, m_NDJD, m_pXGDParas[i].C1);
        StringGrid1->Cells[4][i+1] = gs;

        //sprintf(gs, "%1.3f", );
        FNFloatToStr(gs, 1, m_NDJD, m_pXGDParas[i].C);
        StringGrid1->Cells[5][i+1] = gs;

        //sprintf(gs, "%1.3f", );
        FNFloatToStr(gs, 1, m_NDJD, m_pXGDParas[i].C1 - m_pXGDParas[i].C);
        StringGrid1->Cells[6][i+1] = gs;

        sprintf(gs, "%d", m_pXGDParas[i].TasCount);
        StringGrid1->Cells[7][i+1] = gs;

        StringGrid1->Cells[8][i+1] = DateTimeToStr(SystemTimeToDateTime(m_pXGDParas[i].Time));

        StringGrid1->Cells[9][i+1] = m_pXGDParas[i].BeiZhu;
    }
}
//---------------------------------------------------------------------------
void TFormXGD::GetPara(void)
{
    int i;

    for(i = 0; i < m_AllParaCount; i++)
    {
        strcpy(m_pXGDParas[i].Name, StringGrid1->Cells[1][i+1].c_str());
        strcpy(m_pXGDParas[i].Num, StringGrid1->Cells[2][i+1].c_str());

        m_pXGDParas[i].Abs = StringGrid1->Cells[3][i+1].ToDouble();

        m_pXGDParas[i].C1 = StringGrid1->Cells[4][i+1].ToDouble();

        m_pXGDParas[i].C = StringGrid1->Cells[5][i+1].ToDouble();

        m_pXGDParas[i].TasCount = StringGrid1->Cells[7][i+1].ToDouble();

        DateTimeToSystemTime(StrToDateTime(StringGrid1->Cells[8][i+1]), m_pXGDParas[i].Time);

        strcpy(m_pXGDParas[i].BeiZhu, StringGrid1->Cells[9][i+1].c_str());
    }

}
//---------------------------------------------------------------------------
void __fastcall TFormXGD::StringGrid1SelectCell(TObject *Sender, int ACol,
      int ARow, bool &CanSelect)
{
    TStringGrid *sgrid;
    sgrid = (TStringGrid *)Sender;

    if(ARow == 0)
    {
        CanSelect = false;
        return;
    }
    if(ACol == 0)
    {
        CanSelect = false;
        //sgrid->Options >> goRowSelect;
        //sgrid->Options << goEditing;
        //sgrid->Options << goAlwaysShowEditor;
        if(!m_bStdCompl || ARow > m_StdParaCount)
        {
            CanSelect = true;
            sgrid->Options >> goEditing;
            sgrid->Options >> goAlwaysShowEditor;
            sgrid->Options << goRowSelect;
            btnDel->Enabled = true;
            m_SelectRow = ARow;
        }
        else
        {
            //btnDel->Enabled = false;

        }

        if(m_bStdCompl && ARow > m_StdParaCount)
        {
            CanSelect = true;
            btnCeLiang->Enabled = true;
            m_SelectRow = ARow;
        }
        else
        {
            btnCeLiang->Enabled = false;
        }

        return;
    }

        m_SelectRow = -1;
        sgrid->Options >> goRowSelect;
        sgrid->Options << goEditing;
        sgrid->Options << goAlwaysShowEditor;
        btnDel->Enabled = false;
        btnCeLiang->Enabled = false;

    CanSelect = true;
    if(!m_bStdCompl) //未建立标准样品曲线
    {
        if(ACol == 0
           || ACol == 5
           || ACol == 6
           || ACol == 7
           || ACol == 8
           )
        {
            CanSelect = false;
        }
    }
    else
    {
        if(ARow <= m_StdParaCount) CanSelect = false;
        if(ACol == 0
           || ACol == 3
           || ACol == 4
           || ACol ==6
           || ACol ==7
           || ACol ==8
           )
        {
            CanSelect = false;
        }
    }

    if(CanSelect == false && sgrid->Col == 0)
    {
        //sgrid->Col = 2;
        SelectGridCell(sgrid, 2, sgrid->Row);
    }
}
//---------------------------------------------------------------------------

void __fastcall TFormXGD::StringGrid1SetEditText(TObject *Sender, int ACol,
      int ARow, const AnsiString Value)
{
    TStringGrid *sgrid;
    AnsiString str;
    float t;
    char gs[80];
    int slen, clen;

    sgrid = (TStringGrid *)Sender;

    if(ARow <= 0) return;

    if(ACol != 0)
    {
        m_bAmend = true;
    }

    //限制各项输入长度
    clen = sgrid->Cells[ACol][ARow].Length();
    if(ACol == 1)
    {
        slen = sizeof(m_pXGDParas[ARow - 1].Name);
        str = Value;
        if(clen >= slen)
        {
            str.Delete(slen, clen - slen + 1);
            sgrid->Cells[ACol][ARow] = str;
        }
    }
    if(ACol == 2)
    {
        slen = sizeof(m_pXGDParas[ARow - 1].Num);
        str = Value;
        if(clen >= slen)
        {
            str.Delete(slen, clen - slen + 1);
            sgrid->Cells[ACol][ARow] = str;
        }
    }
    if(ACol == 9)
    {
        slen = sizeof(m_pXGDParas[ARow - 1].BeiZhu);
        str = Value;
        if(clen >= slen)
        {
            str.Delete(slen, clen - slen + 1);
            sgrid->Cells[ACol][ARow] = str;
        }
    }

    if(ACol == 3 || ACol == 4 || ACol == 5)
    {
        str = IsNumber(Value);
        if(str != Value)
        {
            sgrid->Cells[ACol][ARow] = str;

        }

        if(ACol == 3)
        {
           if(IsFloat(sgrid->Cells[3][ARow]))
           {
               //sprintf(gs, "%1.3f", );
               FNFloatToStr(gs, 1, m_XGDJD, m_pXGDParas[ARow - 1].Abs);
               if(str != gs)
               {
                   //修改了吸光度则使采集次数为1
                   sgrid->Cells[7][ARow] = 1;
               }
           }
        }

        if(IsFloat(sgrid->Cells[3][ARow]) && IsFloat(sgrid->Cells[4][ARow]))
        {
            m_pXGDParas[ARow - 1].Abs = sgrid->Cells[3][ARow].ToDouble();
            m_pXGDParas[ARow - 1].C1 = sgrid->Cells[4][ARow].ToDouble();
            m_pXGDParas[ARow - 1].bValid = true;
        }
        else
        {
            m_pXGDParas[ARow - 1].bValid = false;
        }

    }

    if(ACol == 4 || ACol == 5)
    {
        if(ACol == 4 && !m_bStdCompl)
        {
            sgrid->Cells[5][ARow] = sgrid->Cells[ACol][ARow];
        }

        if(IsFloat(sgrid->Cells[4][ARow]) && IsFloat(sgrid->Cells[5][ARow]))
        {
            t = sgrid->Cells[4][ARow].ToDouble() - sgrid->Cells[5][ARow].ToDouble();
            //sprintf(gs, "%1.3f", t);
            FNFloatToStr(gs, 1, m_NDJD, t);
            sgrid->Cells[6][ARow] = gs;
        }
    }

    btnAddItem->Enabled = CheckForNewItem();
    if(!m_bStdCompl)
    {
        if(btnAddItem->Enabled && sgrid->RowCount >= 3)
        {
            btnBuildStd->Enabled = true;
        }
        else
        {
            btnBuildStd->Enabled = false;
        }
    }
    else
    {
        btnBuildStd->Enabled = true;
    }
/*
    if(btnAddItem->Enabled && sgrid->RowCount >= 3 && !m_bStdCompl)
        btnBuildStd->Enabled = true;
    else
        btnBuildStd->Enabled = false;
*/
    sgrid->Options >> goEditing;
    sgrid->Options >> goAlwaysShowEditor;

    sgrid->Options << goEditing;
    sgrid->Options << goAlwaysShowEditor;

/*
    CanSelect = true;
    if(!m_bStdCompl) //未建立标准样品曲线
    {
        if(ACol == 0
           || ACol == 6
           || ACol == 8
           )
        {

⌨️ 快捷键说明

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