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

📄 printcom1.pas

📁 思微POS连锁超市管理系统 (商业代码),几年前的东西了
💻 PAS
字号:
unit printcom1;

interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, VSSComm32, Registry, Buttons;
type
  Tdy = class(TForm)
    ComboBox1: TComboBox;
    Label1: TLabel;
    Init: TButton;
    FeedLines: TButton;
    Button1: TButton;
    Label2: TLabel;
    MicroFeed: TButton;
    Button2: TButton;
    ComboBox2: TComboBox;
    Label3: TLabel;
    Label4: TLabel;
    edit2: TEdit;
    Edit1: TEdit;
    CutMode: TComboBox;
    Label5: TLabel;
    Color: TComboBox;
    Label6: TLabel;
    Button6: TButton;
    Button5: TButton;
    Button4: TButton;
    Label7: TLabel;
    Button3: TButton;
    BitBtn1: TBitBtn;
    VSSComm321: TVSSComm32;
    ComboBox3: TComboBox;
    procedure PortChange(Sender: TObject);
    procedure PrnTypeChange(Sender: TObject);
    procedure InitClick(Sender: TObject);
    procedure FeedLinesClick(Sender: TObject);
    procedure MicroFeedClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure ComboBox3Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
const
  DLLNAME = 'mPrnDll.dll';
var
  dy: Tdy;

  //打印机端口号:1:COM1/LPT1,2:COM2/LPT2,3:COM3,4:COM4
  giPt: integer = 1;

  //打印机类型:
  //    1:HK110D;  2:HKP600T;  3:ADP300;
  //    4:HK588TP;  5:TM300K;  6:TM210D;  7:TM210P
  giPrnType: integer = 1;

  //动态链接库函数声明
function HK110D_Init(iPt: integer): integer; export; stdcall; far; external DLLNAME;
function HK110D_PrnCnEn(iPt: integer; str: string): integer; export; stdcall; far; external DLLNAME;
function HK110D_FeedLines(iPt, iLines: integer): integer; export; stdcall; far; external DLLNAME;
function HK110D_MicroFeed(iPt, iLines: integer): integer; export; stdcall; far; external DLLNAME;

function HKP600T_Init(iPt: integer): integer; export; stdcall; far; external DLLNAME;
function HKP600T_PrnCnEn(iPt: integer; str: string): integer; export; stdcall; far; external DLLNAME;
function HKP600T_FeedLines(iPt, iLines: integer): integer; export; stdcall; far; external DLLNAME;
function HKP600T_Cut(iPt: integer): integer; export; stdcall; far; external DLLNAME;

function ADP300_Init(iPt: integer): integer; export; stdcall; far; external DLLNAME;
function ADP300_PrnCnEn(iPt, iColor: integer; str: string): integer; export; stdcall; far; external DLLNAME;
function ADP300_FeedLines(iPt, iLines: integer): integer; export; stdcall; far; external DLLNAME;
function ADP300_MicroFeed(iPt, iLines: integer): integer; export; stdcall; far; external DLLNAME;
function ADP300_Cut(iPt, iVal: integer): integer; export; stdcall; far; external DLLNAME;

function HK588TP_Init(iPt: integer): integer; export; stdcall; far; external DLLNAME;
function HK588TP_PrnCnEn(iPt: integer; str: string): integer; export; stdcall; far; external DLLNAME;
function HK588TP_FeedLines(iPt, iLines: integer): integer; export; stdcall; far; external DLLNAME;
function HK588TP_MicroFeed(iPt, iLines: integer): integer; export; stdcall; far; external DLLNAME;

function TM300K_Init(iPt: integer): integer; export; stdcall; far; external DLLNAME;
function TM300K_PrnCnEn(iPt, iColor: integer; sData: string): integer; export; stdcall; far; external DLLNAME;
function TM300K_FeedLines(iPt, iLines: integer): integer; export; stdcall; far; external DLLNAME;
function TM300K_MicroFeed(iPt, iLines: integer): integer; export; stdcall; far; external DLLNAME;
function TM300K_Cut(iPt, iVal: integer): integer; export; stdcall; far; external DLLNAME;

