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

📄 fnetbarperson.pas

📁 DELPHI6G开发的一成套网吧身份证管理系统。主要功能是利用扫描仪或是usb摄像头等图开输入设备
💻 PAS
字号:
unit fNetBarPerson;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,  ExtCtrls, DBCtrls, Grids, DBGrids, Buttons, ComCtrls, StdCtrls,
  DelphiTwain, ExtDlgs,Inifiles, DB, TinyDB,Jpeg, DrLabel, Mask;

const
  C_INIFILENAME = 'NetBarPerson.ini';
  type
  TfrmMain = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    StatusBar1: TStatusBar;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    SpeedButton4: TSpeedButton;
    SpeedButton5: TSpeedButton;
    SpeedButton6: TSpeedButton;
    SpeedButton7: TSpeedButton;
    DBGrid1: TDBGrid;
    Panel5: TPanel;
    DBNavigator1: TDBNavigator;
    Panel6: TPanel;
    ComboBox1: TComboBox;
    SpeedButton8: TSpeedButton;
    DelphiTwain1: TDelphiTwain;
    SavePic: TSavePictureDialog;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    ComboBox2: TComboBox;
    SpeedButton9: TSpeedButton;
    TinyDatabase1: TTinyDatabase;
    TinyTable1: TTinyTable;
    DataSource1: TDataSource;
    SpeedButton10: TSpeedButton;
    Memo1: TMemo;
    Panel4: TPanel;
    ContainImage: TScrollBox;
    Image1: TImage;
    DRLabel1: TDRLabel;
    DRLabel2: TDRLabel;
    Panel7: TPanel;
    Image2: TImage;
    Bevel1: TBevel;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    DBMemo1: TDBMemo;
    DRLabel3: TDRLabel;
    DRLabel4: TDRLabel;
    DRLabel5: TDRLabel;
    edit1: TEdit;
    DRLabel6: TDRLabel;
    DBEdit3: TDBEdit;
    DRLabel7: TDRLabel;
    Splitter1: TSplitter;
    procedure SpeedButton7Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure DelphiTwain1TwainAcquire(Sender: TObject;
      const Index: Integer; Image: TBitmap; var Cancel: Boolean);
    procedure FormCreate(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure ContainImageResize(Sender: TObject);
    procedure SpeedButton4Click(Sender: TObject);
    procedure SpeedButton8Click(Sender: TObject);
    procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
    procedure SpeedButton10Click(Sender: TObject);
    procedure SpeedButton9Click(Sender: TObject);
    procedure TinyTable1AfterScroll(DataSet: TDataSet);
  private
    { Private declarations }
    ClickPos: TPoint;
  public
    { Public declarations }
    SourceIndex:Integer;
  end;


  Function FillSpaceL(const sSrc:String;iLen:integer=25):String;

var
  frmMain: TfrmMain;

implementation

uses uPerson;

{$R *.dfm}

Function FillSpaceL(const sSrc:String;iLen:integer=25):String;
Var
  sTemp:String;
  i:Integer;
begin
  sTemp := '';
  For i:=iLen downto Length(sSrc)+1 Do sTemp :=  sTemp+ ' ';
  Result := sTemp + sSrc;
end;

procedure TfrmMain.SpeedButton7Click(Sender: TObject);
begin
  Close;
end;

procedure TfrmMain.SpeedButton1Click(Sender: TObject);
begin
  //Try loading the library
  if DelphiTwain1.LoadLibrary then
  begin

    //Same as SourceManangerLoaded := TRUE
    DelphiTwain1.LoadSourceManager();
    //Select the source
    SourceIndex := DelphiTwain1.SelectSource();
    With TIniFile.Create(C_INIFILENAME) do
    Begin
      WriteInteger('Device','SourceIndex', SourceIndex );
      Free;
    End;
{    if SourceIndex <> -1 then

    with DelphiTwain1.Source[SourceIndex] do
    begin

        //Prepare for transfering using ttmFile mode
        Loaded := TRUE;
        TransferMode := ttmMemory;
        Enabled := TRUE;

      end else ShowMessage('Cancelled')  }

  end
  else ShowMessage('Twain not installed')
end;

procedure TfrmMain.DelphiTwain1TwainAcquire(Sender: TObject;
  const Index: Integer; Image: TBitmap; var Cancel: Boolean);
begin
  Image1.Picture.Assign(Image);
  Cancel := TRUE;
end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  With TIniFile.Create(C_INIFILENAME) do
  Begin
    SourceIndex := ReadInteger('Device','SourceIndex',-1);
    Free;
  End;
  if not DirectoryExists( '.\img' ) then
    ForceDirectories( '.\img' );
end;

procedure TfrmMain.SpeedButton2Click(Sender: TObject);
begin
  if SourceIndex < 0 then SpeedButton1.Click
  else
  Begin
    DelphiTwain1.LoadLibrary ;
    DelphiTwain1.LoadSourceManager();
  End;
  if SourceIndex <> -1 then
    with DelphiTwain1.Source[SourceIndex] do
    begin

        //Prepare for transfering using ttmFile mode
        Loaded := TRUE;
        TransferMode := ttmMemory;
        Enabled := TRUE;
        while DelphiTwain1.Source[SourceIndex].Enabled do Application.ProcessMessages;
        {Unload library}
        DelphiTwain1.UnloadLibrary;

      end else ShowMessage('Cancelled')
end;

procedure TfrmMain.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  NewPos: TPoint;
begin
  if ssLeft in Shift then
  begin
    {Calculate new position}
    NewPos.X := Image1.Left + x - ClickPos.x;
    NewPos.Y := Image1.Top + y - ClickPos.y;
    if NewPos.x + Image1.Width < ContainImage.Width then
      NewPos.x := ContainImage.Width - Image1.Width;
    if NewPos.y + Image1.Height < ContainImage.Height then
      NewPos.y := ContainImage.Height - Image1.Height;
    if NewPos.X > 0 then NewPos.X := 0;
    if NewPos.Y > 0 then NewPos.Y := 0;

    Image1.Top := NewPos.Y;
    Image1.Left := NewPos.X;
  end {if ssLeft in Shift}
end;

procedure TfrmMain.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  ClickPos.x := X;
  ClickPos.y := Y;
end;

procedure TfrmMain.ContainImageResize(Sender: TObject);
begin
  ClickPos.X := 0; ClickPos.Y := 0;
  Image1MouseMove(Self, [ssLeft], 0, 0);
end;

procedure TfrmMain.SpeedButton4Click(Sender: TObject);
begin
//  frmNewPerson.showModal;
//  SpeedButton9.Enabled := False;
end;

procedure TfrmMain.SpeedButton8Click(Sender: TObject);
begin
  TabSheet1.Show;
  if Not TinyTable1.Locate('person_no',VarArrayOf([combobox1.Text]) ,[loCaseInsensitive]) then showmessage('没有找到该编号。');
  combobox1.SelectAll;
  combobox1.SetFocus;
end;

procedure TfrmMain.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
  if (key = #13) and (Trim(ComboBox1.Text) <> '') then SpeedButton8.Click;
end;

procedure TfrmMain.SpeedButton10Click(Sender: TObject);
begin
  SpeedButton2.Click;
end;

procedure TfrmMain.SpeedButton9Click(Sender: TObject);
Var
  sPhoto:String;
  aJPEGImage:TJPEGImage;
begin
  With TinyTable1 do
  Begin
    Append;
    FieldByName('person_no').AsString := formatDateTime('mmddhhnnss',Now);
    FieldByName('person_name').AsString := Edit1.Text;
    FieldByName('desc').AsString := Memo1.Text;
    FieldByName('AppendDate').AsDateTime := Now;
    Update;
    Refresh;
    edit;
    ComboBox2.Text := InttoStr(FieldByName('person_id').AsInteger);
    FieldByName('person_no').AsString := ComboBox2.Text;
    sPhoto := '.\img\'+ ComboBox2.Text+'.jpg';
    if FileExists(sPhoto) then DeleteFile(sPhoto);
    FieldByName('person_photo').AsString := sPhoto;
    aJPEGImage := TJPEGImage.Create;
    aJPEGImage.Assign(Image1.Picture.Graphic);
    aJPEGImage.SaveToFile(sPhoto);
//    update;
//    Refresh;
    post;
  End;
end;

procedure TfrmMain.TinyTable1AfterScroll(DataSet: TDataSet);
Var
  sPhoto:String;
begin
  with TinyTable1 do
  if Not TinyTable1.Eof then
  Begin
    sPhoto := FieldByName('person_photo').AsString;
    if FileExists(sPhoto) then
    Image2.Picture.LoadFromFile(sPhoto);
  End;
end;

end.

⌨️ 快捷键说明

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