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

📄 unit1.pas

📁 另类密码登录窗体(拼图)
💻 PAS
字号:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    PaintBox1: TPaintBox;
    Btn_OK: TButton;
    procedure FormCreate(Sender: TObject);
    procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Btn_OKClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  OKbmp,NObmp:TBitmap;

implementation

{$R *.dfm}

type
  Myarray=array[1..5,1..5] of Integer;
var
  Array2:Myarray;
const
  Array1:Myarray=((1,0,0,0,0),(0,1,0,1,0),(1,0,0,0,1),(0,1,0,1,0),(0,0,1,0,0));//为密码数组赋值

procedure TForm1.FormCreate(Sender: TObject);
var
  i,j:integer;
  Currdir:array[0..255] of char;
begin
  GetCurrentDirectory(250,@Currdir);//取当前程序目录然后载入图片
  OKbmp:=Tbitmap.Create;
  OKbmp.LoadFromFile(strpas(Currdir)+'\'+'OK.bmp');
  NObmp:=Tbitmap.Create;
  NObmp.LoadFromFile(strpas(Currdir)+'\'+'NO.bmp');
  for i:=1 to 5 do
    for j:=1 to 5 do
      begin
        PaintBox1.Canvas.Draw((i-1)*16,(j-1)*16,NObmp);
        Array2[i,j]:=0;//将PaintBox1初始化为距阵形式
      end;
end;

procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  i,j:integer;
begin
  i:=y Div 16+1;
  j:=x DIv 16+1;//根据鼠标的位置计算当前数组的位置
  if Array2[i,j]=0 then  //判断数组的状态然后进行转换
    begin
      PaintBox1.Canvas.Draw((j-1)*16,(i-1)*16,OKbmp);
      Array2[i,j]:=1;
    end
  else
    begin
      PaintBox1.Canvas.Draw((j-1)*16,(i-1)*16,NObmp);
      Array2[i,j]:=0;
    end;
end;

procedure TForm1.Btn_OKClick(Sender: TObject);
var
  i,j,m,n:integer;
begin
  for i:=1 to 5 do
    for j:=1 to 5 do
      if Array1[i,j]<>Array2[i,j] then//通过两个数组对比进行密码验证
        begin
          Application.MessageBox('密码错误!请重新组合。','警告',0);
          for m:=1 to 5 do
            for n:=1 to 5 do
              begin
                PaintBox1.Canvas.Draw((m-1)*16,(n-1)*16,NObmp);
                Array2[i,j]:=0;//将PaintBox1初始化为距阵形式
              end;
          exit;
        end;
  Application.MessageBox('密码组合成功。','警告',0);
  for m:=1 to 5 do
    for n:=1 to 5 do
      begin
        PaintBox1.Canvas.Draw((m-1)*16,(n-1)*16,NObmp);
        Array2[i,j]:=0;//将PaintBox1初始化为距阵形式
      end;
end;

end.

⌨️ 快捷键说明

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