function TM210D_Init(iPt: integer): integer; export; stdcall; far; external DLLNAME;
function TM210D_PrnCnEn(ipt, iColor: integer; str: string): integer; export; stdcall; far; external DLLNAME;
function TM210D_FeedLines(iPt, iLines: integer): integer; export; stdcall; far; external DLLNAME;
function TM210D_MicroFeed(iPt, iLines: integer): integer; export; stdcall; far; external DLLNAME;

function TM210P_Init(iPt: integer): integer; export; stdcall; far; external DLLNAME;
function TM210P_PrnCnEn(ipt, iColor: integer; str: string): integer; export; stdcall; far; external DLLNAME;
function TM210P_FeedLines(iPt, iLines: integer): integer; export; stdcall; far; external DLLNAME;
function TM210P_MicroFeed(iPt, iLines: integer): integer; export; stdcall; far; external DLLNAME;

implementation
{$R *.DFM}

//打印机端口

procedure Tdy.PortChange(Sender: TObject);
begin
  if combobox1.ItemIndex = -1 then
    giPt := 1
  else if (combobox1.itemindex >= 0) and (combobox1.itemindex <= 1) then
    giPt := combobox1.itemindex + 1 //LPT1,LPT2
  else
    giPt := combobox1.itemindex - 1; //COM1-4
end;

//打印机类型

procedure Tdy.PrnTypeChange(Sender: TObject);
begin
  if combobox2.ItemIndex = -1 then
    giPrnType := 1
  else
    giPrnType := combobox2.itemindex + 1;

  MicroFeed.Enabled := true;
  Button2.Enabled := false;
  CutMode.enabled := false;
  CutMode.ItemIndex := 1;
  Color.enabled := false;
  case giPrnType of
    1: ; //HK110D
    2: //HKP600T
      begin
        MicroFeed.enabled := false;
        Button2.Enabled := true;
      end;
    3: //ADP300
      begin
        Button2.Enabled := true;
        CutMode.enabled := true;
        Color.enabled := true;
      end;
    4: ; //HK588TP
    5: //TM300K
      begin
        Button2.Enabled := true;
        CutMode.enabled := true;
        Color.enabled := true;
      end;
    6, 7: //TM210D
      Color.enabled := true;
  end;
end;

//初始化

procedure Tdy.InitClick(Sender: TObject);
begin
  case giPrnType of
    1: HK110D_Init(giPt);
    2: HKP600T_Init(giPt);
    3: ADP300_Init(giPt);
    4: HK588TP_Init(giPt);
    5: TM300K_Init(giPt);
    6: TM210D_Init(giPt);
    7: TM210P_Init(giPt);
  end;
end;

//进纸

procedure Tdy.FeedLinesClick(Sender: TObject);
var
  iLines: integer;
begin
  iLines := strtoint(edit2.text);
  case giPrnType of
    1: HK110D_FeedLines(giPt, iLines);
    2: HKP600T_FeedLines(giPt, iLines);
    3: ADP300_FeedLines(giPt, iLines);
    4: HK588TP_FeedLines(giPt, iLines);
    5: TM300K_FeedLines(giPt, iLines);
    6: TM210D_FeedLines(giPt, iLines);
    7: TM210P_FeedLines(giPt, iLines);
  end;
end;

//微进纸

procedure Tdy.MicroFeedClick(Sender: TObject);
var
  iLines: integer;
begin
  case giPrnType of
    1: HK110D_MicroFeed(giPt, strtoint(edit2.text));
    //HKP600T不能微进纸
    3: ADP300_MicroFeed(giPt, strtoint(edit2.text));
    4: HK588TP_MicroFeed(giPt, strtoint(edit2.text));
    5: TM300K_MicroFeed(giPt, strtoint(edit2.text));
    6: TM210D_MicroFeed(giPt, strtoint(edit2.text));
    7: TM210P_MicroFeed(giPt, strtoint(edit2.text));
  end;
end;

//打印

procedure Tdy.Button1Click(Sender: TObject);
var
  iColor: integer;
