亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? main.pas.~118~

?? 給出一個(gè)工業(yè)PLC聯(lián)網(wǎng)監(jiān)控的例子
?? ~118~
?? 第 1 頁 / 共 2 頁
字號(hào):
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ExtCtrls, SPComm, ComCtrls, ToolWin, ImgList, StdCtrls,
	RzPanel, RzButton, Buttons,  cmdHeader,DBCtrls, Mask, Registry,DB, ADODB, Grids, DBGrids,
  RzGrids, RzBorder, RzLabel, RzEdit, RzDTP;
type
	TUnitDevice=Record
		PWSUint:integer;
		PWSName:string[25];
		Addr:integer;
		Name:string[25];
		Value,
		Max,
		Min:word;
		CommErr:string[25];
		Enabled:boolean;
	end;
	TProjectInfo=record
		prjName,  //SaveDataTime, ComPort, BaundRate
		cPort,
		Baud:string;
    sTime, // 保存時(shí)間長度間隔多少分鐘  最短5分鐘
		defWin:integer;
    SavDataTime:TDateTime;//保存數(shù)據(jù)的時(shí)間坐標(biāo)
	end;
	TSynComm=record  				//設(shè)備采樣同步標(biāo)志體
		CommErrCount:integer; //設(shè)備通訊失敗計(jì)數(shù)器
		CurrentAddr,					//當(dāng)前通訊地址
		CurrentUnit:integer;  //當(dāng)前PWS單元號(hào)
		NextAddr:Boolean;			//是否允許采集下個(gè)地址信息
		U_ID:integer;				  //巡檢計(jì)數(shù)器標(biāo)志
	end;
	TfrmMain = class(TForm)
    Comm1: TComm;
    Timer1: TTimer;
    meuMain: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N10: TMenuItem;
    N11: TMenuItem;
    N12: TMenuItem;
    N19: TMenuItem;
    N20: TMenuItem;
    SB1: TStatusBar;
    imgList: TImageList;
    RzToolbar1: TRzToolbar;
    btnToolLogin: TRzToolButton;
    RzSpacer1: TRzSpacer;
    btnStart: TRzToolButton;
    btnStop: TRzToolButton;
    RzSpacer2: TRzSpacer;
    RzSpacer3: TRzSpacer;
    btnClose: TRzToolButton;
    Panel1: TPanel;
    BitBtn1: TBitBtn;
    DataSource1: TDataSource;
    adoDBSrc: TADODataSet;
    DBGrid2: TDBGrid;
    Bevel2: TBevel;
    Bevel1: TBevel;
    Image1: TImage;
    Label1: TLabel;
    Label2: TLabel;
    lblConfig: TLabel;
    N9: TMenuItem;
    meuStart: TMenuItem;
    N25: TMenuItem;
    meuStop: TMenuItem;
    RzSpacer4: TRzSpacer;
    Panel3: TPanel;
    PB1: TProgressBar;
    lblRecived: TEdit;
    Panel2: TPanel;
    Bevel3: TBevel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    lblFirstRun: TLabel;
    edtPwd: TEdit;
    cbxUser: TComboBox;
    btnLogin: TButton;
    btnLogCancel: TButton;
    Panel4: TPanel;
    GroupBox1: TGroupBox;
    Label9: TLabel;
    Label10: TLabel;
    RzLabel1: TRzLabel;
    RzLEDDisplay1: TRzLEDDisplay;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    trvAllDev: TTreeView;
    Label6: TLabel;
    Label7: TLabel;
    edtDecStatus: TEdit;
    Bevel4: TBevel;
    Bevel5: TBevel;
    TrayIcon1: TTrayIcon;
    meoRunEvent: TRzMemo;
    txtUnitNo: TStaticText;
    txtDevName: TStaticText;
    txtDevAddrName: TStaticText;
    N6: TMenuItem;
    meuSereach: TMenuItem;
    RzURLLabel1: TRzURLLabel;
    Timer2: TTimer;
    procedure Timer2Timer(Sender: TObject);
    procedure meuSereachClick(Sender: TObject);
    procedure btnToolLoginClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btnLogCancelClick(Sender: TObject);
    procedure lblRecivedChange(Sender: TObject);
    procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
      BufferLength: Word);
    procedure Timer1Timer(Sender: TObject);
    procedure meuStopClick(Sender: TObject);
    procedure meuStartClick(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure btnLoginClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure N10Click(Sender: TObject);
    procedure N8Click(Sender: TObject);
    procedure N7Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
	private
    procedure savDataFromTreeNode;
		procedure prcmenu(meuInfo,DBSql:string);
		function  CheckUser:boolean;
		procedure SetCommPort(cPort,Baud:string);//配置通訊端口
		procedure DrawTreeNode;
    procedure DrawTreeNodeValue;
    procedure UpdateMenu(Fun_ID:integer);
    procedure RunOnOff(runon:boolean);
		{ Private declarations }
	public
		{ Public declarations }
  end;

var
  frmMain: TfrmMain;
	PwsU:array of TUnitDevice;//地址信息  動(dòng)態(tài)數(shù)組使用時(shí)采用 SetLength 初始化
	VAdd:array of integer;//有效地址數(shù)組
	AddrCount:integer;
	RegisterAddrCount:integer=0;//有效地址總數(shù)

	prjInfo:TProjectInfo;//工程信息
	mSynComm:TSynComm;   //設(shè)備采樣同步標(biāo)志體
  CanOP:boolean=False;
  Manger:Boolean=False;

implementation

{$R *.dfm}

procedure TfrmMain.BitBtn1Click(Sender: TObject);
begin
	Panel1.Visible:=False;
	if adoDBSrc.Active then
	begin
		adoDBSrc.Refresh;
		adoDBSrc.Close;
	end;
	Panel4.Align:=alClient;
	Panel4.Visible:=True;
end;

procedure TfrmMain.btnLogCancelClick(Sender: TObject);
begin
 	Panel2.Visible:=False;
  Panel2.SendToBack;
  CanOP:=False;
	SB1.Panels[9].Text:='還未登錄......'; 
end;

procedure TfrmMain.btnLoginClick(Sender: TObject);
begin
	if CheckUser then
	begin
		Panel2.Visible:=False;
    Panel2.SendToBack;
		Panel4.Align:=alClient;
		Panel4.Visible:=True;
    CanOP:=True;
		SetCommPort(prjInfo.cPort,prjInfo.Baud);//配置通訊端口
		SB1.Panels[9].Text:='系統(tǒng)待機(jī)中......';
    RunOnOff(False); //未開始監(jiān)控
	end;
end;

procedure TfrmMain.btnToolLoginClick(Sender: TObject);
begin //
 Panel2.BringToFront;
  Panel2.Visible:=True;
end;

function TfrmMain.CheckUser: boolean;
var
	userType:string;
  ILevel:integer;
begin
		Result:=False;
		if adoDBSrc.Active then	adoDBSrc.Close;
		adoDBSrc.CommandText:='select * from user where UserName='+''''+cbxUser.Text +'''';
		adoDBSrc.Active:=true;
		if adoDBSrc.RecordCount=0 then
		begin
			showmessage(#13+#13+'------您的用戶名輸入有錯(cuò)!------'+#13+#13);
			adoDBSrc.Active:=False;
			exit;
		end;
		if edtPwd.Text<>adoDBSrc.FieldByName('UserPass').AsString then
		begin
			showmessage('密碼輸入錯(cuò)誤!');
			adoDBSrc.Active:=False;
			exit;
		end	else begin
      ILevel:=adoDBSrc.FieldByName('userType').AsInteger;
      UpdateMenu(ILevel);
			if adoDBSrc.FieldByName('userType').AsInteger=0 then
      begin
				userType:='操作員';
        Manger:=False;
      end;
			if adoDBSrc.FieldByName('userType').AsInteger>0 then
      begin
				userType:='管理員';
        Manger:=True;
      end;
			SB1.Panels[3].Text:=userType;
			SB1.Panels[1].Text:=adoDBSrc.FieldByName('UserName').AsString;
			Result:=True;
			if adoDBSrc.Active then	adoDBSrc.Close;
		end;
end;

procedure TfrmMain.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
	BufferLength: Word);
var
	i:integer; // viewstring,
	reStr:string;
	rbuf:array[0..64] of byte;
begin
	reStr:='';
	move(buffer^,rbuf,bufferlength);
	for i:=1 to bufferlength do
		reStr:=reStr+chr(rbuf[i-1]);
	reStr:=reStr;
	lblRecived.Text:=reStr;
end;


procedure TfrmMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
 if MessageDlg('您確認(rèn)要退出本監(jiān)控系統(tǒng)嗎?',
		mtConfirmation, [mbYes, mbNo], 0, mbYes) = mrYes then
	begin
		CanClose:=True;
	end else
		CanClose:=False;
end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  UpdateMenu(-1);
end;

procedure TfrmMain.DrawTreeNode;
var
	i,ii:integer;
	Node1, Node2: TTreeNode;
	nodeFg:boolean;
	snode:string;
begin
  with trvAllDev.Items do
	begin
		Clear; { remove any existing nodes }
		for I := 0 to AddrCount - 1 do //設(shè)定值遍歷
		begin
			if PwsU[i].Enabled then
			begin
				if trvAllDev.Items.Count<1 then //還沒有根接點(diǎn)
				begin
					snode:='PWS'+inttostr(PwsU[i].PWSUint)+'-'+PwsU[i].PWSName;
					Node1 := Add(nil,snode ); { Add a root node }
					Node1.ImageIndex:=7;
					snode:=PWSU[i].Name+'['+Format('%4x',[PWSU[i].Value])+']';
					Node2:= AddChild(Node1,snode);
					Node2.ImageIndex:=25;
					//cbxSereachUnit.Items.Add(inttostr(PwsU[i].PWSUint));
				end else
				begin  //已經(jīng)有根節(jié)點(diǎn)了
					nodeFg:=False;
					Node1 := trvAllDev.Items[0];
					for Ii := 0 to trvAllDev.Items.Count - 1 do
					begin
						Node1 := trvAllDev.Items[ii];
						snode:='PWS'+inttostr(PwsU[i].PWSUint)+'-'+PwsU[i].PWSName;
						if Node1.Text=snode  then
						begin
							nodeFg:=True;//找到節(jié)點(diǎn)
							break;
						end;// //找到節(jié)點(diǎn)
					end;//遍歷結(jié)束
					if not nodeFg then //遍歷后未找到節(jié)點(diǎn)
					begin            //新建節(jié)點(diǎn)
						snode:='PWS'+inttostr(PwsU[i].PWSUint)+'-'+PwsU[i].PWSName;
						Node1 := Add(nil, snode); { Add a root node }
						Node1.ImageIndex:=7;
						Node1.Expanded:=True;
						//cbxSereachUnit.Items.Add(inttostr(PwsU[i].PWSUint));
					end;////遍歷后未找到節(jié)點(diǎn)
          ///
					snode:=PWSU[i].Name+'['+Format('%4x',[PWSU[i].Value])+']';
					Node2:= AddChild(Node1,snode);
					Node2.ImageIndex:=25;
				end;
			end;//此地址有效
		end;//設(shè)定值遍歷
	end;//with trvAllDev.Items do
  trvAllDev.FullExpand;//展開所有節(jié)點(diǎn)
end;
procedure TfrmMain.DrawTreeNodeValue;
var
	i,ii:integer;
	Node1: TTreeNode;
	nodeFg:boolean;
	snode:string;
begin
  with trvAllDev.Items do
	begin
		for I := 0 to AddrCount - 1 do //設(shè)定值遍歷
		begin
			if PwsU[i].Enabled and (trvAllDev.Items.Count>1) then
			begin
				snode:='PWS'+inttostr(PwsU[i].PWSUint)+'-'+PwsU[i].PWSName;
        nodeFg:=False;
				for ii := 0 to trvAllDev.Items.Count - 1 do
				begin
					Node1 := trvAllDev.Items[ii];
					snode:='PWS'+inttostr(PwsU[i].PWSUint)+'-'+PwsU[i].PWSName;
				  if Node1.Text=snode  then
				  begin
				  	nodeFg:=True;//找到節(jié)點(diǎn)
          end;// //找到主節(jié)點(diǎn)
          if nodeFg and (Pos(PwsU[i].Name,Node1.Text)>0) then //再找子節(jié)點(diǎn)
          begin //
              if PWSU[i].CommErr='' then
                Node1.Text:=PWSU[i].Name+'['+Format('%4x',[PWSU[i].Value])+']'
              else begin
                Node1.Text:=PWSU[i].Name+'['+PWSU[i].CommErr+']';
                PWSU[i].CommErr:='';
              end;
          end;
				end;//遍歷結(jié)束
			end;
    end;
  end;
  
end;

function DBOK:boolean;
var
	reg : TRegistry;
	ts : TStrings;
	i : integer;
begin
	Result:=False;
	reg := TRegistry.Create;
	reg.RootKey := HKEY_CURRENT_USER;
	reg.OpenKey('Software\ODBC\ODBC.INI\ODBC Data Sources',false);
	ts := TStringList.Create;
	reg.GetValueNames(ts);

	for i := 0 to ts.Count -1 do
	begin
		if ts[i]='PWS AccessDB' then Result:=True;
	end;
	ts.Free;
  reg.CloseKey;
	reg.free;
  if not Result then
  begin
     Showmessage('請您先安裝ODBC數(shù)據(jù)庫'+#13
		+'名稱:PWS AccessDB'+#13+'類型:Microsoft Access Driver (*.mdb)'+#13
		+'數(shù)據(jù)庫名稱:DcsPT.mdb');
    frmMain.Close;
  end;
end;

procedure TfrmMain.FormShow(Sender: TObject);
var
	i:integer;
begin//完成用戶初始化
  DBOK;
	if adoDBSrc.Active then	adoDBSrc.Close;  //檢測用戶以便登錄
	adoDBSrc.CommandText:='select * from user';
	adoDBSrc.Open;
	if adoDBSrc.RecordCount=0 then
		lblFirstRun.Visible:=True
	else
	begin //
		cbxUser.Items.Clear;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人在线色| 日韩欧美卡一卡二| 91精品国产综合久久精品性色| 国产性色一区二区| 日韩精品亚洲一区二区三区免费| 国产成人亚洲精品青草天美| 欧美三级三级三级| 国产精品每日更新在线播放网址| 日本不卡一二三| 色婷婷精品大在线视频| 日本一区二区综合亚洲| 日本在线不卡一区| 欧美综合一区二区| 亚洲卡通欧美制服中文| 成人av电影在线| 2017欧美狠狠色| 久久草av在线| 日韩欧美www| 日韩二区三区四区| 777xxx欧美| 日本不卡免费在线视频| 欧美日韩亚洲国产综合| 樱花影视一区二区| 99精品久久99久久久久| 国产精品毛片高清在线完整版| 黄色小说综合网站| 精品久久人人做人人爱| 亚洲成人动漫一区| 欧美视频一区二区三区| 伊人婷婷欧美激情| 在线观看日韩一区| 亚洲亚洲精品在线观看| 日本国产一区二区| 一区二区三区四区在线| 色噜噜狠狠一区二区三区果冻| 中文字幕av在线一区二区三区| 国产精品综合久久| 久久青草欧美一区二区三区| 国模少妇一区二区三区| 国产欧美一区二区在线观看| 成人久久视频在线观看| 亚洲婷婷综合色高清在线| 色综合亚洲欧洲| 亚洲成av人片一区二区三区| 这里只有精品视频在线观看| 美女看a上一区| 国产亚洲欧美一级| 99re在线视频这里只有精品| 一区二区在线观看视频| 欧美日韩久久久| 国产在线精品一区二区夜色 | 国产中文字幕精品| 欧美激情一区二区三区四区 | 国产精品资源网| 亚洲欧洲国产专区| 欧美日韩另类一区| 国产一区二区在线视频| 国产精品久久久久影院老司| 91国在线观看| 精东粉嫩av免费一区二区三区| 国产欧美一区二区三区在线老狼| aaa国产一区| 日韩制服丝袜先锋影音| 久久久99免费| 欧美午夜寂寞影院| 精品中文字幕一区二区小辣椒| 国产精品午夜电影| 欧美精品1区2区3区| 国产高清不卡一区二区| 亚洲电影激情视频网站| 久久精品欧美一区二区三区麻豆| 色综合久久久久久久久久久| 久久狠狠亚洲综合| 亚洲女人小视频在线观看| 日韩精品一区二| 欧美性视频一区二区三区| 国产综合久久久久久鬼色| 亚洲一区二区三区影院| 欧美激情综合在线| 日韩精品一区二区三区视频| 欧美亚洲尤物久久| 大陆成人av片| 国内精品在线播放| 偷拍一区二区三区| 亚洲男人的天堂av| 国产欧美精品在线观看| 3atv一区二区三区| 91成人免费在线视频| 丁香一区二区三区| 裸体一区二区三区| 亚洲精品日日夜夜| 国产精品成人免费精品自在线观看 | 国产美女av一区二区三区| 一区二区三区视频在线看| 欧美电影免费观看高清完整版在线| 色偷偷久久一区二区三区| 国产精品亚洲一区二区三区在线| 青娱乐精品视频| 亚洲成人黄色小说| 亚洲一区二区精品3399| 国产精品免费丝袜| 久久综合九色综合97婷婷女人| 在线成人免费观看| 91蝌蚪porny成人天涯| 久久99精品久久久| 蜜桃视频免费观看一区| 天堂一区二区在线免费观看| 1区2区3区欧美| 日韩欧美第一区| 欧美大胆一级视频| 91精品婷婷国产综合久久性色| 欧美亚洲动漫另类| 欧美色涩在线第一页| 欧美网站一区二区| 欧美丝袜第三区| 欧美日免费三级在线| 欧美日韩国产精品成人| 欧美日本视频在线| 91精品在线一区二区| 日韩精品一区二区三区视频 | 欧美大黄免费观看| 中文字幕欧美一| 亚洲欧洲色图综合| 一区二区免费看| 亚洲成人综合视频| 免费在线视频一区| 精品一二三四区| 国产成人综合在线| 91美女在线看| 3751色影院一区二区三区| 欧美不卡一区二区三区四区| 精品电影一区二区三区| 欧美国产一区视频在线观看| 国产精品理论在线观看| 亚洲永久精品国产| 久热成人在线视频| 高清av一区二区| 色噜噜狠狠色综合中国| 欧美理论片在线| 久久人人爽人人爽| 亚洲女与黑人做爰| 精品一区二区三区免费观看| 成人av网站在线| 精品视频一区二区三区免费| 精品欧美一区二区在线观看| 国产女主播视频一区二区| 亚洲国产视频在线| 国产美女精品在线| 欧美午夜不卡视频| 久久久久久久性| 亚洲午夜激情网站| 国产大陆精品国产| 欧美日韩国产精选| 国产精品免费观看视频| 视频在线观看国产精品| 成人蜜臀av电影| 欧美一区午夜精品| 亚洲欧美日韩中文播放 | 日韩av电影免费观看高清完整版 | 国产成人免费9x9x人网站视频| 色哟哟日韩精品| 26uuuu精品一区二区| 亚洲一区二区精品3399| 风流少妇一区二区| 精品久久久久久久久久久久久久久| 综合亚洲深深色噜噜狠狠网站| 美国一区二区三区在线播放| 91麻豆精品国产91久久久久久久久| 欧美激情艳妇裸体舞| 毛片一区二区三区| 欧美三级一区二区| 亚洲视频一二区| 粉嫩aⅴ一区二区三区四区| 欧美日韩国产精品自在自线| 亚洲视频在线一区二区| 国产精品影视网| 欧美xingq一区二区| 亚洲高清免费一级二级三级| 成人高清在线视频| 国产日韩av一区| 极品尤物av久久免费看| 欧美一区二区视频观看视频| 亚洲二区在线视频| 日本道在线观看一区二区| 国产精品美女久久久久久久久 | 石原莉奈在线亚洲三区| 色94色欧美sute亚洲13| 亚洲欧美综合色| 不卡视频免费播放| 国产喷白浆一区二区三区| 国产一区啦啦啦在线观看| 日韩情涩欧美日韩视频| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美日韩一区高清| 亚洲午夜精品久久久久久久久| 91国偷自产一区二区使用方法| 亚洲女同ⅹxx女同tv| 在线观看免费视频综合| 一区二区三区不卡在线观看| 在线一区二区三区四区五区|