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

📄 unit1.pas

📁 delphi开发的基于 gprsd数据采集程序
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls,TermSet, ComCtrls,Term,Contnrs,shellapi,
  ImgList, Menus;
const
   mousemsg = wm_user + 345; //自定义消息,用于处理用户在图标上点击鼠标的事件
   iid = 100;
type
  TMainForm = class(TForm)
    Timer1: TTimer;
    Button2: TButton;
    Label1: TLabel;
    PopupMenu1: TPopupMenu;
    menu_start: TMenuItem;
    menu_stop: TMenuItem;
    N1: TMenuItem;
    menu_status: TMenuItem;
    ImageList1: TImageList;
    N2: TMenuItem;
    Timer2: TTimer;
    Timer3: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure menu_startClick(Sender: TObject);
    procedure menu_stopClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure menu_statusClick(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure Timer3Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    term_set:TTermSet;

    //procedure add_term_to_listview;

    procedure AppMinimize(Sender: TObject);
    procedure mousemessage(var message: tmessage); message mousemsg;
  end;

var
  MainForm: TMainForm;
  time_count:integer;
  ntida: TNotifyIcondata;
  form3_show:boolean;
implementation

uses TcpMod, Unit2, Unit3, record_define, Gprs_Interface;

{$R *.dfm}

procedure TMainForm.FormCreate(Sender: TObject);
var
    hwnd1:hwnd;
    icc:TIcon;
begin
  //****************************************************************
  //added for opc Server  2004-11-13 by HF
    GPRS_Intf:= TGPRS_Intf.Create;
    GPRS_Intf.Reg(Application.ExeName);
  //****************************************************************
    write_text('启动程序 '+FormatDateTime('yyyy-mm-dd hh:mm:ss', Now));

    term_set:=TTermSet.Create;
    term_set.init;
    form3_show:=false;

    hwnd1:=findwindow('Progman',nil);
     if hwnd1<>0 then
     begin
         ntida.cbSize := sizeof(tnotifyicondataa);
         //指定ntida的长度
         ntida.Wnd := handle;
         //取应用程序主窗体的句柄
         ntida.uID := iid;
         //用户自定义的一个数值,在uCallbackMessage参数指定的消息中使用
         ntida.uFlags := nif_icon or nif_tip or nif_message;
         //指定在该结构中uCallbackMessage、hIcon和szTip参数都有效
         ntida.uCallbackMessage := mousemsg;
         //指定的窗口消息
         //ntida.hIcon := Icon.handle;
         icc:=TIcon.Create;
         self.ImageList1.GetIcon(1,icc);
         ntida.hIcon :=icc.Handle;
         //指定系统状态栏显示应用程序的图标句柄
         ntida.szTip := '数据采集';
         //当鼠标停留在系统状态栏该图标上时,出现该提示信息
          shell_notifyicon(NIM_ADD, @ntida);
         //在系统状态栏增加一个新图标

         setwindowlong(application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
     end;

end;

procedure TMainForm.FormDestroy(Sender: TObject);
begin
  //****************************************************************
  //added for opc Server  2004-11-13 by HF
  if Assigned(GPRS_Intf) then
    GPRS_Intf.Free;
  //****************************************************************
    term_set.Destroy;
end;

procedure TMainForm.Timer1Timer(Sender: TObject);
begin
    time_count:=time_count+Timer1.Interval div 1000;
    time_count:=time_count mod 600;
    term_set.check_task;
    if time_count=0 then
        TcpModule.refresh;
end;


procedure TMainForm.Button2Click(Sender: TObject);
begin
     //self.term_set.check_task;
     //self.Timer1.Enabled:=true;
end;

{procedure TMainForm.add_term_to_listview;
var
    i:integer;
    listitem:TListItem;
     term_obj:TTerm;
begin
    ListView1.Clear;
    for i:=0 to term_set.members.Count-1 do
    begin
        term_obj:=TTerm(term_set.members.Items[i]);
        listitem:=mainform.ListView1.Items.Add;
        listitem.Caption:=inttostr(term_obj.gprs_id);
        listitem.SubItems.Add(inttostr(term_obj.term_id));
        listitem.SubItems.Add(inttostr(term_obj.app_id));
        listitem.SubItems.Add(inttostr(term_obj.packet_inteval));
        listitem.SubItems.Add(inttostr(term_obj.summit_type));
        listitem.SubItems.Add(inttostr(term_obj.second_count));
    end;
end; }

procedure TMainForm.AppMinimize(Sender: TObject);
begin
    inherited;
    self.Hide;
end;

procedure TMainForm.mousemessage(var message: tmessage);
var
   mousept: TPoint;
begin
    inherited;
    if message.LParam ={WM_LBUTTONDBLCLK}WM_RBUTTONDOWN  then
    begin
        getcursorpos(mousept); //获取光标位置
        setforegroundwindow(handle);
        popupmenu1.popup(mousept.x, mousept.y);
    end;
    message.Result := 0;
end;

procedure TMainForm.menu_startClick(Sender: TObject);
var
     icc:TIcon;
begin
     self.Timer1.Enabled:=true;

     icc:=TIcon.Create;
     self.ImageList1.GetIcon(1,icc);
     ntida.hIcon :=icc.Handle;
     ntida.szTip :='数据采集';
     shell_notifyicon(NIM_MODIFY, @ntida);
end;

procedure TMainForm.menu_stopClick(Sender: TObject);
var
     icc:TIcon;
begin
     self.Timer1.Enabled:=false;
     
     icc:=TIcon.Create;
     self.ImageList1.GetIcon(0,icc);
     ntida.hIcon :=icc.Handle;
     ntida.szTip :='数据采集停止';
     shell_notifyicon(NIM_MODIFY, @ntida);
end;

procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    Shell_NotifyIcon(NIM_DELETE,@ntida)
end;

procedure TMainForm.menu_statusClick(Sender: TObject);
begin
    self.Close;
    write_text('退出程序 '+FormatDateTime('yyyy-mm-dd hh:mm:ss', Now));
end;

procedure TMainForm.Timer2Timer(Sender: TObject);
begin
    form2.Show;
    self.Timer2.Enabled:=false;
end;

procedure TMainForm.N2Click(Sender: TObject);
begin
    Application.CreateForm(TForm3, Form3);
    Form3.Show;
    form3_show:=true;
end;

procedure TMainForm.Timer3Timer(Sender: TObject);
var
    i:integer;
begin
    for i:=0 to self.term_set.members.Count-1 do
        TTerm(self.term_set.members.Items[i]).write_info_data;
end;

end.

⌨️ 快捷键说明

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