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

📄 lcxxtj.pas

📁 企业安防管理系统
💻 PAS
字号:
unit lcxxtj;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Buttons, Grids, DBGrids, DB;

type
  TForm10 = class(TForm)
    Panel2: TPanel;
    Label3: TLabel;
    Panel1: TPanel;
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Label4: TLabel;
    Edit3: TEdit;
    DBGrid1: TDBGrid;
    Panel3: TPanel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    DataSource1: TDataSource;
    procedure Edit3KeyPress(Sender: TObject; var Key: Char);
    procedure BitBtn4Click(Sender: TObject);
    Function Change(Num: Integer): String;// 将十进制转换成二进制
    Function Convert(Num: Integer):integer; // 将二进制转换成十进制
    Function Ex(n: integer): Integer;//计算2的n次方
    procedure BitBtn1Click(Sender: TObject);
    Procedure FindNext;
    procedure BitBtn2Click(Sender: TObject);
    procedure Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Edit3KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form10: TForm10;

implementation
  uses Datamodal;
{$R *.dfm}

procedure TForm10.Edit3KeyPress(Sender: TObject; var Key: Char);
var
  m: Boolean;
begin
  m := (Key<#8)or(Key>#8)and(Key<#49)or(Key>#57);
  if m then
    Key := #0;
end;

procedure TForm10.BitBtn4Click(Sender: TObject);
var
  max,min,mid: Integer;  
  lcbh: String;//记录生成的楼层编号
begin
  with Data.ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('Select Max(楼层编号)as bh From 楼层信息表');
    Open; 
  end; 
  if Data.ADOQuery1.FieldByName('bh').Value<>Null then
  begin
    Max := Convert(StrToInt(Data.ADOQuery1.FieldByName('bh').Value));
    with Data.ADOQuery1 do
    begin
      Close;
      SQL.Clear;
      SQL.Add('Select Min(楼层编号)as bh From 楼层信息表');
      Open; 
    end; 
    Min := Convert(StrToInt(Data.ADOQuery1.FieldByName('bh').Value));
    if Min<>Max then
    begin
      if (Max -Min)>1 then
      begin
        For mid := (Min+1) to (Max-1) do
        begin
          with Data.ADOQuery1 do
          begin
            Close;
            SQL.Clear;
            SQL.Add('Select * From 楼层信息表 where 楼层编号 = :a');
            Parameters.ParamByName('a').Value :=  change(Mid);
            Open; 
          end;
          if Data.ADOQuery1.RecordCount<1 then
          begin
            lcbh := Change(Mid);
            Break;
          end
          else if Mid = Max-1 then
          begin
            lcbh := Change(Max+1);
            Break;
          end;
        end;
      end
      else
        lcbh := Change(Max+1);
    end
    else
      lcbh := Change(Max+1);
    end
  else
    lcbh := Change(1);
  Edit1.Text := Trim(lcbh);
  Edit2.SetFocus;
end;

function TForm10.Change(Num: Integer): String;
var
  value,i: String;
begin
  while  Num <>0 do
  begin 
    i := IntToStr(Num Mod 2);
    value := i+ Value;
    Num := Num div 2;
  end;
  Case Length(Trim(Value)) of
    1: Value := '000000'+ Value;
    2: Value := '00000'+ Value;
    3: Value := '0000'+ Value;
    4: Value := '000'+ Value;
    5: Value := '00'+ Value;
    6: Value := '0'+ Value;
  end;
  result := value;
end;

procedure TForm10.BitBtn1Click(Sender: TObject);
begin
  if (Trim(Edit1.Text)<>'')and(Trim(Edit2.Text)<>'')and(Trim(Edit3.Text)<>'')then
  begin
    Try
      with Data.ADOQuery1 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('Insert 楼层信息表 values( :a,:b,:c)');
        Parameters.ParamByName('a').Value := Trim(Edit1.Text);
        Parameters.ParamByName('b').Value := Trim(Edit2.Text);
        Parameters.ParamByName('c').Value := StrToInt(Edit3.Text);
        ExecSQL;
      end;
      Application.MessageBox('操作成功.','提示',64);
      BitBtn2.OnClick(Sender);
    Except
      Application.MessageBox('系统出错.','提示',64);
    end;  
  end 
  else
    Application.MessageBox('数据项不能为空.','提示',64);
end;

procedure TForm10.BitBtn2Click(Sender: TObject);
begin
  Edit1.Clear;
  Edit2.Clear;
  Edit3.Clear;
  with Data.ADOQuery2  do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select * from 楼层信息表');
    Open;
  end;
  if Data.ADOQuery2.RecordCount>0 then
    DataSource1.DataSet := Data.ADOQuery2
  else
    DataSource1.DataSet := Nil;
  BitBtn4.SetFocus;
end;

procedure TForm10.FindNext;
begin
  if FindNextControl(ActiveControl,True,True,false)is TEdit then
    TEdit(FindNextControl(ActiveControl,True,True,false)).SetFocus; 
end;

procedure TForm10.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = vk_Return then
    FindNext;
end;

function TForm10.Convert(Num: Integer): integer;
var
  Len,i,value: integer;
  NumString: String;
begin
  Value := 0;
  NumString := IntToStr(Num);
  Len := Length(NumString);
  For i := 1 to Len do
  begin
   if Copy(NumString,i,1) = '1' then
     Value := Value + Ex(Len-i)
  end;
  Result := Value;
end;

function TForm10.Ex(n: integer): Integer;
var
  i,Value: Integer ;
begin
  Value := 1;
  if n = 0 then
  begin
    Result := 1;
    Exit;
  end;
  if n = 1 then
  begin
    Result := 2;
    Exit;
  end;
  For i := 1 to n do
    Value := Value* 2 ;
  Result := value;
end;

procedure TForm10.Edit3KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = vk_Return then
    BitBtn1.SetFocus;
end;

procedure TForm10.FormShow(Sender: TObject);
begin
  BitBtn2.OnClick(Sender);
end;

end.

⌨️ 快捷键说明

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