unit fmuMain;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Grids, StdCtrls,
  // This
  Scaner_TLB //    (TScaner45)
  ;

type
  TfmMain = class(TForm)
    btnShowProperties: TButton;
    ckbDeviceEnabled: TCheckBox;
    ckbDataEventEnabled: TCheckBox;
    ckbAutoDisable: TCheckBox;
    sgdScanData: TStringGrid;
    btnExit: TButton;
    btnClearGrid: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ckbDeviceEnabledClick(Sender: TObject);
    procedure ckbDataEventEnabledClick(Sender: TObject);
    procedure ckbAutoDisableClick(Sender: TObject);
    procedure btnShowPropertiesClick(Sender: TObject);
    procedure btnExitClick(Sender: TObject);
    procedure btnClearGridClick(Sender: TObject);
  private
    fScaner: TScaner45;//  
    procedure ScanEvent(Sender: TObject);//  
    procedure UpdateForm;
  public
    { Public declarations }
  end;

var
  fmMain: TfmMain;

implementation

{$R *.DFM}

procedure TfmMain.ScanEvent(Sender: TObject);
begin
  if sgdScanData.Cells[0, sgdScandata.RowCount - 1] <> '' then
    sgdScanData.RowCount := sgdScandata.RowCount + 1;
  sgdScanData.Cells[0, sgdScandata.RowCount - 1] := IntToStr(fScaner.EventNumber);
  sgdScanData.Cells[1, sgdScandata.RowCount - 1] := fScaner.ScanData;
  sgdScanData.Cells[2, sgdScandata.RowCount - 1] := fScaner.PortDescription;
  UpdateForm;
end;

procedure TfmMain.UpdateForm;
begin
  ckbDeviceEnabled.Checked := fScaner.DeviceEnabled;
  ckbDataEventEnabled.Checked := fScaner.DataEventEnabled;
  ckbAutoDisable.Checked := fScaner.AutoDisable;
end;

procedure TfmMain.FormCreate(Sender: TObject);

  procedure GridCaption;
  begin
    sgdScanData.Cells[0, 0] := '';
    sgdScanData.Cells[1, 0] := '';
    sgdScanData.Cells[2, 0] := '';
  end;

begin
  fScaner := TScaner45.Create(nil);
  fScaner.OnDataEvent := ScanEvent;
  fScaner.RaiseException := True;
  GridCaption;
  UpdateForm;
end;

procedure TfmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  fScaner.Free;
end;

procedure TfmMain.ckbDeviceEnabledClick(Sender: TObject);
begin
  fScaner.DeviceEnabled := ckbDeviceEnabled.Checked;
  UpdateForm;
end;

procedure TfmMain.ckbDataEventEnabledClick(Sender: TObject);
begin
  fScaner.DataEventEnabled := ckbDataEventEnabled.Checked;
  UpdateForm;
end;

procedure TfmMain.ckbAutoDisableClick(Sender: TObject);
begin
  fScaner.AutoDisable := ckbAutoDisable.Checked;
  UpdateForm;
end;

procedure TfmMain.btnShowPropertiesClick(Sender: TObject);
begin
  fScaner.ShowProperties;
  UpdateForm;
end;

procedure TfmMain.btnExitClick(Sender: TObject);
begin
  Close;
end;

procedure TfmMain.btnClearGridClick(Sender: TObject);
var
  I: Integer;
begin
  for I := 1 to sgdScanData.RowCount - 1 do
    sgdScanData.Rows[I].Clear;
  sgdScanData.RowCount := 2;
end;

end.
