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

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

?? main.pas.~117~

?? 給出一個(gè)工業(yè)PLC聯(lián)網(wǎng)監(jiān)控的例子
?? ~117~
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(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í)間長(zhǎng)度間隔多少分鐘  最短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 //還沒(méi)有根接點(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('請(qǐng)您先安裝ODBC數(shù)據(jù)庫(kù)'+#13
		+'名稱:PWS AccessDB'+#13+'類型:Microsoft Access Driver (*.mdb)'+#13
		+'數(shù)據(jù)庫(kù)名稱:DcsPT.mdb');
    frmMain.Close;
  end;
end;

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

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99在线观看| 国产成人亚洲综合色影视 | 波多野结衣一区二区三区| 一区二区在线观看视频| 久久婷婷成人综合色| 欧美日韩精品一二三区| av电影在线观看一区| 麻豆精品一二三| 亚洲午夜激情网站| 一区二区三区在线免费观看| 国产亚洲成av人在线观看导航| 9191久久久久久久久久久| 91免费国产在线| 盗摄精品av一区二区三区| 精品一区二区三区的国产在线播放| 亚洲精品久久久蜜桃| 久久精品一区八戒影视| 精品成人佐山爱一区二区| 欧美日本不卡视频| 欧美丝袜丝nylons| 色域天天综合网| 欧美国产在线观看| 欧美亚洲综合久久| 91影院在线免费观看| 成人毛片老司机大片| 国产在线精品国自产拍免费| 日韩av一区二| 日韩和欧美一区二区三区| 亚洲国产精品麻豆| 夜夜嗨av一区二区三区| 樱桃视频在线观看一区| 亚洲精品美国一| 亚洲精品乱码久久久久久| 中文字幕一区二区日韩精品绯色| 久久精品视频免费观看| 日本一区二区三区电影| 久久精品夜夜夜夜久久| 欧美精品一区二区不卡| 久久综合色综合88| 国产午夜精品理论片a级大结局| 精品国内片67194| 久久蜜桃香蕉精品一区二区三区| 久久这里只有精品首页| 国产欧美日韩在线看| 国产日韩欧美精品在线| 国产精品不卡一区二区三区| 久久久另类综合| 中文字幕精品在线不卡| 欧美另类高清zo欧美| 成人高清免费在线播放| 国产资源精品在线观看| 国产精品18久久久久| 不卡av电影在线播放| 色综合久久综合网| 欧美亚洲禁片免费| 91精品国产全国免费观看| 日韩欧美在线123| 2023国产精品视频| 中文字幕在线免费不卡| 亚洲午夜电影网| 麻豆成人久久精品二区三区红| 国产又粗又猛又爽又黄91精品| 国产精品一区二区黑丝| 91精品国产综合久久久蜜臀图片| 精品少妇一区二区三区日产乱码| 精品福利一区二区三区免费视频| 国产午夜久久久久| 亚洲裸体在线观看| 青青草国产精品97视觉盛宴| 国产高清在线观看免费不卡| 色综合天天在线| 91精品国产欧美一区二区18 | 久久久久国产精品免费免费搜索| 亚洲精品一区二区精华| 国产精品久久久久久久裸模| 亚洲国产日日夜夜| 免费视频最近日韩| 成人小视频免费在线观看| 欧美午夜视频网站| 久久综合九色综合欧美98| 亚洲三级视频在线观看| 日本在线播放一区二区三区| 成人激情免费视频| 欧美一区二区私人影院日本| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 成人av网址在线观看| 欧美喷潮久久久xxxxx| 中文字幕精品三区| 日韩综合小视频| 一本色道综合亚洲| 欧美大片一区二区三区| 亚洲黄一区二区三区| 激情成人午夜视频| 欧美日韩一级大片网址| 久久久久久久电影| 日韩激情视频在线观看| 91视视频在线直接观看在线看网页在线看| 在线成人高清不卡| 自拍偷拍亚洲综合| 国产成人aaa| 日韩精品一区二区三区四区视频| 亚洲综合成人在线视频| 成人午夜在线免费| 久久久另类综合| 蜜桃91丨九色丨蝌蚪91桃色| 欧美综合亚洲图片综合区| 国产精品色眯眯| 国产在线精品一区二区夜色| 在线不卡中文字幕| 亚洲一区免费视频| 94-欧美-setu| 中文字幕一区二区三区在线观看| 精品一区二区免费| 欧美一区二区国产| 亚洲超碰精品一区二区| 在线一区二区三区| 亚洲手机成人高清视频| 成人av资源网站| 国产日产欧产精品推荐色| 国产综合一区二区| 欧美不卡视频一区| 麻豆精品蜜桃视频网站| 6080国产精品一区二区| 亚洲最新视频在线播放| 日本精品裸体写真集在线观看 | 4438x成人网最大色成网站| 一区二区三区91| 色爱区综合激月婷婷| 亚洲免费在线视频| 在线观看av不卡| 亚洲国产视频直播| 麻豆精品新av中文字幕| 99久久婷婷国产| 国产精品国产三级国产普通话99| 成人一区在线看| 国产精品乱子久久久久| 成人性生交大片免费看视频在线| 国产欧美一区二区三区在线看蜜臀 | 国产精品久久久久久亚洲伦 | 欧美xxx久久| 精品一二三四区| 国产婷婷精品av在线| 成a人片国产精品| 亚洲黄色尤物视频| 在线观看91视频| 日韩在线卡一卡二| 久久综合色婷婷| 成人黄色在线网站| 亚洲精品伦理在线| 欧美老女人在线| 裸体在线国模精品偷拍| 国产网站一区二区| 91香蕉视频污在线| 亚洲国产精品一区二区久久恐怖片| 欧美午夜精品电影| 日本视频中文字幕一区二区三区| 欧美一级视频精品观看| 国产精品1024久久| 亚洲久本草在线中文字幕| 欧美日韩一区二区在线视频| 青青草国产精品97视觉盛宴| 国产午夜精品一区二区三区视频| av一区二区不卡| 天堂av在线一区| 久久久精品国产免费观看同学| 99国产精品久| 免费在线观看精品| 国产精品女同一区二区三区| 欧美亚洲动漫制服丝袜| 韩国三级中文字幕hd久久精品| 国产精品久99| 日韩一区二区在线免费观看| 粉嫩嫩av羞羞动漫久久久| 亚洲国产美女搞黄色| 久久久亚洲国产美女国产盗摄| 日本韩国一区二区三区视频| 久久99久久久欧美国产| 一区二区三区色| 精品国产免费人成电影在线观看四季| 不卡的看片网站| 美女视频网站黄色亚洲| 日韩美女啊v在线免费观看| 日韩欧美一级特黄在线播放| 99国产精品国产精品毛片| 美国毛片一区二区三区| 一区二区三区色| 国产免费成人在线视频| 91麻豆精品91久久久久同性| 成人免费av在线| 免费亚洲电影在线| 亚洲一区影音先锋| 中文久久乱码一区二区| 91精品国产综合久久久蜜臀图片| eeuss国产一区二区三区| 看电视剧不卡顿的网站| 亚洲一区二区精品3399| 国产精品久久福利| 国产亚洲欧美日韩俺去了| 69成人精品免费视频| 欧美亚洲综合色|