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

📄 u_645_command.pas

📁 此系统完成了单向复费率电能表的抄表以及编程
💻 PAS
📖 第 1 页 / 共 5 页
字号:
     1: baud := br300;
     2: baud := br600;
     3: baud := br1200;
     4: baud := br2400;
     5: baud := br4800;
     6: baud := br9600;
     7: baud := br14400;
     8: baud := br19200;
     9: baud := br38400;
     10: baud := br56000;
     11: baud := br57600;
     12: baud := br115200;
   end;

  rzlabeL24.Caption:='表号录入'+#13+'起始时间';
  Rzmaskedit1.Visible := true;
  Rzmaskedit2.Visible := true;
  rzlabeL25.Visible := true;
  rzlabeL25.Caption:='表号录入'+#13+'终止时间';
  rzmaskedit1.Text:=formatdatetime('yyyy-mm-dd hh:nn:ss',now);
  rzmaskedit2.Text:=formatdatetime('yyyy-mm-dd hh:nn:ss',now);
  rzedit11.Visible := FALSE;
end;

procedure TF_645.RzTreeView1Change(Sender: TObject; Node: TTreeNode);
var
   i:integer;
   strsql:string;
begin
  option :=rztreeview1.Selected.AbsoluteIndex;
  if option = 0 then
  begin
    f_645.RzPageControl1.ActivePageIndex := 2;
    edit1.Clear;
  end
  else
  begin

    edit1.Text := f_645.RzTreeView1.Selected.Text;
    f_645.Caption :=  edit1.Text;
    if S_meun = 'C' then
    begin
      f_645.RzPageControl1.ActivePageIndex := 0;
      f_645.RzPageControl2.ActivePageIndex := 0;
    end;
    if S_meun = 'A' then
    begin
      f_645.RzPageControl1.ActivePageIndex := 1;
      f_645.RzEdit1.Text :=f_645.RzTreeView1.Selected.Text;
      f_645.RzLabel5.Caption := f_645.RzEdit1.Text + '【命 令 集】';
      try
        strsql := trim(f_645.RzEdit1.Text);
        Dbgrid_show(strsql);
      except

      end;
    end;
    if S_meun = 'E' then
    begin
      f_645.RzPageControl1.ActivePageIndex := 1;
    end;
  end;
end;

procedure TF_645.RzRadioButton4Click(Sender: TObject);
begin
   PCsound(200,1);
end;

procedure TF_645.RzComboBox1Change(Sender: TObject);
begin
   case Rzcombobox1.ItemIndex of
     0: com_NO := pncom1;
     1: com_NO := pncom2;
     2: com_NO := pncom3;
     3: com_NO := pncom4;
     4: com_NO := pncom5;
     5: com_NO := pncom6;
     6: com_NO := pncom7;
     7: com_NO := pncom8;
     8: com_NO := pncom9;
     9: com_NO := pncom10;
     10: com_NO := pncom11;
     11: com_NO := pncom12;
   else
     begin
       com_NO := pncom1;
       Rzcombobox1.ItemIndex := 0;
     end;
   end;

end;

procedure TF_645.RzEdit1KeyPress(Sender: TObject; var Key: Char);
var
  strsql,s,s1,filename:string;
  i:integer;

