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

📄 uaphoto1.pas

📁 将Canon相机拍照后自动存放到本地机器的照片
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit UAPhoto1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Db, ADODB, Mask, DBCtrls, ExtCtrls,FileCtrl,inifiles,Jpeg,


   ComCtrls, DBTables, Grids, DBGrids, Menus;

type
  TPhotoSystem = class(TForm)
    ADOQuery1: TADOQuery;
    DataSource1: TDataSource;
    ADOConnection1: TADOConnection;
    Panel1: TPanel;
    Label1: TLabel;
    Panel2: TPanel;
    Label2: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    Panel3: TPanel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Panel4: TPanel;
    Button2: TButton;
    Label8: TLabel;
    Edit2: TEdit;
    Label9: TLabel;
    Edit3: TEdit;
    Button3: TButton;
    Button4: TButton;
    Label7: TLabel;
    Edit4: TEdit;
    Button5: TButton;
    Panel5: TPanel;
    Image1: TImage;
    Button6: TButton;
    Button7: TButton;
    Label10: TLabel;
    Label11: TLabel;
    Panel6: TPanel;
    Image2: TImage;
    ADOQuery2: TADOQuery;
    MainMenu1: TMainMenu;
    file1: TMenuItem;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    Edit5: TEdit;
    DBEdit4: TDBEdit;
    Label16: TLabel;
    Label17: TLabel;
    Edit6: TEdit;
    ADOQuery3: TADOQuery;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Edit1Enter(Sender: TObject);
    procedure Edit1KeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure file1Click(Sender: TObject);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormClick(Sender: TObject);
  private
    fn:string;
    ini:TiniFile;
    OldDirPath:String;
    NewDirPath:String;
    Pre:String;
    NumberLen:integer;
    StartNum:String;
    initNumber:String;
    addLength:integer;
    currentNumber:String;
    OldNumber1:String;  //用于初始读入时起始文件名,
    OldNumber2:String;  //用于当前取最大序号的文件的比较,
    NewNumberString2:String;

    mask1:String;
    user1:String;
    pwd1:String;
    database1:String;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  PhotoSystem: TPhotoSystem;

implementation

uses UASetCanon;

{$R *.DFM}

procedure TPhotoSystem.Button1Click(Sender: TObject);
var
  content:String;
  StuEmpNumber:String;
  F3:TStringStream;
  M1:TMemoryStream;
  Fjpg: TJpegImage;
  SpeCode1:String;
begin
  If Edit1.Text='' then
  begin
    ShowMessage('您输入的学工号为空!');
    exit;
  end;
  Image1.Picture.Assign(nil);
  Image2.Picture.Assign(nil);
  StuEmpNumber:=Trim(Edit1.text);

  ADOQuery2.Close;             //如果其他地方有对ADOQuery1的引用,只有先关闭它,才能进行修改,
  ADOQuery2.SQL.Clear;
  //ADOQuery2.SQL.Add('SELECT T.CUT_TYPE, T.STUEMP_NO, T.STUEMP_NAME, M.DEPT_NAME, T.PHOTO_NO, T.FILENAME, T.PHOTO FROM YKT_CUR.T_CIF_PHOTO T, YKT_CUR.T_CIF_DEPT M WHERE T.STUEMP_NO='+QuotedStr(StuEmpNumber)+' AND M.DEPT_CODE=T.DEPT_NAME');
  ADOQuery2.SQL.Add('SELECT * FROM YKT_CUR.T_CIF_PHOTO  WHERE STUEMP_NO='+QuotedStr(StuEmpNumber));
  //测试用:
  //showmessage('SELECT T.CUT_TYPE, T.STUEMP_NO, T.STUEMP_NAME, M.DEPT_NAME, T.PHOTO_NO, T.FILENAME, T.PHOTO FROM YKT_CUR.T_CIF_PHOTO T, YKT_CUR.T_CIF_DEPT M WHERE T.STUEMP_NO='+QuotedStr(StuEmpNumber));
  ADOQuery2.Open;
  if ADOQuery2.RecordCount=0 then
  begin
    Image2.Picture.Assign(nil);
    ShowMessage('该学工号记录不存在!');          //需求漏洞,
    Edit1.Text:='';
    exit;
  end;
  ADOQuery1.Close;             //如果其他地方有对ADOQuery1的引用,只有先关闭它,才能进行修改,
  ADOQuery1.SQL.Clear;
  //ADOQuery1.SQL.Add('select * from ykt_cur.t_cif_photo where STUEMP_NO='+QuotedStr(StuEmpNumber));  //数据类型不兼容,必须将 StuEmpNumber加上引号,
  ADOQuery1.SQL.Add('SELECT T.CUT_TYPE, T.STUEMP_NO, T.STUEMP_NAME, M.DEPT_NAME,T.S_CODE, T.PHOTO_NO, T.FILENAME, T.PHOTO FROM YKT_CUR.T_CIF_PHOTO T, YKT_CUR.T_CIF_DEPT M WHERE T.STUEMP_NO='+QuotedStr(StuEmpNumber)+'AND M.DEPT_CODE=T.DEPT_NAME ');
  //留用:,   +'AND N.S_CODE=T.S_CODE'
  //ADOQuery1.SQL.Add('select * from ykt_cur.t_cif_photo WHERE PHOTO_NO=2');                        //整型可以查到,
  //ADOQuery1.SQL.Add('select * from ykt_cur.t_cif_photo WHERE STUEMP_NO=''0339111''');            //必须加上转义字符,来识别' 单引号,
  ADOQuery1.Open;
  //测试用:
  //ShowMessage(ADOQuery1.FieldByName('STUEMP_NAME').AsString);
  Edit5.text:=ADOQuery1.FieldByName('DEPT_NAME').AsString;
  //Label14.Caption:=ADOQuery1.FieldByName('DEPT_NAME').AsString;
  Label14.Caption:=Edit5.Text;
  Label17.Caption:=Edit6.Text;
  SpeCode1:=ADOQuery1.FieldByName('S_CODE').AsString;

  //处理 教职工的情况,
  If SpeCode1<>'' then
  begin
    ADOQuery3.Close;
    ADOQuery3.SQL.Clear;
    ADOQuery3.SQL.Add('SELECT S_NAME,S_CODE FROM YKT_CUR.T_CIF_SPECIALITY  WHERE S_CODE='+QuotedStr(SpeCode1));
    ADOQuery3.Open;
    Label17.Caption:=ADOQuery3.FieldByName('S_NAME').AsString;
  end;

  Fjpg :=TJpegImage.Create ;
  M1:=TMemoryStream.Create;
  Try
     M1.Clear;
     If   TBlobField(AdoQuery1.FieldByName('PHOTO')).AsString<>null then
     TBlobField(AdoQuery1.FieldByName('PHOTO')).SaveToStream(M1);
    // M1.LoadFromFile('D:\b11.jpg');
     M1.Position:=0;
     If  M1.Size>100 then
     begin
       FJpg.LoadFromStream(M1);
       Image2.Picture.Bitmap.Assign(FJpg);
     end
     else
     begin
        Panel6.Caption:='没有原始照片';
     end;
  Finally
    M1.Free;
    FJpg.Free;
  end;
     Button5.Enabled:=True;
     Button2.Enabled:=True;
     Label12.Caption:=DBEdit1.Text;
     Label12.Width:=180;
     Label13.Caption:=DBEdit2.Text;
     Label15.Caption:=DBEdit4.Text;
