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

📄 untbd2.pas

📁 本软件是我公司开发的具有实际用途即核磁共振含油率测试分析的源代码。
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit Untbd2;

interface

uses
  Windows, Messages, SysUtils, StrUtils, DateUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Grids, ValEdit, DB, ADODB, DBGrids, Buttons,
  ComCtrls, TeEngine, Series, TeeProcs, Chart, Menus, TeeTools;
type xypoint=record
        Xpoint:double;
        Ypoint:double;
end;

type
  TFrmbd2 = class(TForm)
    Panel1: TPanel;
    GroupBox1: TGroupBox;
    Panel2: TPanel;
    GroupBox2: TGroupBox;
    GroupBox6: TGroupBox;
    ADOQuery2by: TADOQuery;
    ADOQuery1: TADOQuery;
    ADOQuery3: TADOQuery;
    ADOQuery4: TADOQuery;
    ADOConnection1: TADOConnection;
    ADOQuery1jb: TADOQuery;
    DataSource1: TDataSource;
    OD1: TOpenDialog;
    DBGrid1: TDBGrid;
    Panel3: TPanel;
    GroupBox7: TGroupBox;
    Label1: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    ComboBox1: TComboBox;
    BitBtn1: TBitBtn;
    GroupBox4: TGroupBox;
    Label5: TLabel;
    Edit5: TEdit;
    Label7: TLabel;
    Edit6: TEdit;
    Label6: TLabel;
    Edit7: TEdit;
    BitBtn2: TBitBtn;
    GroupBox8: TGroupBox;
    BitBtn3: TBitBtn;
    Panel4: TPanel;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    sampling: TChart;
    Series1: TLineSeries;
    Edit3: TEdit;
    Label2: TLabel;
    Label4: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    TabSheet3: TTabSheet;
    Memo1: TMemo;
    TabSheet4: TTabSheet;
    Chart2: TChart;
    LineSeries1: TLineSeries;
    Chart1: TChart;
    Series2: TLineSeries;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    StatusBar1: TStatusBar;
    ChartTool1: TCursorTool;
    procedure FormCreate(Sender: TObject);
//    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    function  Shiyutu(ssa1:string):string;
    procedure BitBtn3Click(Sender: TObject);
   ////////////////////最小二乘法拟合直线
    function CalculateLineKB(const xy:array of xypoint;out k,b:double;n:integer):boolean;
    //procedure Series5AfterDrawValues(Sender: TObject);
    procedure Edit4KeyPress(Sender: TObject; var Key: Char);
    procedure Edit8KeyPress(Sender: TObject; var Key: Char);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure Edit1Change(Sender: TObject);
  //  procedure Series4AfterDrawValues(Sender: TObject);
    procedure LineSeries1AfterDrawValues(Sender: TObject);
    procedure Chart2MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure DBGrid1CellClick(Column: TColumn);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Frmbd2: TFrmbd2;
  x0,y0,x1,y1:double;
implementation

uses Unit7;

{$R *.dfm}


procedure TFrmbd2.FormCreate(Sender: TObject);
var
   s1,s2,s3,s4,MyPath:string;
   t1:Tdatetime;
   ia1,ia2:word;

begin
  MyPath:=ExtractFilePath(ParamStr(0));
  ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+
        MyPath+'db1.mdb;Persist Security Info=False';

  t1:=date;
  s1:=inttostr(CurrentYear);
  ia1:= MonthOfTheYear(t1);
    ia2:= dayOf(t1);
 if (ia1>=1) and (ia1<=9) then
    s2:='0'+inttostr(ia1)
  else
    s2:=inttostr(ia1);
 if (ia2>=1) and (ia2<=9) then
    s3:='0'+inttostr(ia2)
  else
    s3:=inttostr(ia2);

    s4:=s1+s2+s3+'-';
    edit1.Text:=s4;
        ADOQuery1jb.Close;
          ADOQuery1jb.SQL.Clear;
          ADOQuery1jb.SQL.Add('select * from BYANG order by testno  desc, bybh asc');
          ADOQuery1jb.Open;


end;