begin
   if not (Key in ['0'..'9',#8,'a'..'z','A'..'Z']) then
      begin
        Key:=#0 ;
      end;
   filename := extractfilepath(paramstr(0))+'\meter.txt';
   s:= trim(rzedit1.Text);
   if (pos(s,'(') > 0) or (pos(s,')') > 0) then
   begin
      MyMsgBox(' 【表类型名称】只能由汉字、字母或0-9的数字组成!','系  统  错  误', 0);
      exit;
   end;
   if key = #13  then
    if Rzedit1.text <> ''  then
    begin
      if Tree_Boolean(s) then
      begin
        MyMsgBox(s + ' 表型号已经存在!请从左边选取该表型号。','系  统  错  误', 0);
        exit;
      end;
      strsql:='Create table '+s+
              ' ('+
              '命令 char(4) PRIMARY KEY,'+
              '名称 char(100),'+
              '长度 char(4),'+
              '块标志 char(1),'+       //0:单;1:块
              '读写 char(1),'+         //0:只读,抄表;1:可写可读,编程
              '掩码 char(20),'+
              '标识 char(1))';        //0:645;1:自定义
      try
        datam.ADOConnection1.Execute(strsql);
      except
        MyMsgBox(' 创建【'+s+'】表失败!可能该表已存在','系  统  错  误', 0);
        exit;
      end;

      s1 := s+'_bh';
      strsql:='Create table '+s1+
              ' ('+
              '表号 char(12) PRIMARY KEY,'+
              '录入日期 char(30))';
      try
        datam.ADOConnection1.Execute(strsql);
      except
        MyMsgBox(' 创建【'+s1+'】表失败!可能该表已存在','系  统  错  误', 0);
        exit;
      end;

      s1 := s+'_data';
      strsql:='Create table '+s1+
              ' ('+
              'ID Counter PRIMARY KEY,'+
              '表号 char(12),'+
              '录入日期 char(30),'+
              '命令 char(4),'+
              '抄表日期 char(30),'+
              'data1 char(20),'+
              'data2 char(20),'+
              'data3 char(20),'+
              'data4 char(20),'+
              'data5 char(20),'+
              'data6 char(20),'+
              'data7 char(20),'+
              'data8 char(20),'+
              'data9 char(20),'+
              'data10 char(20),'+
              'data11 char(20),'+
              'data12 char(20),'+
              'data13 char(20),'+
              'data14 char(20),'+
              'data15 char(20),'+
              'data16 char(20),'+
              'data17 char(20),'+
              'data18 char(20),'+
              'data19 char(20),'+
              'data20 char(20))';
      try
        datam.ADOConnection1.Execute(strsql);
        strsql :=' Create Index i表号 ON '+s1+' ([表号])';
        datam.ADOConnection1.Execute(strsql);
        strsql :=' Create Index i录入日期 ON '+s1+' ([录入日期])';
        datam.ADOConnection1.Execute(strsql);
        strsql :=' Create Index i命令 ON '+s1+' ([命令])';
        datam.ADOConnection1.Execute(strsql);
      except
        MyMsgBox(' 创建【'+s1+'】表失败!可能该表已存在','系  统  错  误', 0);
        exit;
      end;

      RWdatfile('X',filename,s);
      f_645.RzLabel5.Caption := s + '【命 令 集】';
      f_645.RzTreeView1.Items.AddChild(f_645.RzTreeView1.Items[0],s)   ;
      m_sum := m_sum + 1;
      f_645.RzStatusPane2.Caption := '共'+inttostr(m_sum)+'个被选表型';
      f_645.RzTreeView1.Items[m_sum].ImageIndex := 45;
      f_645.RzTreeView1.Items[m_sum].SelectedIndex := 44;
      f_645.RzTreeView1.Items[m_sum].Selected:= true;
      Rztreeview1.Refresh;

    end;

end;

procedure TF_645.RzPageControl1Change(Sender: TObject);
var
   C_flag ,strsql:string;
   i:integer;
   TreeN: TTreeNode;
begin
  case f_645.RzPageControl1.ActivePageIndex of
    0:
      begin
         S_meun := 'C';      //通讯管理
         RzPageControl2.ActivePageIndex :=0;
         if trim(edit1.Text) = '' then
         begin
            MyMsgBox(' 请先选择一种"表型号"!','系  统  错  误', 0);
            f_645.RzPageControl1.ActivePageIndex := 2;
            exit;
         end;
      end;
    1:
     begin
       S_meun := 'A';      //添加新表型号
       {f_645.RzStringGrid1.
       f_645.RzStringGrid1.Rows[1].Add('r1');
       f_645.RzStringGrid1.Rows[2].Add('r2');
       f_645.RzStringGrid1.Cols[1].Add('c1');
       f_645.RzStringGrid1.Cols[2].Add('c2');
       f_645.RzStringGrid1.Cells[3,4] := 'ss';}
       if f_645.RzTreeView1.Selected.AbsoluteIndex = 0 then
       begin
          f_645.RzEdit1.Clear;
       end
       else
       begin
          f_645.RzEdit1.Text :=f_645.RzTreeView1.Selected.Text;
          try
            strsql := trim(f_645.RzEdit1.Text);
            Dbgrid_show(strsql);

          except

          end;

       end;
     end;
    2: S_meun := 'S';      //系统参数设置
  end;

end;

procedure TF_645.RzComboBox2Change(Sender: TObject);
var
  s:string;
begin
  if Rzcombobox2.ItemIndex = -1 then
  begin
      MyMsgBox(' 请选择"命令集名称"!','系  统  错  误', 0);
      exit;
  end;
  Rzcombobox3.Items.Clear;
  //F_645.DataSource1.DataSet := datam.ADOQ1;
  s := 'A'+inttostr(Rzcombobox2.ItemIndex+1);
  datam.ADOQ1.Close;
  datam.ADOQ1.SQL.Clear;
  datam.ADOQ1.SQL.Text :='select * from 命令编码 where 命令分类 ='''+s+''' order by 命令编码 ';
  datam.ADOQ1.Open;
  if datam.ADOQ1.RecordCount > 0  then
  begin
    datam.ADOQ1.First;
    while not datam.ADOQ1.Eof do
    begin
      Rzcombobox3.Items.Add(datam.ADOQ1.fieldbyname('命令编码').AsString+'【'+
                            datam.ADOQ1.fieldbyname('数据项名称').AsString+'】');
      datam.ADOQ1.Next;
    end;
  end;
end;

procedure TF_645.RzComboBox3Change(Sender: TObject);
var
   Commandstr,k_flag,w_flag:string;
begin
  if Rzcombobox3.ItemIndex = -1 then
  begin
      MyMsgBox(' 请选择"命令"!','系  统  错  误', 0);
      exit;
  end;
  Rzedit2.Clear;
  Rzedit3.Clear;
  Rzedit4.Clear;
  Rzedit5.Clear;
  Commandstr := TRIM(Rzcombobox3.Text);
  delete(Commandstr,5,(length(Commandstr)-4));
  datam.ADOQ1.Close;
  datam.ADOQ1.SQL.Clear;
  datam.ADOQ1.SQL.Text :='select * from 命令编码 where 命令编码 ='''+Commandstr+'''  ';
  datam.ADOQ1.Open;
  if datam.ADOQ1.RecordCount > 0  then
  begin
     k_flag := datam.ADOQ1.fieldbyname('命令模式').AsString;
     Rzedit4.Text := datam.ADOQ1.fieldbyname('数据格式').AsString;
     w_flag := datam.ADOQ1.fieldbyname('写').AsString;
     if k_flag = '1' then
     begin
        Rzedit2.Text := '块命令';
        Rzedit3.Enabled := true;
     end
     else
     begin
        Rzedit2.Text := '单命令';
        Rzedit3.Enabled := false;
        Rzedit3.Text := datam.ADOQ1.fieldbyname('数据长度').AsString;
     end;
     Rzedit2.Text := k_flag+trim(Rzedit2.Text);
     if w_flag = '1' then
        Rzedit5.Text := '编程(可写)命令'
     else
        Rzedit5.Text := '抄表(只读)命令';
     Rzedit5.Text := w_flag+trim(Rzedit5.Text);
  end;
end;

procedure TF_645.RzShapeButton1Click(Sender: TObject);
var
   T_name,sqlstr,str:string;
   str1,str2,str3,str4,str5,str6,str7:string;
begin

    T_name := trim(rZEDIT1.Text);
    if f_645.RzPageControl3.ActivePageIndex = 0 then
    begin
       str1 := TRIM(Rzcombobox3.Text);
       delete(str1,5,(length(str1)-4));
       
       str2 := TRIM(Rzcombobox3.Text);
       delete(str2,1,4);

       str4 := trim(Rzedit2.Text);
       delete(str4,2,(length(str4)-1));
       if str4 = '1' then
       begin
          if trim(Rzedit3.Text) = '' then
          begin
              MyMsgBox(' "数据长度"不能为空值!','系  统  错  误', 0);
              Rzedit3.SetFocus;
              exit;
          end ;
       end
       else
       begin
          str4 := '0';
       end;
       str3 :=trim(Rzedit3.Text);

       str5 := trim(Rzedit5.Text);
       delete(str5,2,(length(str5)-1));

       str6 := trim(Rzedit4.Text);
       str7 := '0';
    end
    else
    begin
       str1 := trim(Rzedit8.Text);
       if length(str1) <> 4 then
       begin
          MyMsgBox(' "命令编码"长度必须是4位!','系  统  错  误', 0);
          Rzedit8.SetFocus;
          exit;
       end;

       str2 :=  trim(Rzedit9.Text);
       if length(str2) = 0  then
       begin
          MyMsgBox(' "名称"不能为空!','系  统  错  误', 0);
          Rzedit9.SetFocus;
          exit;
       end;

       str3 :=  trim(Rzedit10.Text);
       if length(str3) =0  then
       begin
          MyMsgBox(' "数据长度"不能为空!','系  统  错  误', 0);
          Rzedit10.SetFocus;
          exit;
       end;
       if Rzcombobox4.ItemIndex <> -1  then
          str4 := inttostr(Rzcombobox4.ItemIndex)
       else
       begin
          MyMsgBox(' "块命令标识"不能为空!','系  统  错  误', 0);
          Rzcombobox4.SetFocus;
          exit;
       end;
       if Rzcombobox6.ItemIndex <> -1  then
          str5 := inttostr(Rzcombobox6.ItemIndex)
       else
       begin
          MyMsgBox(' "命令功能"不能为空!','系  统  错  误', 0);
          Rzcombobox6.SetFocus;
          exit;
       end;
       if trim(Rzcombobox5.Text) <> ''  then
          str6 := trim(Rzcombobox5.Text)
       else
       begin
          MyMsgBox(' "数据格式"不能为空!','系  统  错  误', 0);
          Rzcombobox5.SetFocus;
          exit;
       end;
       str7 := '1';
    end;

    sqlstr :='select * from '+ T_name +' where 命令 ='''+str1+'''  ' ;
    datam.ADOQ1.Close;
    datam.ADOQ1.SQL.Clear;
    datam.ADOQ1.SQL.Text :=sqlstr;
    datam.ADOQ1.Open;
    if datam.ADOQ1.RecordCount > 0  then
    begin
      if MessageDlg('该"命令"已经在"命令集"中存在,是否要更新?',mtConfirmation, [mbYes, mbNo], 0) = mrYes then
      begin
        try
          datam.ADOConnection1.BeginTrans;
          sqlstr :='update '+T_name+' set '+
                   ' 名称='''+str2+''','+
                   ' 长度='''+str3+''','+
                   ' 块标志='''+str4+''','+
                   ' 读写='''+str5+''','+

⌨️ 快捷键说明

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