?? mtm.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 + -