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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? unit1.pas

?? 中控嵌入式指紋識別開發描述
?? PAS
字號:
unit Unit1;

interface
{$define onlysynctime}
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Spin, StdCtrls, ExtCtrls, unit2, OleCtrls, zkemkeeper_TLB,
  CheckLst, iniFiles,strutils;
const CfgFn='DevList.cfg';
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Timer1: TTimer;
    memLogs: TMemo;
    Label2: TLabel;
    Label3: TLabel;
    spePeriod: TSpinEdit;
    lblTimer: TLabel;
    btnCount: TButton;
    clbDevices: TCheckListBox;
    btnAddDevice: TButton;
    btnDelDevice: TButton;
    CheckBox1: TCheckBox;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure spePeriodChange(Sender: TObject);
    procedure btnCountClick(Sender: TObject);
    procedure btnAddDeviceClick(Sender: TObject);
    procedure btnDelDeviceClick(Sender: TObject);
    procedure clbDevicesDrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
    procedure clbDevicesClickCheck(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure FormDestroy(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
  private
    { Private declarations }
    Connected: array[0..1000] of boolean;
    cfgFile:TiniFile;
    cfn:string;
    function SaveCfg():boolean;
  public
    { Public declarations }
    procedure AddLogs(logs: tstrings);
    procedure UpdateState(obj: tobject; Connect: Boolean);
  end;
  
var
  Form1: TForm1;
implementation
uses unit3;

{$R *.dfm}

procedure TForm1.AddLogs(logs: tstrings);
begin
  memLogs.Lines.AddStrings(logs);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  lblTimer.Caption := timetostr(now);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  LogReader: TLogReader;
  i: integer;
  SectionList:TStrings;
  s,sTemp,par1,par2,par3:string;
begin
  {$ifdef onlysynctime}
  Form1.Caption := 'Sync time for BioClock';
  {$endif}
  memLogs.Lines.Clear;

  for i := 0 to 1000 do
    Connected[i]:= false;
  cfn := ExtractFilePath(Application.ExeName) + CfgFn;
  if FileExists(cfn) then
  begin
    CfgFile:= tinifile.Create(cfn);
  end;

  CheckBox1.Checked := False;
  if cfgFile.ReadString('Options','SyncOnStart','') = 'T' then
    CheckBox1.Checked := true;
  SectionList := TStringList.Create;
  CfgFile.ReadSection('DevList',SectionList);
  with clbDevices do
  begin
    for i:= 0 to SectionList.Count-1 do
    begin
      s:=CfgFile.ReadString('DevList',SectionList.Strings[i],'');
      if s<> '' then
      begin
        sTemp := s;
        par1 := leftstr(sTemp,pos(':',s)-1);

        sTemp := rightstr(sTemp,length(sTemp)-length(par1)-1);
        if pos(':',sTemp)>0 then
        begin
          par2 := leftstr(sTemp,pos(':',sTemp)-1);
        end
        else
          Par2 := sTemp;
        sTemp := rightstr(sTemp,length(sTemp)-length(par2)-1);
        par3 := sTemp;
      end;
      if (par1='') or (par2='') then exit;
      if pos('COM',uppercase(s))=0 then
      begin
        LogReader:= TLogReader.Create(par1,strtoint(par2) );
      end
      else
        LogReader:= TLogReader.Create(strtoint(copy(par1, 4,2)),
        strtoint(par2), strtoint(par3));
      LogReader.Period := spePeriod.Value;
      clbDevices.AddItem(s, LogReader);

      if CheckBox1.Checked then
      begin
        clbDevices.Checked[clbDevices.Items.Count-1]:=true;
        LogReader.Active := true;
      end;
    end;
  end;

end;

procedure TForm1.spePeriodChange(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to clbDevices.Items.Count-1 do
    (clbDevices.Items.Objects[i] as TLogReader).Period := spePeriod.Value;
end;

procedure TForm1.btnCountClick(Sender: TObject);
begin
  MessageDlg(format('There are %d transaction logs.',
    [memLogs.Lines.Count]), mtInformation, [mbOK], 0);
end;

procedure TForm1.UpdateState(obj: tobject; Connect: Boolean);
var
  i: integer;
begin
  for i := 0 to clbDevices.Items.Count -1 do
  begin
    //clbDevices.item
    if clbDevices.Items.Objects[i]=obj then
    begin
      Connected[i] := Connect;
      clbDevices.Invalidate;
      {$ifdef onlysynctime}
      if obj=nil then exit;
      if (obj as TLogReader).Active then
        (obj as TLogReader).terminate;
      //Wait for the reader thread terminated.
      //WaitForSingleObject((obj as TLogReader).Handle, (spePeriod.Value+1)*1000);
      //(obj as TLogReader).Free;
      {$endif}
      break;
    end;
  end;
end;

procedure TForm1.btnAddDeviceClick(Sender: TObject);
var
  LogReader: TLogReader;
  i: integer;
  s:string;
begin
  form3 := tform3.create(self);
  try
    if form3.ShowModal=mrok then
    begin
      if clbDevices.Items.IndexOf(form3.Edit1.Text+':'+form3.Edit2.Text)>=0 then
        MessageDlg('Device in the list already.', mtWarning, [mbCancel], 0)
      else
      begin
        if form3.rgrpConnect.itemindex=0 then
        begin
          LogReader:= TLogReader.Create(strtoint(copy(form3.Edit1.Text, 4,2)),
            strtoint(form3.Edit2.Text), strtoint(form3.Edit3.Text));
        end
        else
          LogReader:= TLogReader.Create(form3.Edit1.Text,
            strtoint(form3.Edit2.Text));
        s :=  form3.Edit1.Text+':'+form3.Edit2.Text;
        if form3.rgrpConnect.itemindex=0 then
          s:= s+ ':' + form3.Edit3.Text;
        //asgDevList.row
        LogReader.Period := spePeriod.Value;
        clbDevices.AddItem(s, LogReader);
        clbDevices.Checked[clbDevices.Items.Count-1]:=true;
        LogReader.Active := true;
        SaveCfg;
      end;
    end;
  finally
    form3.Free;
  end;
end;

procedure TForm1.btnDelDeviceClick(Sender: TObject);
var
  LogReader: TLogReader;
begin
  if clbDevices.ItemIndex<0 then
  begin
    MessageDlg('Select a device please.', mtWarning, [mbCancel], 0);
    exit;
  end;
   
  LogReader := TLogReader(clbDevices.Items.Objects[clbDevices.ItemIndex]);
  if LogReader=nil then exit;

  LogReader.Terminate;
  //Wait for the reader thread terminated.
  WaitForSingleObject(LogReader.Handle, (spePeriod.Value+1)*1000);

  LogReader.Free;

  clbDevices.Items.Delete(clbDevices.ItemIndex);
  SaveCfg;
end;

procedure TForm1.clbDevicesDrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
var
	Offset: Integer;      { text offset width }
begin


	with (Control as TCheckListBox).Canvas do  { draw on control canvas, not on the form }
	begin
    if Connected[Index] then
      Font.Color := clGreen
    else
      Font.Color := clRed;
    FillRect(Rect);       { clear the rectangle }
    Offset := 2;          { provide default offset }
    TextOut(Rect.Left + Offset, Rect.Top, (Control as TCheckListBox).Items[Index])  { display the text }
	end;
end;

procedure TForm1.clbDevicesClickCheck(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to clbDevices.Items.Count-1 do
    (clbDevices.Items.Objects[i] as TLogReader).Active := clbDevices.Checked[i];
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
  LogReader: TLogReader;
  i: integer;
begin
  for i := 0 to clbDevices.Items.Count-1 do
  begin
    LogReader := TLogReader(clbDevices.Items.Objects[i]);
    if LogReader<>nil then LogReader.Terminate;
  end;
  CfgFile.Free;
end;

procedure TForm1.FormDestroy(Sender: TObject);
var
  LogReader: TLogReader;
begin
  while clbDevices.Items.Count>0 do
  begin
    LogReader := TLogReader(clbDevices.Items.Objects[0]);
    //Wait for the reader thread terminated.
    WaitForSingleObject(LogReader.Handle, (spePeriod.Value+1)*1000);
    LogReader.Free;
    clbDevices.Items.Delete(0);
  end;
end;

function TForm1.SaveCfg: boolean;
var i:integer;
begin
  CfgFile.EraseSection('DevList');
  for i:= 0 to clbDevices.Items.Count -1 do
  begin
    CfgFile.WriteString('DevList','Dev' + inttostr(i),clbDevices.Items.Strings[i]);
  end;
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  if CheckBox1.Checked then
    cfgFile.WriteString('Options','SyncOnStart','T')
  else
    cfgFile.WriteString('Options','SyncOnStart','F')
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲丝袜精品丝袜在线| 国产精品美女一区二区| 色综合久久综合网97色综合| 国产麻豆精品在线观看| 紧缚奴在线一区二区三区| 日韩国产欧美三级| 免费观看91视频大全| 三级欧美韩日大片在线看| 日韩精品亚洲一区| 日本不卡的三区四区五区| 日韩精品免费视频人成| 午夜视频一区在线观看| 午夜成人免费视频| 免费美女久久99| 看国产成人h片视频| 韩国三级中文字幕hd久久精品| 精品亚洲免费视频| 国产福利精品一区二区| 99久久久免费精品国产一区二区 | 精品视频免费看| 欧美日韩免费不卡视频一区二区三区| 欧美日韩一区二区在线视频| 91精品国产免费| 欧美一区二区三区在线| 精品国产一区二区精华| 国产精品高潮久久久久无| 亚洲欧美日韩久久| 日韩精品电影在线| 国产精品 欧美精品| 成人av片在线观看| 欧美日韩在线精品一区二区三区激情| 欧美在线视频全部完| 日韩无一区二区| 国产精品免费久久| 五月婷婷久久综合| 国产成人综合在线| 91蝌蚪国产九色| 日韩精品专区在线影院重磅| 国产精品狼人久久影院观看方式| 亚洲精品一二三区| 久久精品国产999大香线蕉| 国产成a人无v码亚洲福利| 91美女片黄在线观看| 日韩一区二区精品在线观看| 中文字幕在线观看不卡| 日韩国产精品91| 91视频免费播放| 久久人人爽爽爽人久久久| 亚洲国产精品天堂| 处破女av一区二区| 欧美电影免费观看高清完整版在线 | 日本一区二区三区久久久久久久久不| 亚洲激情成人在线| 国产精品99久| 日韩欧美色电影| 亚洲精品国产一区二区精华液| 麻豆精品国产传媒mv男同| 色屁屁一区二区| 中文字幕亚洲在| 国产精品一区二区无线| 制服丝袜中文字幕亚洲| 亚洲黄一区二区三区| 成人久久视频在线观看| 久久综合色播五月| 日韩中文字幕91| 欧美伊人久久久久久午夜久久久久| 中文字幕电影一区| 国产九九视频一区二区三区| 欧美草草影院在线视频| 日韩成人av影视| 在线电影国产精品| 午夜电影一区二区| 3751色影院一区二区三区| 亚洲午夜免费视频| 欧美日韩免费高清一区色橹橹 | 亚洲最大色网站| 99视频精品在线| 国产精品传媒入口麻豆| 成人不卡免费av| 中文字幕在线不卡一区二区三区| 成人午夜短视频| 国产精品丝袜久久久久久app| 丁香婷婷综合五月| 中文字幕欧美区| 色综合色综合色综合色综合色综合 | 国产精品久久久久久久久免费桃花 | 亚洲欧美日韩国产手机在线| av在线不卡网| 亚洲免费av高清| 欧美三级在线播放| 秋霞午夜鲁丝一区二区老狼| 678五月天丁香亚洲综合网| 日本不卡123| 久久天堂av综合合色蜜桃网| 国产精品一区二区视频| 中文字幕一区二区三区在线观看 | 欧美变态tickle挠乳网站| 麻豆91在线播放免费| 久久综合九色综合97_久久久 | 综合色中文字幕| 欧美日韩视频专区在线播放| 秋霞影院一区二区| 国产肉丝袜一区二区| 色天天综合久久久久综合片| 日韩av中文字幕一区二区| 2020国产精品自拍| www.成人在线| 亚洲综合色噜噜狠狠| 欧美一卡2卡三卡4卡5免费| 国产一区999| 亚洲精品久久久蜜桃| 精品国产乱码久久久久久免费| 国产91丝袜在线观看| 亚洲va韩国va欧美va精品 | 91麻豆国产福利在线观看| 视频一区二区三区入口| 国产欧美一区二区三区在线看蜜臀 | 欧美久久久久久久久中文字幕| 精品一区二区三区免费观看 | 久久国产三级精品| 中文字幕日本乱码精品影院| 欧美精品久久久久久久多人混战| 国产精品综合在线视频| 亚洲高清免费一级二级三级| 久久天天做天天爱综合色| 欧美精品在线观看播放| 北岛玲一区二区三区四区| 看电影不卡的网站| 亚洲成人你懂的| 亚洲免费观看视频| 久久精品视频一区二区三区| 欧美疯狂性受xxxxx喷水图片| 成人福利电影精品一区二区在线观看| 日本欧美大码aⅴ在线播放| 国产精品国产自产拍高清av| 日韩免费性生活视频播放| 欧美婷婷六月丁香综合色| eeuss国产一区二区三区| 蜜臀av一级做a爰片久久| 国产精品成人免费| 久久久久久9999| 精品99999| 91精品国产综合久久精品 | 欧美一级久久久久久久大片| 色综合久久久久综合体| 成人午夜在线播放| 国产一区美女在线| 色先锋aa成人| 欧美日韩高清影院| 丝袜亚洲另类丝袜在线| 亚洲国产精品天堂| 亚洲综合色成人| 一区二区视频在线| 亚洲最大成人综合| 一区二区三区日韩| 亚洲一区国产视频| 亚洲电影一区二区| 视频一区视频二区中文字幕| 亚洲成人免费视频| 日本亚洲天堂网| 精品一区二区三区免费播放| 另类小说欧美激情| 国产精品一区二区三区四区| 国产一区二区主播在线| 福利一区福利二区| 99久久婷婷国产综合精品| 一本一道久久a久久精品| 欧美性淫爽ww久久久久无| 欧美午夜片在线观看| 欧美美女网站色| 久久综合色婷婷| 亚洲欧洲日本在线| 亚洲最大成人综合| 久久电影国产免费久久电影| 国产在线精品免费av| 成人国产一区二区三区精品| 91农村精品一区二区在线| 一本色道久久综合亚洲91| 99国产欧美另类久久久精品 | 亚洲人123区| 最新国产成人在线观看| 亚洲欧洲综合另类| 国产精品免费免费| 亚洲婷婷国产精品电影人久久| 国产精品久久久久久久久晋中| 亚洲欧美一区二区三区孕妇| 日韩国产一区二| www.亚洲精品| 91麻豆精品国产91久久久久久久久| 国产精品一区二区x88av| 色综合久久九月婷婷色综合| 欧美日韩色一区| 久久久久97国产精华液好用吗| 亚洲免费在线看| 久久福利视频一区二区| 日本高清不卡一区| 久久日一线二线三线suv| 亚洲精品中文在线影院| 国产一区二区三区久久久| 99精品视频免费在线观看|