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

📄 testform.~pas

📁 data matrix编码程序 将字符串转换为二维码黑白图形
💻 ~PAS
字号:
unit TestForm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, ComCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    g: TStringGrid;
    Panel1: TPanel;
    Label1: TLabel;
    Memo1: TMemo;
    Edit4: TEdit;
    Label2: TLabel;
    UpDown1: TUpDown;
    Button3: TButton;
    Button1: TButton;
    Label3: TLabel;
    Label4: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Label5: TLabel;
    Label6: TLabel;
    Edit3: TEdit;
    Edit5: TEdit;
    Label7: TLabel;
    Edit6: TEdit;
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure gDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect;
      State: TGridDrawState);
    procedure Edit4Change(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses ReedSolomon, ECC200, Plot;

procedure TForm1.Button2Click(Sender: TObject);
var
  x,y,z : TPloy;
begin
  SetLength(x, 8);
  x[7] := 142;
  x[6] := 164;
  x[5] := 186;
  x[4] := 0;
  x[3] := 0;
  x[2] := 0;
  x[1] := 0;
  x[0] := 0;

  SetLength(y, 6);
  y[5] := 1;
  y[4] := 62;
  y[3] := 111;
  y[2] := 15;
  y[1] := 48;
  y[0] := 228;

  z := PloyMod(x,y);

  //Edit2.Text := IntToStr(z[4]) + ',' + IntToStr(z[3]) + ',' + IntToStr(z[2])
  //  + ',' + IntToStr(z[1]) + ',' + IntToStr(z[0]);
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  s : TByteArray;
  m : TByteArray;
  i, j : integer;
  t, tt : string;
  w, h : integer;
begin
  t := Memo1.Text;
  SetLength(s, Length(t));
  for i := 1 to Length(t) do
  begin
    s[i-1] := Ord(t[i]);
  end;
  CalcECC200(s, ecc200_Autosize, ecc200_Square, m, w, h);
  g.RowCount := h;
  g.ColCount := w;
  for i := 0 to h - 1 do
  begin
    for j := 0 to w - 1 do
    begin
      g.Cells[j, i] := IntToStr(m[i * w + j]);
    end;
  end;
end;

procedure TForm1.gDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  if g.Cells[acol, arow] = '1' then
  begin
    g.Canvas.Pen.Color := 0;
    g.Canvas.Brush.Color := 0
  end
  else
  begin
    g.Canvas.Pen.Color := $FFFFFF;
    g.Canvas.Brush.Color := $FFFFFF;
  end;
  g.Canvas.Rectangle(Rect);
end;

procedure TForm1.Edit4Change(Sender: TObject);
var
  n : integer;
begin
  try
    n := StrToInt(Edit4.Text);
    g.DefaultColWidth := n;
    g.DefaultRowHeight := n;
  except
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  x0, y0, DX, DY, time : longint;
  p : TPlot;
  i, j : integer;
begin
  x0 := StrToInt(Edit1.Text);
  y0 := StrToInt(Edit2.Text);
  dx := StrToInt(Edit3.Text);
  dy := StrToInt(Edit5.Text);
  time := StrToInt(Edit6.Text);
  
  p := TPlot.Create;
  try
    for i := 0 to g.ColCount - 1 do
    begin
      if i mod 2 = 0 then
      begin
        for j := 0 to g.RowCount - 1 do
        begin
          p.MoveTo(x0 + i * dx, y0 + j * dy);
          if g.Cells[i, j] = '1' then
          begin
            p.PenDown;
            p.Delay(time);
            p.PenUp;
          end;
        end
      end
      else
      begin
        for j := g.RowCount - 1 downto 0 do
        begin
          p.MoveTo(x0 + i * dx, y0 + j * dy);
          if g.Cells[i, j] = '1' then
          begin
            p.PenDown;
            p.Delay(time);
            p.PenUp;
          end;
        end
      end;
    end
  finally
    p.Free;
  end;
end;

end.

⌨️ 快捷键说明

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