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

📄 u_645_command.pas

📁 此系统完成了单向复费率电能表的抄表以及编程
💻 PAS
📖 第 1 页 / 共 5 页
字号:
unit U_645_Command;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,  RzPanel,ExtCtrls, StdCtrls, RzLabel, ImgList, Menus, ComCtrls,
  RzTreeVw, RzSplit, RzStatus, RzTabs, jpeg, RzCmboBx, RzButton, RzRadGrp,
  Mask, RzEdit, RzPopups, RzRadChk, Grids, DBGrids, DB, RzLine, Buttons,
  RzBHints, RzGrids, RzBmpBtn, RzBorder, DBCtrls, RzBckgnd, StrUtils,
  RzDBGrid, RzSpnEdt, RzLstBox, RzChkLst,IniFiles,TComm1, RzPrgres, ADODB;

type
  TMyCustomDBGrid = class(TCustomDBGrid);
  
type
  TF_645 = class(TForm)
    RzPanel2: TRzPanel;
    RzStatusBar1: TRzStatusBar;
    ImageList1: TImageList;
    RzSizePanel2: TRzSizePanel;
    RzTreeView1: TRzTreeView;
    RzStatusPane1: TRzStatusPane;
    RzStatusPane2: TRzStatusPane;
    RzPanel1: TRzPanel;
    RzBalloonHints1: TRzBalloonHints;
    RzPageControl1: TRzPageControl;
    TabSheet1: TRzTabSheet;
    RzPanel3: TRzPanel;
    RzPageControl2: TRzPageControl;
    TabSheet5: TRzTabSheet;
    RzPanel7: TRzPanel;
    TabSheet6: TRzTabSheet;
    RzPanel8: TRzPanel;
    TabSheet7: TRzTabSheet;
    TabSheet3: TRzTabSheet;
    RzPanel5: TRzPanel;
    RzPanel10: TRzPanel;
    RzLabel2: TRzLabel;
    RzEdit1: TRzEdit;
    RzPanel11: TRzPanel;
    RzPanel12: TRzPanel;
    RzLabel4: TRzLabel;
    RzLabel5: TRzLabel;
    DBEdit1: TDBEdit;
    DBGrid1: TDBGrid;
    RzSizePanel3: TRzSizePanel;
    RzPageControl3: TRzPageControl;
    TabSheet8: TRzTabSheet;
    RzLabel3: TRzLabel;
    RzLabel6: TRzLabel;
    RzLabel7: TRzLabel;
    RzLabel8: TRzLabel;
    RzLabel9: TRzLabel;
    RzLabel10: TRzLabel;
    RzLabel11: TRzLabel;
    RzComboBox2: TRzComboBox;
    RzComboBox3: TRzComboBox;
    RzEdit2: TRzEdit;
    RzEdit3: TRzEdit;
    RzEdit4: TRzEdit;
    RzEdit5: TRzEdit;
    TabSheet9: TRzTabSheet;
    RzLabel14: TRzLabel;
    RzLabel15: TRzLabel;
    RzLabel16: TRzLabel;
    RzLabel18: TRzLabel;
    RzLabel19: TRzLabel;
    RzLabel17: TRzLabel;
    RzLabel20: TRzLabel;
    RzEdit8: TRzEdit;
    RzEdit10: TRzEdit;
    RzEdit9: TRzEdit;
    RzComboBox4: TRzComboBox;
    RzComboBox5: TRzComboBox;
    RzComboBox6: TRzComboBox;
    RzGroupBox5: TRzGroupBox;
    RzShapeButton1: TRzShapeButton;
    RzShapeButton2: TRzShapeButton;
    TabSheet4: TRzTabSheet;
    RzPanel6: TRzPanel;
    Image1: TImage;
    RzGroupBox1: TRzGroupBox;
    RzGroupBox2: TRzGroupBox;
    RzLabel1: TRzLabel;
    RzComboBox1: TRzComboBox;
    RzGroupBox4: TRzGroupBox;
    RzRadioButton4: TRzRadioButton;
    RzRadioButton5: TRzRadioButton;
    Edit1: TEdit;
    RzRadioGroup1: TRzRadioGroup;
    RzLabel12: TRzLabel;
    RzSeparator1: TRzSeparator;
    RzLabel13: TRzLabel;
    RzEdit6: TRzEdit;
    RzEdit7: TRzEdit;
    RzLabel21: TRzLabel;
    RzShapeButton3: TRzShapeButton;
    RzPanel4: TRzPanel;
    RzDBGrid1: TRzDBGrid;
    RzClockStatus1: TRzClockStatus;
    RzGroupBox6: TRzGroupBox;
    RzDateTimeEdit1: TRzDateTimeEdit;
    RzComboBox7: TRzComboBox;
    RzLabel22: TRzLabel;
    RzLabel23: TRzLabel;
    RzDateTimeEdit2: TRzDateTimeEdit;
    RzDateTimeEdit3: TRzDateTimeEdit;
    RzDateTimeEdit4: TRzDateTimeEdit;
    RzSpinEdit1: TRzSpinEdit;
    RzBorder1: TRzBorder;
    RzBitBtn1: TRzBitBtn;
    RzBitBtn2: TRzBitBtn;
    RzSplitter1: TRzSplitter;
    RzCheckList1: TRzCheckList;
    RzGroupBox7: TRzGroupBox;
    RzSeparator2: TRzSeparator;
    RzLabel24: TRzLabel;
    RzMaskEdit2: TRzMaskEdit;
    RzMaskEdit1: TRzMaskEdit;
    RzEdit11: TRzEdit;
    RzLabel25: TRzLabel;
    RzSplitter2: TRzSplitter;
    RzDBGrid2: TRzDBGrid;
    Memo1: TRzMemo;
    PopupMenu1: TPopupMenu;
    N4: TMenuItem;
    N5: TMenuItem;
    RzPanel9: TRzPanel;
    RzSplitter3: TRzSplitter;
    RzCheckList2: TRzCheckList;
    Edit2: TEdit;
    RzGroupBox8: TRzGroupBox;
    RzLabel27: TRzLabel;
    RzComboBox8: TRzComboBox;
    RzCheckBox1: TRzCheckBox;
    RzEdit12: TRzEdit;
    DBEdit2: TDBEdit;
    RzBorder2: TRzBorder;
    RzLabel26: TRzLabel;
    RzLabel28: TRzLabel;
    RzGroupBox3: TRzGroupBox;
    RzRadioButton1: TRzRadioButton;
    RzRadioButton2: TRzRadioButton;
    RzRadioButton3: TRzRadioButton;
    RzBitBtn3: TRzBitBtn;
    RzSeparator3: TRzSeparator;
    RzSeparator4: TRzSeparator;
    RzPanel13: TRzPanel;
    RzRadioButton8: TRzRadioButton;
    RzRadioButton9: TRzRadioButton;
    RzStatusPane3: TRzStatusPane;
    RzProgressBar1: TRzProgressBar;
    RzPanel14: TRzPanel;
    RzRadioButton6: TRzRadioButton;
    RzRadioButton7: TRzRadioButton;
    TabSheet2: TRzTabSheet;
    RzPanel15: TRzPanel;
    RzGroupBox9: TRzGroupBox;
    RzSeparator5: TRzSeparator;
    RzLabel29: TRzLabel;
    RzLabel30: TRzLabel;
    RzEdit13: TRzEdit;
    RzMaskEdit3: TRzMaskEdit;
    RzMaskEdit4: TRzMaskEdit;
    RzPanel17: TRzPanel;
    RzRadioButton12: TRzRadioButton;
    RzRadioButton13: TRzRadioButton;
    RzStringGrid1: TRzStringGrid;
    RzBmpButton1: TRzBmpButton;
    RzBmpButton2: TRzBmpButton;
    ListBox1: TListBox;
    RzBmpButton3: TRzBmpButton;
    RzBmpButton4: TRzBmpButton;
    Label1: TLabel;
    Edit3: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure RzTreeView1Change(Sender: TObject; Node: TTreeNode);
    procedure RzRadioButton4Click(Sender: TObject);
    procedure RzComboBox1Change(Sender: TObject);
    procedure RzEdit1KeyPress(Sender: TObject; var Key: Char);
    procedure RzPageControl1Change(Sender: TObject);
    procedure RzComboBox2Change(Sender: TObject);
    procedure RzComboBox3Change(Sender: TObject);
    procedure RzShapeButton1Click(Sender: TObject);
    procedure RzEdit3KeyPress(Sender: TObject; var Key: Char);
    procedure RzShapeButton2Click(Sender: TObject);
    procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure DBGrid1CellClick(Column: TColumn);
    procedure RzRadioGroup1Click(Sender: TObject);
    procedure RzPageControl2Change(Sender: TObject);
    procedure RzComboBox7Change(Sender: TObject);
    procedure RzShapeButton3Click(Sender: TObject);
    procedure RzBitBtn1Click(Sender: TObject);
    procedure RzRadioButton6Click(Sender: TObject);
    procedure RzRadioButton7Click(Sender: TObject);
    procedure RzLabel26MouseEnter(Sender: TObject);
    procedure RzLabel26MouseLeave(Sender: TObject);
    procedure RzCheckBox1Click(Sender: TObject);
    procedure DBEdit2Change(Sender: TObject);
    procedure RzBitBtn2Click(Sender: TObject);
    procedure RzRadioButton1Click(Sender: TObject);
    procedure RzRadioButton2Click(Sender: TObject);
    procedure RzRadioButton3Click(Sender: TObject);
    procedure RzLabel26Click(Sender: TObject);
    procedure RzBitBtn3Click(Sender: TObject);
    procedure RzComboBox8Change(Sender: TObject);
    procedure RzEdit11Exit(Sender: TObject);
    procedure RzRadioButton9Click(Sender: TObject);
    procedure RzRadioButton8Click(Sender: TObject);
    procedure RzRadioButton12Click(Sender: TObject);
    procedure RzRadioButton13Click(Sender: TObject);
    procedure RzLabel31Click(Sender: TObject);
    procedure RzCheckList2MouseLeave(Sender: TObject);
    procedure RzBmpButton1Click(Sender: TObject);
    procedure RzBmpButton4Click(Sender: TObject);
    procedure RzBmpButton2Click(Sender: TObject);

  private
     ck:string;
    { Private declarations }
  public

    { Public declarations }

    sound:Boolean;                  //声音标志  1开;0关
    option,m_sum,command_sum,com_flag:integer;    //树选项,总表型号数,
    //单命令合计数目 ,端口开关标志,1:开;0关
    COPY_fs :string;        //抄表方式
    S_meun :string;                 //菜单
    A_command : array[1..1000] of string;
    lst: TStringList;
    f_ini:tinifile ;
    list2_sum:integer;
    baud:Tbaudrate;
    com_NO:Tcomportnumber;
    party:Tparity;

    procedure Tree_show;
    function  Tree_Boolean(str:string):Boolean;

    procedure Dbgrid_show(tablename:string);
    procedure MyGet(Sender: TField; var Text: String; DisplayText: Boolean);
    procedure disposal_data(
              bh:string;revc:string;ymgs:string;len_data:integer;k_flag:string;
              lrrq:string;cbrq:string;autosave:Boolean);
    procedure movedata(sourcetable:string;objecttable:string);
    procedure checklist1RF;
    procedure checklist2RF;
    //function ComOut(aa: string; bb: integer): longint; stdcall; external 'rs485.dll';
  end;

