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

📄 pasmain.pas

📁 Monitor.dfm Meter.dpr pasMain.pas
💻 PAS
📖 第 1 页 / 共 4 页
字号:
unit pasMain;
interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ActnList, Menus, ImgList, OleCtrls, MSCommLib_TLB, ComCtrls, ToolWin,
  ExtCtrls, StdCtrls,DB, Buttons,inifiles,dbtables;
//  ExtCtrls, RThread, StdCtrls,DB, Buttons;
const
        CM_RESTORE=WM_USER+$1000;
        APPNAME='Meter';
type
    TfrmMain = class(TForm)

    StatusBar: TStatusBar;
    CoolBar1: TCoolBar;
    MainMenu: TMainMenu;
    Setup: TMenuItem;
    EditInfo: TMenuItem;
    EditUser: TMenuItem;
    S1: TMenuItem;
    SetupPtr: TMenuItem;
    PrintInfo: TMenuItem;
    ImportData: TMenuItem;
    ExportData: TMenuItem;
    S3: TMenuItem;
    ExitS: TMenuItem;
    Control: TMenuItem;
    Readkwh: TMenuItem;
    Monitorkwh: TMenuItem;
    N3: TMenuItem;
    AutoON: TMenuItem;
    AutoOFF: TMenuItem;
    SetupTiming: TMenuItem;
    RunTimg: TMenuItem;
    Other: TMenuItem;
    Help: TMenuItem;
    N6: TMenuItem;
    About: TMenuItem;
    ToolBarImage: TImageList;
    MenuAction: TActionList;
    ExitSys: TAction;
    InfoClick: TAction;
    ToolBar1: TToolBar;
    Consumer_T: TToolButton;
    Setup_T: TToolButton;
    Download_T: TToolButton;
    Monitor_T: TToolButton;
    Print_T: TToolButton;
    Dialog_T: TToolButton;
    Dial_T: TToolButton;
    Help_T: TToolButton;
    Transformer_T: TToolButton;
    TimerOut: TTimer;
    MSComm: TMSComm;
    S2: TMenuItem;
    Password: TMenuItem;
    S4: TMenuItem;
    SetupParam: TMenuItem;
    R1: TMenuItem;
    StopTiming: TMenuItem;
    N1: TMenuItem;
    ChartBtn: TToolButton;
    Read_kwh: TAction;
    SetParam: TAction;
    PrintDialog: TPrintDialog;
    PrinterSetupDialog: TPrinterSetupDialog;
    RunTestTimer: TTimer;
    DeleteHistoryMenu: TPopupMenu;
    DeleteHistory: TMenuItem;
    DeleteTSEGMenu: TPopupMenu;
    N10: TMenuItem;
    PrintHistory: TMenuItem;
    price_menu: TMenuItem;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    Analyze1: TMenuItem;
    CountLineWaste1: TMenuItem;
    CustomManthlyConsumption1: TMenuItem;
    Custom1: TMenuItem;
    N9: TMenuItem;
    N4: TMenuItem;
    StatisticConsumer: TAction;
    N2: TMenuItem;
    PrintAll: TAction;
    OnOffMenu: TPopupMenu;
    DialingtoConnection1: TMenuItem;
    HanguptoDisconnection1: TMenuItem;
    ConnectLine: TAction;
    Image1: TImage;
    ToolButton1: TToolButton;
    N7: TMenuItem;
    HotImageList: TImageList;
    StatisticLineWastage1: TMenuItem;
    N5: TMenuItem;
    PrintMenu: TPopupMenu;
    PrintConsumerMenu: TMenuItem;
    PowerOnAndOff1: TMenuItem;
    PowerOnAndOff2: TMenuItem;
    Queryreaddata1: TMenuItem;
    procedure ExitSysExecute(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Download_TClick(Sender: TObject);
    procedure TimerOutTimer(Sender: TObject);
    procedure Monitor_TClick(Sender: TObject);
    procedure MSCommComm(Sender: TObject);
    procedure Consumer_TClick(Sender: TObject);
    procedure TB3Click(Sender: TObject);
    procedure Read_kwhExecute(Sender: TObject);
    procedure SaveData(Sender: TObject);
    procedure SetParamExecute(Sender: TObject);
    procedure EditInfoClick(Sender: TObject);
    procedure Transformer_TClick(Sender: TObject);
    procedure EditUserClick(Sender: TObject);
    procedure MonitorkwhClick(Sender: TObject);
    procedure Interactive1Click(Sender: TObject);
    procedure SetupPtrClick(Sender: TObject);
    procedure N1Click(Sender: TObject);

    procedure Dialog_TClick(Sender: TObject);
    procedure delay1s(sender:tobject);
    procedure SAVETN0Click(Sender: TObject);
    procedure ExportDataClick(Sender: TObject);
    procedure SetupTimingClick(Sender: TObject);
    procedure N9Click(Sender: TObject);
    procedure DeleteHistoryClick(Sender: TObject);
    procedure N10Click(Sender: TObject);
    procedure RunTimgClick(Sender: TObject);
    procedure RunTestTimerTimer(Sender: TObject);
    procedure StopTimingClick(Sender: TObject);
    procedure AutoONClick(Sender: TObject);
    procedure AutoOFFClick(Sender: TObject);
    procedure price_menuClick(Sender: TObject);
    procedure StatusBarDrawPanel(StatusBar: TStatusBar;
    Panel: TStatusPanel; const Rect: TRect);
    procedure FormShow(Sender: TObject);
    procedure AboutClick(Sender: TObject);
    procedure CountLineWasteClick(Sender: TObject);
    procedure CustomManthlyConsumption1Click(Sender: TObject);
    procedure StatisticConsumerExecute(Sender: TObject);
    procedure PrintAllExecute(Sender: TObject);
    procedure HanguptoDisconnection1Click(Sender: TObject);
    procedure ConnectLineExecute(Sender: TObject);
    procedure StatisticLineWastage1Click(Sender: TObject);
    procedure ImportDataClick(Sender: TObject);
    procedure HelpClick(Sender: TObject);
    procedure PrintConsumerMenuClick(Sender: TObject);
    procedure Help_TClick(Sender: TObject);
    procedure PasswordClick(Sender: TObject);
    procedure PowerOnAndOff1Click(Sender: TObject);
    procedure PowerOnAndOff2Click(Sender: TObject);
    procedure Queryreaddata1Click(Sender: TObject);

  private
    { Private declarations }
    //RT: ReadThread;
    NewColumn: TListColumn;
    ListItem: TListItem;

    Prog: TProgressBar;
    DrawRect: TRect;

  public
        procedure Createparams(var params:Tcreateparams);override;
        procedure RestoreRequest(var message:TMessage);message CM_restore;
    { Public declarations }
  end;

var
    frmMain: TfrmMain;
    GetCompletedF: integer;
    GetData: string;
    //oldwindowproc:pointer;
    //mymsg:LONGINT;
    sortflag: integer;
    TimeOutF: Boolean;
    //rtConnect: Integer;

implementation

uses Info, ReadData, InterCom, DM,  Setting, Monitor, Moduler,
  Promot, Autotest, Report, Global, Report2, Price,
  About, Err, input, OUTPUT, tpwin, choose, reportconsumer, Logindlg,
  security, power, Alert;

{$R *.DFM}
procedure Tfrmmain.CreateParams(var params:Tcreateparams);
begin
        inherited createparams(params);
        params.WinClassName:='Meter';
end;
procedure Tfrmmain.restorerequest(var message:Tmessage);
begin
        messagebox(handle,'程序'''+appname+'''已经运行了.','信息',mb_ok+mb_iconinformation+mb_systemmodal);
        if isiconic(application.handle)=true then
                application.restore
        else
                application.bringtofront;
        
end;

procedure TfrmMain.ExitSysExecute(Sender: TObject);
begin
    Timerout.Enabled := False;
    TimeoutF := True;
    ActiveCommand := False;
    DialExit := 1;

    frmMain.Close;

    Application.Terminate ;
end;


procedure TfrmMain.FormCreate(Sender: TObject);
var
        myinifile:Tinifile;
        filename,vs:string;
        dbpath:string;
        i:integer;
        finddb:boolean;
        tempname:string;
        mystringlist:tstringlist;

begin
        finddb:=false;
        filename:=application.ExeName ;
        tempname:=extractfiledir(filename)+'\database';
        filename:=extractfiledir(filename)+'\readme.ini';
        myinifile:=Tinifile.Create(filename);
        vs:=myinifile.Readstring('数据库','DB NAME','');
        if vs='' then vs:='meter4';
        dbpath:=myinifile.Readstring('数据库','PATH',tempname);
        if dbpath='' then dbpath:=tempname;
        dbname:=vs;
        MyStringList := TStringList.Create;

        try
        Session.GetAliasNames(MyStringList);

        for I := 0 to MyStringList.Count - 1 do
                if dbname=MyStringList[I] then finddb:=true;


        finally
        MyStringList.Free;
        end;
        if finddb=false then
        begin
                with session do
                begin
                        try
                                session.AddStandardAlias(dbname,dbpath,'paradox');
                                session.SaveConfigFile;
                        finally
                                //showmessage('创建错误');
                        end;
                end;
         end;

    MSComm.PortOpen := TRUE;
    DialRS232 := 0;
    rtconnect:=0;
    RUNFLAG := USEREDIT;
    ActiveCommand := TRUE;
    MonitorFlag:=False;
    SearchFlag:=False;
    TimeoutF := FALSE;
    Auto := 0;
    AutoCRM :=0;
    DialOK:='';
    printitem:=0;
end;


procedure TfrmMain.MSCommComm(Sender: TObject);
//var
//StrTest: string;

begin

//    GetData := '';
//    GetData := MSComm.Input;
//    Command.Memo1.Lines[Command.Memo1.Lines.Count] := GetData;
//    StrTest := copy(GetData, 2, 2);
//    if StrTest = '00' then GetCompletedF := 1;

end;

procedure TfrmMain.Download_TClick(Sender: TObject);
begin

//Get ProgessBar Parameters
    with Prog do
    begin
        top := DrawRect.top;
        left := DrawRect.left;

        width := DrawRect.Right - DrawRect.Left;
        height := DrawRect.Bottom - DrawRect.Top;

        Visible := True;
        Parent := StatusBar;
        Smooth := True;
    end;


    ChartFlag := COMMANDTN0;
//Automatic Meter Reading
    frmMain.Read_kwhExecute(Sender);

end;


procedure TfrmMain.TimerOutTimer(Sender: TObject);
begin
    TIMING:=1;
    TimeOutF := TRUE;
end;

procedure TfrmMain.Monitor_TClick(Sender: TObject);
begin
    if CHARTflag<>useredit then exit;
    RUNFLAG := MONITORING;
    Monitorflag:=true;
    Monitor_T.Enabled := FALSE;
    //Close Info, DataText
    frmInfo.ListView1.Visible := FALSE;
    frmInfo.Panel1.Visible := FALSE;

    //Show image of Watt-hour meter
    frmInfo.MonitorPanel.Top := 0;
    frmInfo.MonitorPanel.Visible := TRUE;
end;


procedure TfrmMain.TB3Click(Sender: TObject);
begin
    frmSetup.ShowModal;
end;

procedure TfrmMain.Read_kwhExecute(Sender: TObject);
var
    I, Num, ErrorNum: Integer;
    rStr,tempstr: String;
const
    Names: array[0..17, 0..2] of string = (
    ('表 号', '100', '0'),
    ('中继标志', '26', '1'),
    ('成功标志', '26', '1'),
    ('当前总电量', '73', '2'),
    ('上次总电量', '73', '2'),
    ('用电量', '73', '2'),
    ('当前峰电量', '73', '2'),
    ('当前平电量', '73', '2'),
    ('当前谷电量', '73', '2'),
    ('当前尖电量', '73', '2'),
    ('量程', '0', '2'),
    ('脉冲常数', '0', '2'),
    ('冻结电量', '73', '2'),
    ('相位', '42', '1'),
    ('中继深度', '0', '1'),
    ('中继表号', '0', '1'),
    ('抄表因子', '0', '1'),
    ('读表时间', '120', '0')
    );

begin
    if frmRead.DataPanel.Visible = TRUE then frmRead.DataPanel.Visible :=False;
    Download_T.Enabled := FALSE;
    frmRead.Caption := 'Automatic Meter Reading Window [' + dNameStr + ']';

//Change Items Nane
    with frmRead.DataListView do
    begin
        Items.BeginUpdate;
        Items.Clear;
        Columns.Clear;

        //Add new column
        for I := Low(Names) to High(Names) do
        begin
            NewColumn := Columns.Add;
            NewColumn.Width := StrToInt(Names[I][1]);
            NewColumn.Caption := Names[I][0];
            NewColumn.ImageIndex := -1;

            case StrToInt(Names[I][2]) of
            0: NewColumn.Alignment := (taLeftJustify);
            1: NewColumn.Alignment := (taCenter);
            2: NewColumn.Alignment := (taRightJustify);
            end;
        end;
        NewColumn.AutoSize := TRUE;
        Items.EndUpdate;

⌨️ 快捷键说明

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