亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? posprintex.~pas

?? 小票樣式打印模板設計,和管家婆的pos收銀系統小票樣式設計差不多
?? ~PAS
?? 第 1 頁 / 共 2 頁
字號:
unit PosPrintEx;

interface

uses
  SysUtils,Classes,Controls,stdCtrls,DB,GridsEh,DBGrideh,ytxStringGridEh,FrmPrintManUnit,FrmPreviewDlg;

const
  FileVersion=$AB71;
type
  TDriveMode=(DMNone,DMWindows);
  TDataType=(DtNone,DtTitleFields,DtBodyFields,DtSysFields);
  TBodyType=(btGrid,btDataSet);

  TReportVar=Class;
  TReportVars=Class;
  {表報主體}
  TPosReport = class(TComponent)
  private
    { Private declarations }
        {Private}
    FDriveMode:TDriveMode;        //驅動模式
    FComName:String;              //端口名稱
    FComByte:Integer;             //波特率
    FOpenBoxCode:String;          //開錢箱指令
    FAutoOpenBox:Boolean;         //打印后自動開錢箱
    FFootSpaceRow:integer;        //走紙行數
    FPageWidth:Integer;           //頁寬
    FTitleRowCount:integer;       //頁頭行數,用于換頁加表頭
    FQuantiyDiciaLength:integer;  //數量小數點長度
    FMoneyDiciaLength:integer;    //金額小數點長度

    FSysVars:TReportVars;         //系統變量
    FTitleVars:TReportVars;       //表頭字段

    FPageNo:integer;                //頁碼
    FPageCount:integer;             //頁數
    FDetailRowCount:integer;        //行數

    FBodyStartRow:integer;          //表體開始行數
    FBodyEndRow:integer;            //表體結束行數
    FStepRow:integer;               //表體占用行數

    FBodyType:TBodyType;           //表體類型

    FGrid:TYTXStringGridEh;
    FDataSet:TDataSet;
    FOpenFlag:Boolean;   //模板打開標示
    FFilePathName:String; //械板文件位置

    FReportLines:TStringList;
    FQuantityDiciaLength: integer;

    FrmDesign:TFrmPrintMan;
    FrmPreview:TFrmPreview;

    procedure CreateSysValues;
    procedure InitSysValues;
    Procedure SetTitleVars(TitleVars:TReportVars);
    Function GetTitleVars:TReportVars;
  protected
    { Protected declarations }
  public
    { Public declarations }
     Constructor Create(AOwner:TComponent);Override;
     Destructor Destroy;override;
     Procedure ShowVarList(VarType:TDataType;Out ListFields:TListBox);
     Procedure SetBodyFields(AValue:TYTXStringGridEh);overload;
     Procedure SetBodyFields(AValue:TDataSet);Overload;
     Procedure SaveToFile(FileName:String);
     Procedure LoadFromFile(FileName:String);
     Procedure ShowDesign;
     Procedure Print;
     Procedure PrintPreview;
  published
    { Published declarations }
    Property ReportVars:TReportVars Read GetTitleVars Write SetTitleVars;
    Property AutoOpenBox:boolean Read FAutoOpenBox Write FAutoOpenBox;
    Property OpenBoxCode:String Read FOpenBoxCode Write FOpenBoxCode;
    Property DriveMode:TDriveMode Read FDriveMode Write FDriveMode;
    Property ComName:String Read FComName Write FComName;
    Property ComByte:Integer Read FComByte Write FComByte;
    Property FootSpaceRow:Integer Read FFootSpaceRow Write FFootSpaceRow;
    Property PageWidth:integer Read FPageWidth Write FPageWidth;
    Property TitleRowCount:Integer Read FTitleRowCount Write FTitleRowCount;
    Property QuantityDicial:integer Read FQuantityDiciaLength Write FQuantityDiciaLength;
    Property MoneyDicial:integer Read FMoneyDiciaLength Write FMoneyDiciaLength;
    Property ReportLines:TStringList Read FReportLines Write FReportLines;
  end;

    {報表變量}
  TReportVar=Class(TCollectionItem)
  Private
    {Private}
    FVarName:String;
    FVarCaption:String;
    FVarValue:Variant;
    Procedure SetVarName(Value:String);
    Function GetVarName:String;
    Procedure SetVarCaption(Value:String);
    Function GetVarCaption:String;
    Procedure SetVarValue(Value:Variant);
    Function GetVarValue:Variant;
  Protected
    {Protected}
    procedure Assign(Source:TPersistent);override;
    function GetDisplayName: string; override;
    Function Index:integer;
  Public
    {Public}
    Constructor Create(ReportVars:TCollection);
  Published
    {Published}
    Property Name:String Read GetVarName Write SetVarName;
    Property Caption:String Read GetVarCaption Write SetVarCaption;
    Property Value:Variant Read GetVarValue Write SetVarValue;
  end;
    TReportVarClass=class of TReportVar;

  {報表變量集合}
  TReportVars=Class(TCollection)
  Private
    {Private}
    FPosReport:TPosReport;
    Function GetCount:integer;
    Function GetReportVar(Index:integer):TReportVar;
    Procedure SetReportVar(Index:integer;Value:TReportVar);
  protected
    {Protected}
    function GetOwner: TPersistent; override;
  Public
    {Public}
    Constructor Create(Report:TPosReport;ReportVarClass:TReportVarClass);
    Function Add:TReportVar;
    Procedure AddVar(ACaption,AName:String;Value:Variant);
    Procedure Clear;
    Function GetValueByName(VarName:String):Variant;
    Function GetValueByCaption(VarCaption:String):Variant;
    Function GetNameByCaption(Caption:String):String;
    Procedure SetValueByName(varName:String;Value:Variant);
    Procedure SetValueByCaption(varCaption:String;Value:Variant);
    Property Items[Index:integer]:TReportVar Read GetReportVar Write SetReportVar;default;
    Property PosReport:TPosReport Read FPosReport;
  Published
    {Published}
    Property ItemCount:integer Read GetCount;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('YtxReport', [TPosReport]);