var
  F_645: TF_645;
  
implementation

uses U_function, U_data, U_bcset;

{$R *.dfm}

procedure TF_645.checklist1RF;
var
   i,j:integer;
   sqlstr,str:string;
begin
{  sqlstr:='ss';
  Rzchecklist1.AddEx(sqlstr,false,false);
  Rzchecklist1.AddEx(sqlstr,false,true);
  Rzchecklist1.AddEx(sqlstr,false,true);
  Rzchecklist1.ItemToGroup(0);
  }
  j:=1;
  F_645.Rzchecklist1.Items.Clear;

  str:='单命令集';
  F_645.Rzchecklist1.Items.Add(str);
  F_645.Rzchecklist1.ItemToGroup(0);

  sqlstr:='select * from '+trim(F_645.edit1.Text)+' where 块标志='''+'0'+''' order by 命令';
  with datam.ADOQ1 do
  begin
    close;
    sql.Clear;
    sql.Add(sqlstr);
    open;
  END;
  i := datam.ADOQ1.RecordCount;
  command_sum :=i;
  datam.ADOQ1.first;
  while NOT datam.ADOQ1.Eof do
  begin
    //存储命令
    A_command[j] := trim(datam.ADOQ1.fieldbyname('命令').AsString);
    inc(j);
    //
    str := trim(datam.ADOQ1.fieldbyname('命令').AsString)+TRIM(datam.ADOQ1.fieldbyname('名称').AsString);
    F_645.Rzchecklist1.Items.Add(str);
    datam.ADOQ1.Next;
  end;

  str:='块命令集';
  F_645.Rzchecklist1.Items.Add(str);
  F_645.Rzchecklist1.ItemToGroup(i+1);

  sqlstr:='select * from '+trim(F_645.edit1.Text)+' where 块标志='''+'1'+''' order by 命令 ';
  with datam.ADOQ1 do
  begin
    close;
    sql.Clear;
    sql.Add(sqlstr);
    open;
  END;
  i := i+datam.ADOQ1.RecordCount;
  datam.ADOQ1.first;
  while NOT datam.ADOQ1.Eof do
  begin
    //存储命令
    A_command[j] := trim(datam.ADOQ1.fieldbyname('命令').AsString);
    inc(j);

    str := datam.ADOQ1.fieldbyname('命令').AsString+TRIM(datam.ADOQ1.fieldbyname('名称').AsString);
    F_645.Rzchecklist1.Items.Add(str);
    datam.ADOQ1.Next;
  end;
  F_645.edit2.Text := inttostr(i); //存储命令数目

  F_645.rzmaskedit1.Text:=formatdatetime('yyyy-mm-dd hh:nn:ss',now);
  F_645.rzmaskedit2.Text:=formatdatetime('yyyy-mm-dd hh:nn:ss',now);

end;

procedure TF_645.checklist2RF;
var
  sqlstr,str,str1:string;
  i,j,h:integer;

   filename :string;
   k,m:integer;
begin
  Rzstringgrid1.Cells[0,0]:='序号';
  Rzstringgrid1.Cells[1,0]:='命令';
  Rzstringgrid1.Cells[2,0]:='参数';

  Rzchecklist2.Items.Clear;
  str:='编程命令集';
  Rzchecklist2.Items.Add(str);
  Rzchecklist2.ItemToGroup(0);

  sqlstr:='select * from '+trim(edit1.Text)+' where 读写='''+'1'+''' order by 命令';
  with datam.ADOQ1 do
  begin
    close;
    sql.Clear;
    sql.Add(sqlstr);
    open;
  END;

  h := 1;
  edit2.Text :='0';
  datam.ADOQ1.first;
  while NOT datam.ADOQ1.Eof do
  begin

    str := trim(datam.ADOQ1.fieldbyname('命令').AsString);
    str := str+TRIM(datam.ADOQ1.fieldbyname('名称').AsString);
    Rzchecklist2.Items.Add(str);
    edit2.Text := inttostr(strtoint(trim(edit2.Text))+1);
    inc(h);

    str1 := trim(datam.ADOQ1.fieldbyname('命令').AsString);
    listbox1.Items.Clear;
    if str1 ='C32X' then
    begin
      h := h-1;
      Rzchecklist2.Items.Delete(h);

      str1:='年时区命令集';
      Rzchecklist2.Items.Add(str1);
      Rzchecklist2.ItemToGroup(h);
            
      Rzchecklist2.Items.Add(str);
      inc(h);
       //读取ini文件数据
      filename:=extractfilepath(paramstr(0))+F_645.EDIT1.TEXT+'_programme.ini';   //////得到完整的INI文件路径名///
      f_645.f_ini:=tinifile.Create(filename);
      if fileexists(Filename) then
      begin
        f_645.f_ini.readsection('年时区',f_645.ListBox1.Items);
        m := f_645.ListBox1.Items.Count;
        IF  m <> 0 then
        begin
          for i := 1 to m do
          begin
             str := trim(f_645.f_ini.ReadString('年时区',listbox1.Items.Strings[i-1], 'E'));
             delete(str,1,6);
             Str := trim(listbox1.Items.Strings[i-1])+str ;

             Rzchecklist2.Items.Add(trim(str));
          end;
        end
        else
        begin
           MyMsgBox('【年时区】编程项设置不完整!','系  统  错  误', 0);
           exit;
        end;
      end;
      edit2.Text := inttostr(strtoint(trim(edit2.Text))+m);
      h := h+m+1;
    end
    else if str1 ='C3XX' then
    BEGIN
      h := h-1;
      Rzchecklist2.Items.Delete(h);

      str1:='日时段命令集';
      Rzchecklist2.Items.Add(str1);
      Rzchecklist2.ItemToGroup(h);

      Rzchecklist2.Items.Add(str);
      inc(h);
       //读取ini文件数据
      filename:=extractfilepath(paramstr(0))+F_645.EDIT1.TEXT+'_programme.ini';   //////得到完整的INI文件路径名///
      f_645.f_ini:=tinifile.Create(filename);
      if fileexists(Filename) then
      begin

⌨️ 快捷键说明

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