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

📄 mtm.pas

📁 为青岛一家公司做的条码打印管理
💻 PAS
字号:
unit mTm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls, ExtCtrls, IELabel, Buttons,Uconst,PathFile,StrProcess,
  Db, DBTables,printers, UpDown1, Edit1;

type
  TFrmTM = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Image1: TImage;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Bevel3: TBevel;
    IELabel1: TIELabel;
    Panel3: TPanel;
    LBMemory: TLabel;
    LBType: TLabel;
    LBLicenseID: TLabel;
    LBCriterionID: TLabel;
    LBLeaveFactoryDate: TLabel;
    LBWeight: TLabel;
    LbExteriorSize: TLabel;
    LBBaseConfigure: TLabel;
    LBCPU: TLabel;
    LBHardDisk: TLabel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    ComboType: TComboBox;
    EtLeaveFactoryDate: TDateTimePicker;
    LBProductID: TLabel;
    BitBtn4: TBitBtn;
    Button1: TButton;
    TbData: TTable;
    BtnRefresh: TBitBtn;
    BtnSetup: TBitBtn;
    EtLicenseID: TComboBox;
    EtCriterionID: TComboBox;
    EtWeight: TComboBox;
    EtExteriorSize: TComboBox;
    EtCPU: TComboBox;
    EtHardDisk: TComboBox;
    EtMemory: TComboBox;
    test: TSession;
    UpDown11: TUpDown1;
    EtProductID: TEdit1;
    Image2: TImage;
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BtnRefreshClick(Sender: TObject);
    procedure EtLeaveFactoryDateExit(Sender: TObject);
    procedure BtnSetupClick(Sender: TObject);
    procedure ComboTypeDropDown(Sender: TObject);
    procedure EtProductIDChange(Sender: TObject);
    procedure EtProductIDMouseLeave(Sender: TObject);
  private

  public
    Bmp:TBitmap;
    BmpWithHK:TBitmap;
    procedure AutoCreateAlias;
    function MakeBarCode(PCNum:string):string;
    function GetCodeSymbol(Code:string):string;
    function GetBarCodeSymbol(BarCode:string):string;
    procedure DrawBarCode(var Bmp:TBitmap;BarCode:string);
    procedure SaveData;
  end;



var
  FrmTM: TFrmTM;


implementation

uses uDataModel, Preview, uData, uSetup;

{$R *.DFM}


procedure TFrmTM.AutoCreateAlias;
var
  MyList: TStringList;
  DataPath:string;
begin
  if  test.IsAlias(AliasName) then  begin
     Exit;//如果别名存在则不建立否则建立TM别名。
  end;
  MyList := TStringList.Create;
  DataPath:=RectifyPath(GetCurrentDir)+DataDir;
  try
    with MyList do begin
      Add(DBType);
      Add(DBDefaultDriver);
      Add(DBBCD);
      Add(DBPath+DataPath);
    end;
    test.AddAlias(AliasName, Driver, MyList);
   finally
    MyList.Free;
 end;
end;

function TFrmTM.MakeBarCode(PCNum:string):string;
var
  ProduceDate:string;
  BarCode:string;
  Year1,Month1,Day1:Word;
  YearStr,MonthStr,DayStr:string;
begin
  DecodeDate(EtLeaveFactoryDate.DateTime,Year1,Month1,Day1);
  YearStr:=IntToStr(Year1);
  MonthStr:=IntToStr(Month1);
  DayStr:=IntToStr(Day1);
  if Length(MonthStr)<2 then MonthStr:=IntToStrPad0(Month1,2,True) ;
  if Length(DayStr)<2 then DayStr:=IntToStrPad0(Day1,2,True);
  ProduceDate:=YearStr+MonthStr+DayStr;
  BarCode:=StartSign+HKZZ+ProduceDate+PCNum+StartSign;
  Result:=BarCode;
end;