{
procedure TFrmbd2.BitBtn4Click(Sender: TObject);
var
   s1,s2,ttbhao:string;
   i2:integer;
begin
 IF trim(Edit1.Text)='' then
  begin
    showmessage('请输入标定编号!');
    exit;
  end
  else if   trim(Edit3.Text)=''   then
    begin
      showmessage('请输入标定人姓名!');
      exit;
    end;

   ttbhao:=trim(edit1.Text);    //标定编号
  s1:='select count(*) as find from biaoding where testno='+QuotedStr(ttbhao);
                ADOQuery1.Close;
               ADOQuery1.SQL.Clear;
               ADOQuery1.SQL.Add(s1);
               ADOQuery1.Open;
               i2:=ADOQuery1.FieldByName('find').AsInteger;

               if i2>0 then
                 begin
                    if application.MessageBox('已经有此标定记录,您确认要覆盖吗?','覆盖确认',MB_YesNo+MB_DEFBUTTON2+MB_IconStop+MB_APPLMODAL)=IDYES THEN
                       BEGIN
                          s1:='update biaoding set testno='+ QuotedStr(edit1.Text)
                               +', testname='+ QuotedStr(edit3.Text)
                               +', p1us='+ QuotedStr(vle1.Cells[1,1])
                               +', d3US='+ QuotedStr(vle1.Cells[1,2])
                               +', d0us='+ QuotedStr(vle1.Cells[1,3])
                               +', TD='+ QuotedStr(vle1.Cells[1,4])
                               +', SW='+ QuotedStr(vle1.Cells[1,5])
                               +', DFW='+ QuotedStr(vle1.Cells[1,6])
                               +', SF1='+ QuotedStr(vle1.Cells[1,7])
                               +', o1k='+ QuotedStr(vle1.Cells[1,8])
                               +', RG='+ QuotedStr(vle1.Cells[1,9])
                               +', NS='+ QuotedStr(vle1.Cells[1,10])
                               +', DS='+ QuotedStr(vle1.Cells[1,11])
                                +' where testno='+QuotedStr(ttbhao);
                          ADOQuery1.Close;  //插入其他加1
                          ADOQuery1.SQL.Clear;
                          ADOQuery1.SQL.Add(s1);
                         ADOQuery1.ExecSQL;

                       end

                       else
                          EXIT;

                 end
                  ELSE

                  BEGIN
                    s2:='INSERT INTO biaoding(testno,testname,p1us,d3US,d0us,TD,SW,DFW,SF1,o1k,RG,NS,DS) VALUES('
              +QuotedStr(edit1.Text)
              +','+QuotedStr(edit3.Text)
              +','+QuotedStr(vle1.Cells[1,1])
              +','+QuotedStr(vle1.Cells[1,2])
              +','+QuotedStr(vle1.Cells[1,3])
              +','+QuotedStr(vle1.Cells[1,4])
              +','+QuotedStr(vle1.Cells[1,5])
              +','+QuotedStr(vle1.Cells[1,6])
              +','+QuotedStr(vle1.Cells[1,7])
              +','+QuotedStr(vle1.Cells[1,8])
              +','+QuotedStr(vle1.Cells[1,9])
              +','+QuotedStr(vle1.Cells[1,10])
              +','+QuotedStr(vle1.Cells[1,11])
              +')';
          ADOQuery1.Close;
          ADOQuery1.SQL.Clear;
          ADOQuery1.SQL.Add(s2);
          ADOQuery1.ExecSQL;
          ADOQuery1.Close;

          showmessage('保存成功!');

                  END;
end;   }


procedure TFrmbd2.BitBtn1Click(Sender: TObject);
begin
    OD1.Execute;
    edit2.Text:=od1.FileName;
     if edit2.Text='' then
       begin
         showmessage('请选择FID文件!');
       end;
    edit6.SetFocus;    
end;

procedure TFrmbd2.BitBtn2Click(Sender: TObject);
  var
     s1,s2,s3,s4,s5,s6,maxwz,str_xbzhi:string;
     i1,i2,i3,i4,i5:integer;
     xbzhi:real;