end;

{ TPosReport }

constructor TPosReport.Create(AOwner: TComponent);
begin
  inherited;
  FAutoOpenBox:=false;
  FBodyEndRow:=0;
  FBodyStartRow:=0;
  FBodyType:=BtGrid;
  FComByte:=9600;
  FDataSet:=nil;
  FDetailRowCount:=0;
  FDriveMode:=dmNone;
  FFilePathName:='';
  FFootSpaceRow:=3;
  FGrid:=nil;
  FMoneyDiciaLength:=2;
  FOpenBoxCode:='Chr(27)+''p''+Chr(0)+Chr(60)+Chr(255)';
  FOpenFlag:=False;
  FPageCount:=0;
  FPageWidth:=53;
  FQuantityDiciaLength:=0;
  FStepRow:=0;
  FTitleRowCount:=0;
  FTitleVars:=TReportVars.Create(self,TReportVar);
  FSysVars:=TReportVars.Create(self,TReportVar);
  FReportLines:=TStringList.Create;
  FrmDesign:=TFrmPrintMan.Create(AOwner);
  FrmPreview:=TFrmPreview.Create(AOwner);
  CreateSysValues;   //添加系統變
end;

procedure TPosReport.CreateSysValues;
begin
  FSysVars.AddVar('日期時間','[@.長日期]','');
  FSysVars.AddVar('日期','[@.日期]','');
  FSysVars.AddVar('時間','[@.時間]','');
  FSysVars.AddVar('頁碼','[@.頁碼]','');
  FSysVars.AddVar('頁數','[@.頁數]','');
  FSysVars.AddVar('行數','[@.行數]','');
  FSysVars.AddVar('開發商','[@.開發商]','');
end;

destructor TPosReport.Destroy;
begin
  FTitleVars.Free;
  FSysVars.Free;
  FrmDesign.Free;
  FrmDesign:=nil;
  FrmPreview.Free;
  FrmPreview:=nil;
  inherited;
end;

function TPosReport.GetTitleVars: TReportVars;
begin
  if Assigned(FTitleVars) then
    Result:=FTitleVars;
end;

procedure TPosReport.InitSysValues;
begin
  FSysVars.SetValueByCaption('日期',FormatDateTime('YYYY-MM-DD',Now));
  FSysVars.SetValueByCaption('長時間',FormatDateTime('YYYY-MM-DD HH:MM:SS',Now));
  FSysVars.SetValueByName('時間',FormatDateTime('HH:MM:SS',now));
  FSysVars.SetValueByCaption('頁碼',intToStr(FPageNo));
  FSysVars.SetValueByCaption('頁數',intToStr(FPageCount));
  FSysVars.SetValueByCaption('行數',intToStr(FDetailRowCount));
  FSysVars.SetValueByCaption('開發商','貴陽欣安博科技');
end;

procedure TPosReport.LoadFromFile(FileName: String);
var
  FileFlag:Word;
  PosFile:TFileStream;
  I:integer;
  RowCount:Integer;
  tmpLine:String;