begin
  if Color.ItemIndex = -1 then
    iColor := 1
  else
    iColor := Color.itemindex + 1;
  case giPrnType of
    1: HK110D_PrnCnEn(giPt, edit1.Text);
    2: HKP600T_PrnCnEn(giPt, edit1.Text);
    3: ADP300_PrnCnEn(giPt, iColor, edit1.Text);
    4: HK588TP_PrnCnEn(giPt, edit1.Text);
    5: TM300K_PrnCnEn(giPt, iColor, edit1.Text);
    6: TM210D_PrnCnEn(giPt, iColor, edit1.Text);
    7: TM210P_PrnCnEn(giPt, iColor, edit1.Text);
  end;
end;

//切纸

procedure Tdy.Button2Click(Sender: TObject);
var
  iCutMode: integer; //切纸方式
begin
  if CutMode.ItemIndex = -1 then
    iCutMode := 1
  else
    iCutMode := CutMode.ItemIndex + 1;

  case giPrnType of
    //HK110D无切纸刀
    2: HKP600T_Cut(giPt);
    3: ADP300_Cut(giPt, iCutMode);
    //HK588TP无切纸刀
    5: TM300K_Cut(giPt, iCutMode);
    //TM210D/210P 无切纸刀
  end;
end;

procedure Tdy.FormCreate(Sender: TObject);
var Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    if Reg.OpenKey('\Software\pos', False) then
    begin
      ComboBox1.ItemIndex := strtoint(Reg.ReadString('pntdk'));
      ComboBox1.OnChange(sender);
      ComboBox2.ItemIndex := strtoint(Reg.ReadString('pntxh'));
      ComboBox2.OnChange(sender);
      ComboBox3.ItemIndex := strtoint(Reg.ReadString('gxdk'));
      ComboBox3.OnChange(sender);
    end
    else
    begin
      ComboBox1.ItemIndex := 0;
      ComboBox1.OnChange(sender);
      ComboBox2.ItemIndex := 4;
      ComboBox2.OnChange(sender);
      ComboBox3.ItemIndex := 0;
      ComboBox3.OnChange(sender);
      Reg.CreateKey('\Software\Microsoft\pos'); // 创建我们的主键
      Reg.OpenKey('\Software\pos', True); // 进入我们自己的主键中
      Reg.WriteString('pntdk', inttostr(ComboBox1.ItemIndex));
      Reg.WriteString('pntxh', inttostr(ComboBox2.ItemIndex));
      Reg.WriteString('qxkzlx', inttostr(ComboBox1.ItemIndex));
      Reg.WriteString('gxdk', inttostr(ComboBox3.ItemIndex));
      Reg.WriteString('qxzblx', '1');
      Reg.WriteString('qxdk', '0');
    end;
  finally
    Reg.Free; // 用 Try..Finally 结构确保 REG 变量能够释放。
  end;
  Color.ItemIndex := 0;
  Init.Click;
end;

procedure Tdy.Button6Click(Sender: TObject);
begin
  VSSComm321.WriteCommData(#12, 1);
end;

procedure Tdy.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  VSSComm321.StopComm;
end;

procedure Tdy.Button4Click(Sender: TObject);
begin
  VSSComm321.WriteCommData(#27#64, 2);
end;

procedure Tdy.Button5Click(Sender: TObject);
begin
  VSSComm321.WriteCommData(Pchar(#27#81#65 + Edit1.text + #13), length(#27#81#65 + Edit1.text + #13));
end;

procedure Tdy.Button3Click(Sender: TObject);
var Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    if Reg.OpenKey('\Software\pos', False) then
    begin
      Reg.WriteString('pntdk', inttostr(ComboBox1.ItemIndex));
      Reg.WriteString('pntxh', inttostr(ComboBox2.ItemIndex));
      Reg.WriteString('gxdk', inttostr(ComboBox3.ItemIndex));
    end;
  finally
    Reg.Free; // 用 Try..Finally 结构确保 REG 变量能够释放。
  end;
end;

procedure Tdy.ComboBox3Change(Sender: TObject);
begin
  if ComboBox3.ItemIndex = 0 then
    VSSComm321.CommPort := com1
  else
    VSSComm321.CommPort := com2;
  VSSComm321.StopComm;
  VSSComm321.StartComm;
end;

end.

⌨️ 快捷键说明

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