begin
   i2:=0;
  if   edit1.Text='' then
      begin
        showmessage('请输入标定编号!');
        exit;
      end;

       s1:='select count(*) as find from bd1 where testno='+QuotedStr(trim(edit1.Text));
               ADOQuery1.Close;
               ADOQuery1.SQL.Clear;
               ADOQuery1.SQL.Add(s1);
               ADOQuery1.open;
               i2:=ADOQuery1.FieldByName('find').AsInteger;     //查标定编号
        if (i2>0) then          //新记录
           begin
              if application.MessageBox('标定编号与历史记录重复,请确定是否更改!?','提示',MB_YESNO+MB_DEFBUTTON1+MB_ICONWARNING+MB_SystemModal)<>IDNo then
                 begin
                    exit;
                    Edit1.SetFocus;
                 end;
             end;


 {
 if   edit3.Text='' then
      begin
        showmessage('请输入标定人姓名!');
        exit;
      end;  }
  if   combobox1.Text='' then
      begin
        showmessage('请输入标准样品的数量!');
        exit;
      end;
  if   edit2.Text='' then
      begin
        showmessage('请打开NMR的路径及文件!');
        exit;
      end;
  if   edit5.Text='' then
      begin
        showmessage('请输入标样编号!');
        exit;
      end;
 { if   edit6.Text='' then
      begin
        showmessage('请输入质量!');
        exit;
      end;   }
  if   edit7.Text='' then
      begin
        showmessage('请输入标样含量!');
        exit;
      end;

      i1:=combobox1.ItemIndex+1;    //标样的数量
      i3:=LastDelimiter('\', EDIT2.Text);   //最后的文件名长度
      s2:=LeftStr(edit2.Text,i3);        //去掉文件名的路径部分
      s3:=RightStr(edit2.Text,4);   //.txt
      i4:=length(edit2.Text)-i3;
      s4:=RightStr(edit2.Text,i4);  //文件名
      i5:=LastDelimiter('.', s4);
      s5:=LeftStr(s4,i5-1); ///////////// strtoint
      s1:='select count(*) as find from BYANG where testno='+QuotedStr(trim(edit1.Text));
              try
               ADOQuery1.Close;
               ADOQuery1.SQL.Clear;
               ADOQuery1.SQL.Add(s1);
               ADOQuery1.open;
               i2:=ADOQuery1.FieldByName('find').AsInteger;     //查标定编号
              finally
        if (i2=0) then          //新记录
          begin
               Series1.Clear;
            Series2.Clear;
            maxwz:=Shiyutu(edit2.Text);  //时域图
            xbzhi:=strtofloat(maxwz)/strtofloat(edit6.Text);  //最大值/质量
            str_xbzhi:=FormatFloat('0.000',xbzhi);      //取小数点后三位。

          //  showmessage('还有'+inttostr(i1)+'个标样要添加!');
            s1:='INSERT INTO BYANG(testno,testname,bybh,bzhhl,zhl,byshuliang,NMRroadfile,zdzhi,maxweizhi) VALUES('
              +QuotedStr(edit1.Text)        //标定编号
              +','+QuotedStr(edit3.Text)    //标定人员姓名
              +','+QuotedStr(edit5.Text)    //标样编号
              +','+QuotedStr(edit7.Text)     //标准含量(%)
              +','+QuotedStr(edit6.Text)     //质量(克)
              +','+QuotedStr(inttostr(i1))    // 标准样品的数量
              +','+QuotedStr(edit2.Text) // 请选择第一个FID文件
              +','+QuotedStr(maxwz)    //最大值实部平方加虚部平方的和再开平方根
              +','+QuotedStr(str_xbzhi)   //最大值/质量比
               +')';
          ADOQuery1.Close;
          ADOQuery1.SQL.Clear;
          ADOQuery1.SQL.Add(s1);
          ADOQuery1.ExecSQL;
    //      ADOQuery1.Close;
          showmessage('已经成功添加了一条标样记录!'+#13+'还有'+inttostr(i1-1)+'个标样要添加!');
           edit5.Text:='2';     //加1
           s6:=s2+ inttostr(strtoint(s5)+1)+s3;
           edit2.Text:=s6;
         //  edit6.Text:='';
             edit7.Text:='';
           edit6.SetFocus;
          end;
         end;
        if i2>0 then    // 已经加过
        begin
         //  showmessage('还有'+inttostr(i1-i2)+'个标样要添加!');
           if i1-i2=0 then
             begin
             showmessage('已经添加好标样!');
             edit5.Text:='';   //标样编号
             exit;
             end
               else
               begin
              //  BitBtn3.Enabled:=false;
                Edit5.Text:=inttostr(i2+1);   //标样编号
//                edit5.Enabled:=false;
                edit6.SetFocus;
               end;
                 Series1.Clear;
              Series2.Clear;
             maxwz:=Shiyutu(edit2.Text);   //  时域图       实部和虚部平方和的模的最大值
            xbzhi:=strtofloat(maxwz)/strtofloat(edit6.Text);    //最大值与质量之比
            str_xbzhi:=FormatFloat('0.000',xbzhi);

            s1:='INSERT INTO BYANG(testno,testname,bybh,bzhhl,zhl,byshuliang,NMRroadfile,zdzhi,maxweizhi) VALUES('
              +QuotedStr(edit1.Text)       //标定编号
              +','+QuotedStr(edit3.Text)   //标定人员姓名
              +','+QuotedStr(edit5.Text)   //标样编号
              +','+QuotedStr(edit7.Text)   // 标准含量(%)
              +','+QuotedStr(edit6.Text)    //质量(克)
              +','+QuotedStr(inttostr(i1))   // 标准样品的数量
              +','+QuotedStr(edit2.Text)    // 请选择第一个FID文件
              +','+QuotedStr(maxwz)        //最大值实部平方加虚部平方的和再开平方根
              +','+QuotedStr(str_xbzhi)  //信号最大值比质量
              +')';
          ADOQuery1.Close;
          ADOQuery1.SQL.Clear;
          ADOQuery1.SQL.Add(s1);
          ADOQuery1.ExecSQL;
//          ADOQuery1jb.Close;
                i3:=LastDelimiter('\', EDIT2.Text);   //最后的文件名长度
                s2:=LeftStr(edit2.Text,i3);        //去掉文件名的路径部分

⌨️ 快捷键说明

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