begin
  PosFile:=TFileStream.Create(FileName,fmOpenRead);
  try
    with PosFile do
    begin
      Read(FileFlag,SizeOf(FileFlag));
      if FileFlag<>FileVersion then
      begin
        Raise Exception.Create('打開的文件不是有效的小票文件或已不支持該版本!');
        Exit;
      end;
      Read(FDriveMode,SizeOf(FDriveMode));
      Read(FComName,SizeOf(FComName));
      Read(FComByte,SizeOf(FComByte));
      Read(FOpenBoxCode,SizeOf(FOpenBoxCode));
      Read(FAutoOpenBox,SizeOf(FAutoOpenBox));
      Read(FFootSpaceRow,SizeOf(FFootSpaceRow));
      Read(FPageWidth,SizeOf(FPageWidth));
      Read(FTitleRowCount,SizeOf(FTitleRowCount));
      Read(FQuantityDiciaLength,SizeOf(FQuantityDiciaLength));
      Read(FMoneyDiciaLength,SizeOf(FMoneyDiciaLength));
      Read(RowCount,SizeOf(RowCount));
      FReportLines.Clear;
      For I:=0 to RowCount-1 do
      begin
        Read(tmpLine,SizeOf(tmpLine));
        FReportLines.Add(tmpLine);
      end;
    end;
    FOpenFlag:=True;
    FFilePathName:=FileName;
  Finally
    PosFile.Free;
  end;
end;

procedure TPosReport.Print;
begin

end;

procedure TPosReport.PrintPreview;
begin

end;

procedure TPosReport.SaveToFile(FileName: String);
var
  FileFlag:Word;
  PosFile:TFileStream;
  I:integer;
  RowCount:integer;
  tmpLine:String;