function TFrmTM.GetCodeSymbol(Code:string):string;
begin
  Result:='';
  FrmDataModel.QuTM.Active:=False;
  FrmDataModel.QuTM.Sql.Clear;
  FrmDataModel.QuTM.Sql.Add(SqlGetSign+Code+'''');
  FrmDataModel.QuTM.Active:=True;
  Result:=FrmDataModel.QuTM['TMCode'];
  FrmDataModel.QuTM.Active:=False;
end;
function TFrmTM.GetBarCodeSymBol(BarCode:string):string;
var
  i:integer;
  Len:integer;
begin
  Result:='';
  Len:=Length(BarCode);
  for i:=1 to Len do begin
    Result:=Result+GetCodeSymbol(BarCode[i]);
  end;
end;


procedure TFrmTM.DrawBarCode(var Bmp:TBitmap;BarCode:string);
var
  i,Len,x,j,k:integer;
  BarCodeSymbol:string;
begin
  BarCodeSymbol:=GetBarCodeSymbol(BarCode);
  Len:=Length(BarCodeSymbol);
  x:=0;
  k:=0;
  Bmp.Width:=256;
  Bmp.Height:=60;
  Bmp.Canvas.Brush.Color:=clwhite;
  Bmp.Canvas.Brush.Style:=bsSolid;
  Bmp.Canvas.FillRect(Rect(0,0,256,60));
  Bmp.Canvas.Font.size:=12;
  Bmp.Canvas.Font.Style:=[fsBold];
  Bmp.Canvas.MoveTo(0,0);
  for i:=1 to Len do begin
    j:=i mod 10;
    if j=0 then Inc(k);
    case BarCodeSymbol[i] of
      'A':begin
            Bmp.Canvas.MoveTo(x,0);
            Bmp.Canvas.LineTo(x,40);
            if x=0 then begin
              Bmp.Canvas.TextOut(5,40,'*');
            end else begin
              if j=0 then begin
                Bmp.Canvas.Textout(x,40,BarCode[k+1]);
              end;
            end;
            x:=x+1;
          end;
      'B':begin
            if j=0 then begin
              Bmp.Canvas.Textout(x,40,BarCode[k+1]);
            end;
            x:=x+1;
          end;
      'C':begin
            Bmp.Canvas.MoveTo(x,0);
            Bmp.Canvas.LineTo(x,40);
            Bmp.Canvas.MoveTo(x+1,0);
            Bmp.Canvas.LineTo(x+1,40);
            Bmp.Canvas.MoveTo(x+2,0);
            Bmp.Canvas.LineTo(x+2,40);
            if j=0 then begin
              Bmp.Canvas.Textout(x,40,BarCode[k+1]);
            end;
            x:=x+3;
          end;
      'D':begin
            if j=0 then begin
              Bmp.Canvas.Textout(x,40,BarCode[k+1]);
            end;
            x:=x+3 ;
          end;
    else
      Exit;
    end;
  end;
end;

procedure TFrmTM.SaveData;
begin
  TbData.Open;
  TbData.Append;
  TbData['PCType']:=ComboType.Text;
  TbData['LicenseID']:=EtLicenseID.Text;
  TbData['CriterionID']:=EtCriterionID.Text;
  TbData['LeaveFactoryDate']:=EtLeaveFactoryDate.Date;//StrToFloat(Format('%g',[EtLeaveFactoryDate.Date]));
  TbData['Weight']:=EtWeight.Text;
  TbData['ExteriorSize']:=EtExteriorSize.Text;
  TbData['CPU']:=EtCPU.Text;
  TbData['HardDisk']:=EtHardDisk.Text;
  TbData['Memory']:=EtMemory.Text;
  TbData['ProductID']:=StrToInt(EtProductID.Text);
  TbData.Post;
  TbData.Close;
end;



procedure TFrmTM.BitBtn4Click(Sender: TObject);
begin
  BtnRefreshClick(self);
  FrmPreview.ShowModal;
end;

procedure TFrmTM.BitBtn3Click(Sender: TObject);
begin
  Close;
end;

procedure TFrmTM.FormCreate(Sender: TObject);
var
  List:TStringList;
begin
//  height:=425;
//  width:=385;
//  panel1.height:=390;
//  panel1.width:=370;
  AutoCreateAlias;
  List:=TStringList.Create;
  FrmSetup.GetList('型号',List);
  ComboType.Clear;
  ComboType.Items.AddStrings(List);
  ComboType.ItemIndex:=0;

  List.Clear;
  FrmSetup.GetList('生产许可证号',List);
  EtLicenseID.Clear;
  EtLicenseID.Items.AddStrings(List);
  EtLicenseID.ItemIndex:=0;

  List.Clear;
  FrmSetup.GetList('生产标准号',List);
  EtCriterionID.Clear;
  EtCriterionID.Items.AddStrings(List);
  EtCriterionID.ItemIndex:=0;

  List.Clear;
  FrmSetup.GetList('重量',List);
  EtWeight.Clear;
  EtWeight.Items.AddStrings(List);
  EtWeight.ItemIndex:=0;

  List.Clear;
  FrmSetup.GetList('外型尺寸',List);
  EtExteriorSize.Clear;
  EtExteriorSize.Items.AddStrings(List);
  EtExteriorSize.ItemIndex:=0;

  List.Clear;
  FrmSetup.GetList('CPU',List);
  EtCPU.Clear;
  EtCPU.Items.AddStrings(List);
  EtCPU.ItemIndex:=0;

  List.Clear;
  FrmSetup.GetList('硬盘',List);
  EtHardDisk.Clear;
  EtHardDisk.Items.AddStrings(List);
  EtHardDisk.ItemIndex:=0;

  List.Clear;
  FrmSetup.GetList('内存',List);
  EtMemory.Clear;
  EtMemory.Items.AddStrings(List);
  EtMemory.ItemIndex:=0;

  Bmp:=TBitmap.Create;
  BmpWithHK:=TBitmap.Create;
  BmpWithHK.Width:=210;
  BmpWithHK.Height:=44;
  EtLeaveFactoryDate.Date:=Now();
  EtProductID.Text:='000';
  List.Free;
end;

procedure TFrmTM.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Bmp.Free;
  BmpWithHK:=TBitmap.Create;
end;

procedure TFrmTM.FormShow(Sender: TObject);
var
  Temp:TBitmap;
  BarCode:string;
begin
  Temp:=TBitmap.Create;
  Temp.LoadFromFile('HuiKe.bmp');
  BarCode:=MakeBarCode('000');
  DrawBarCode(Bmp,BarCode);
  BmpWithHk.Canvas.StretchDraw(Rect(0,0,56,44),Temp);
  BmpWithHK.Canvas.StretChDraw(Rect(57,0,210,44),Bmp);
  Image2.Canvas.StretchDraw(Rect(0,0,60,60),Temp);
  Image2.Canvas.StretchDraw(Rect(61,0,300,60),Bmp);
  Temp.Free;
  EtProductID.Text:='000';
end;

procedure TFrmTM.BitBtn2Click(Sender: TObject);
begin
  BtnRefreshClick(self);
  FrmPreview.BtnPrintClick(Self);
end;

procedure TFrmTM.BitBtn1Click(Sender: TObject);
begin
  FrmQuery.ShowModal;
end;

procedure TFrmTM.BtnRefreshClick(Sender: TObject);
var
  BarCode:string;
  Temp:TBitmap;
begin
  if Length(EtProductID.Text)<3 then EtProductID.Text:=IntToStrPad0(StrToInt(EtProductID.Text),3,true);
  Temp:=TBitmap.Create;
  Temp.LoadFromFile('HuiKe.bmp');
  BarCode:=MakeBarCode(EtProductID.Text);
  DrawBarCode(Bmp,BarCode);
  BmpWithHk.Canvas.StretchDraw(Rect(0,0,56,44),Temp);
  BmpWithHK.Canvas.StretChDraw(Rect(57,0,210,44),Bmp);
  Image2.Canvas.StretchDraw(Rect(0,0,60,60),Temp);
  Image2.Canvas.StretchDraw(Rect(61,0,300,60),Bmp);
  Temp.Free;
end;

procedure TFrmTM.EtLeaveFactoryDateExit(Sender: TObject);
begin
  BtnRefreshClick(Self);
end;

procedure TFrmTM.BtnSetupClick(Sender: TObject);
begin
  FrmSetup.ShowModal;
end;

procedure TFrmTM.ComboTypeDropDown(Sender: TObject);
var
  List:TStringList;
  Option:string;
  Button:TComboBox;
begin
  List:=TStringList.Create;
  Button:= (Sender as TComboBox);
  case Button.tag of
    100:Option:='型号';
    101:Option:='生产许可证号';
    102:Option:='生产标准号';
    103:Option:='重量';
    104:Option:='外型尺寸';
    105:Option:='CPU';
    106:Option:='硬盘';
    107:Option:='内存';
  end;
  FrmSetup.GetList(Option,List);
  Button.Items.Assign(List);
  List.Free;
end;

procedure TFrmTM.EtProductIDChange(Sender: TObject);
var
  k:integer;
begin
  Try
    k:=StrToInt(EtProductID.Text);
   except on EConvertError   do
     begin
     EtProductID.Text:='0';
     ShowMessage('请输入数字。');
     end;
   end;
end;

procedure TFrmTM.EtProductIDMouseLeave(Sender: TObject);
var
  k:integer;
begin
  Try
    k:=StrToInt(EtProductID.Text);
    EtProductID.Text:=IntToStrPad0(k,3,True);
    BtnRefreshClick(Self);
   except on EConvertError   do begin
    EtProductID.Text:='0';
    ShowMessage('请输入数字。');
    end;
   end;
end;
end.

⌨️ 快捷键说明

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