end;

procedure TPhotoSystem.Button2Click(Sender: TObject);
var
  currentNum1:String;
  NewNumber2:String;
  fileNamePath2:String;
begin
   OldNumber2:='';
   //currentNum1:=ini.ReadString('CANON','CURRENTNUM','');        //依据配置文件找到照片,
   currentNum1:=Trim(Edit4.Text);   //允许客户在界面上修改,而不必打开配置文件修改,
   NewNumberString2:=currentNum1;
   While FileExists(OldDirPath+'\'+Pre+NewNumberString2+'.jpg') do
   begin
     if  FileExists(OldDirPath+'\'+Pre+OldNumber2+'.jpg') then
       DeleteFile(OldDirPath+'\'+Pre+OldNumber2+'.jpg');
     OldNumber2:=NewNumberString2;
     NewNumber2:=IntToStr(StrToInt(OldNumber2)+1);
     NewNumber2:='0000000000'+NewNumber2;
     NewNumberString2:=Copy(NewNumber2,(Length(NewNumber2)-NumberLen+1),NumberLen);
   end;
  if FileExists(OldDirPath+'\'+Pre+OldNumber2+'.jpg') then
  begin
     Image1.Picture.LoadFromFile(OldDirPath+'\'+Pre+OldNumber2+'.jpg');       //先判断文件是否存在,
     Edit2.Text:=Pre+OldNumber2+'.jpg';
     Edit3.Text:=DBEdit2.Text+'.jpg';
     Button3.Visible:=True;
     Button4.Visible:=True;
     Label8.Visible:=True;
     Label9.Visible:=True;
     Edit2.Visible:=True;
     Edit3.Visible:=True;
  end
  else
    ShowMessage('该照片不存在!请检查并"修改相机顺序号",必要时请手动修改配置文件..\file.ini 的值!');
end;

procedure TPhotoSystem.Button3Click(Sender: TObject);
var
  F:TFileStream;
  F2:TFileStream;
  OldNumber:String;
  NewNumber:String;
  NewNumberString:String;
  fileNamePath:String;
  DirPath1:String;
  DirPath2:String;
  DirPath3:String;
begin
         //保存到数据库,
  Try
       F := TFileStream.Create(OldDirPath+'\'+Pre+OldNumber2+'.jpg',fmOpenRead);

      // ADOQuery1.SQL.Clear;
      //  ADOQuery1.SQL.Add('select * from ykt_cur.t_cif_photo where STUEMP_NO=''0339005''');
      //  ADOQuery1.open;
      //点“查询”后 ,ADOQuery1 已经有数据,且打开了
        ADOQuery1.Edit;
        TBlobField(ADOQuery1.FieldByName('PHOTO')).loadfromStream(F);
        ADOQuery1.FieldByName('FILENAME').value:=Edit5.Text+'\'+Label17.Caption+'\'+DBEdit4.Text+'\'+Edit3.Text;
        DirPath1:=NewDirPath+'\'+Edit5.Text;
        DirPath2:=DirPath1+'\'+Label17.Caption;

⌨️ 快捷键说明

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