begin
  PosFile:=TFileStream.Create(FileName,fmOpenWrite Or fmCreate);
  try
    with PosFile do
    begin
      FileFlag:=FileVersion;
      Write(PosFile,SizeOf(PosFile));   //保存文件版本類型

      {保存小票參數}
      Write(FDriveMode,SizeOf(FDriveMode));
      Write(FComName,SizeOf(FComName));
      Write(FComByte,SizeOf(FComByte));
      Write(FOpenBoxCode,SizeOf(FOpenBoxCode));

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线日韩一区二区| 午夜精品久久久久久久久久久 | 国产黄色91视频| 蜜臀av一区二区| 久久国产精品99精品国产 | 99视频热这里只有精品免费| 国产精品一区二区久久不卡 | 精品福利二区三区| 欧美大尺度电影在线| 日韩西西人体444www| 欧美mv日韩mv国产网站| 久久只精品国产| 国产精品女上位| 亚洲欧美激情视频在线观看一区二区三区 | 日韩黄色一级片| 日本aⅴ免费视频一区二区三区| 日韩精品高清不卡| 极品美女销魂一区二区三区免费| 国产精品亚洲一区二区三区在线| 国产精品18久久久久久久网站| 国产suv精品一区二区883| www.日韩在线| 欧美视频一区在线| 欧美一区二区三区白人| 亚洲精品一区二区三区福利| 国产精品女同互慰在线看| 一区二区三区中文字幕电影 | 全国精品久久少妇| 国产成人精品免费在线| 一本色道a无线码一区v| 在线成人av影院| 久久久亚洲精品一区二区三区| 亚洲欧洲三级电影| 亚洲成人手机在线| 国产高清精品久久久久| 色菇凉天天综合网| 欧美成人综合网站| 国产精品国产三级国产普通话99| 亚洲最色的网站| 免费成人美女在线观看.| 国产99精品在线观看| 欧美日韩一区二区三区不卡| 久久久高清一区二区三区| 亚洲一区欧美一区| 国产真实乱子伦精品视频| 91丝袜美腿高跟国产极品老师 | 成人丝袜高跟foot| 欧美日韩国产高清一区二区| 久久精品一区二区三区不卡 | 日韩成人午夜电影| 成人黄色国产精品网站大全在线免费观看| 日本丰满少妇一区二区三区| 精品久久久久久久久久久院品网| 日韩美女视频一区二区 | 色天使色偷偷av一区二区| 日韩西西人体444www| 亚洲人被黑人高潮完整版| 经典三级视频一区| 欧美日韩一区二区三区四区| 中文字幕av一区二区三区免费看| 日本 国产 欧美色综合| 91久久精品一区二区| 中文字幕的久久| 久久超碰97人人做人人爱| 欧美色综合影院| 亚洲天堂a在线| 国产成人av一区二区三区在线观看| 欧美区在线观看| 亚洲精品欧美二区三区中文字幕| 国内精品免费**视频| 欧美三级视频在线| 亚洲美女一区二区三区| 国产成人免费视频网站高清观看视频| 欧美精品乱人伦久久久久久| 国产精品人人做人人爽人人添| 九九九精品视频| 91精品国产综合久久香蕉麻豆| 夜夜嗨av一区二区三区网页| av资源站一区| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 不卡的av网站| 久久精品视频免费观看| 久久99精品国产麻豆婷婷洗澡| 欧美日韩一区精品| 亚洲午夜一区二区三区| 9人人澡人人爽人人精品| 国产午夜精品一区二区| 极品销魂美女一区二区三区| 日韩一区二区三区四区五区六区| 亚洲第一狼人社区| 日本丰满少妇一区二区三区| 亚洲日本欧美天堂| 91麻豆精东视频| 国产精品欧美一级免费| 成人国产免费视频| 亚洲国产精品高清| 成人污污视频在线观看| 国产精品久久久久久久久快鸭 | 久久综合色8888| 韩国午夜理伦三级不卡影院| 精品国产髙清在线看国产毛片| 免播放器亚洲一区| 91精品国产色综合久久不卡蜜臀| 午夜视黄欧洲亚洲| 欧美少妇一区二区| 日韩av中文在线观看| 91麻豆精品国产91久久久更新时间| 午夜精品视频在线观看| 9191国产精品| 久久99精品国产91久久来源| 亚洲精品一区二区三区蜜桃下载| 国产一区二区三区| 国产欧美精品在线观看| 成人精品视频.| 亚洲少妇中出一区| 欧美撒尿777hd撒尿| 日韩精品免费专区| 久久综合九色综合久久久精品综合 | 麻豆成人免费电影| 亚洲精品在线三区| 国产a区久久久| 亚洲欧美另类小说| 欧美日韩精品欧美日韩精品| 热久久久久久久| 久久久久久**毛片大全| 波多野结衣亚洲| 亚洲国产欧美另类丝袜| 欧美一区二区三区色| 国产一区二区三区不卡在线观看 | 天堂蜜桃91精品| 欧美大度的电影原声| 高清av一区二区| 亚洲理论在线观看| 日韩欧美色综合网站| 丰满放荡岳乱妇91ww| 樱桃视频在线观看一区| 日韩一区二区三区三四区视频在线观看| 久久狠狠亚洲综合| 成人欧美一区二区三区| 91精品国产综合久久香蕉的特点| 国产一区二区三区国产| 一区二区三区四区蜜桃| 日韩一区二区精品| 成人美女视频在线观看| 日韩中文字幕1| 国产精品色在线| 日韩一区二区三区视频在线 | 精品日韩在线观看| 99riav久久精品riav| 日本不卡一区二区三区高清视频| 欧美激情一区二区在线| 欧美久久久久久久久中文字幕| 国产一区二区视频在线| 一片黄亚洲嫩模| 久久久久久毛片| 欧美色涩在线第一页| 国产成人精品亚洲午夜麻豆| 午夜a成v人精品| 一区在线观看视频| 精品嫩草影院久久| 欧美性三三影院| 成人性生交大片免费看视频在线 | 日韩精品五月天| 亚洲男女毛片无遮挡| 精品久久久久久亚洲综合网| 在线看日本不卡| 国产.欧美.日韩| 日本91福利区| 亚洲一区影音先锋| 日韩一区有码在线| 亚洲精品在线一区二区| 56国语精品自产拍在线观看| av在线一区二区三区| 国产老女人精品毛片久久| 亚洲观看高清完整版在线观看| 欧美国产精品一区二区三区| 日韩欧美亚洲国产另类 | 性久久久久久久久| 亚洲视频资源在线| 欧美国产日韩一二三区| 精品捆绑美女sm三区| 欧美丰满少妇xxxbbb| 欧美午夜一区二区三区| 色综合欧美在线| fc2成人免费人成在线观看播放| 久久 天天综合| 日韩国产精品91| 亚洲国产日韩综合久久精品| 亚洲精选在线视频| 亚洲欧洲另类国产综合| 国产蜜臀97一区二区三区| 欧美精品一区二区不卡| 日韩精品一区二区三区swag| 欧美一卡在线观看| 欧美日韩一区 二区 三区 久久精品| 色av一区二区| 欧美在线小视频| 欧美日韩精品一区二区三区四区 | 久久这里只有精品视频网| 欧美va天堂va视频va在线|