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

📄 main.pas

📁 delphi做的进销存系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:

procedure Tmainfrm.ygzlClick(Sender: TObject);
begin
  SpeedButton5Click(self) ;
end;

procedure Tmainfrm.khzlClick(Sender: TObject);
begin
  SpeedButton6Click(self);
end;

procedure Tmainfrm.ghszlClick(Sender: TObject);
begin
  SpeedButton7Click(self);
end;

procedure Tmainfrm.splbClick(Sender: TObject);
begin
  SpeedButton8Click(self);
end;

procedure Tmainfrm.jldwClick(Sender: TObject);
begin
  SpeedButton9Click(Self);
end;

procedure Tmainfrm.spzlClick(Sender: TObject);
begin
   SpeedButton10Click(Self);
end;

procedure Tmainfrm.jhClick(Sender: TObject);
begin
  SpeedButton11Click(Self);
end;

procedure Tmainfrm.xsClick(Sender: TObject);
begin
  SpeedButton12Click(Self);
end;

procedure Tmainfrm.kctjClick(Sender: TObject);
begin
  SpeedButton15Click(Self);
end;

procedure Tmainfrm.RzToolButton1Click(Sender: TObject);
begin
  SpeedButton11Click(Self);
end;

procedure Tmainfrm.RzToolButton2Click(Sender: TObject);
begin
  SpeedButton12Click(self);
end;

procedure Tmainfrm.RzToolButton3Click(Sender: TObject);
begin
  SpeedButton15Click(Self);
end;

procedure Tmainfrm.RzToolButton4Click(Sender: TObject);
begin
  SpeedButton5Click(Self);
end;

procedure Tmainfrm.RzToolButton5Click(Sender: TObject);
begin
  SpeedButton1Click(Self);
end;

procedure Tmainfrm.cxdlClick(Sender: TObject);
begin
  loginfrm.ShowModal;
end;

procedure Tmainfrm.SpeedButton11Click(Sender: TObject);
begin
   //在没有窗体被载入时才可以进行载入
   if not pnl5dock then
     begin
       //载入一个窗体到TAbsheet
       application.CreateForm(Tjhdglfrm,jhdglfrm);
       jhdglfrm.Dock(pnl5,BoundsRect);
       jhdglfrm.show;
       //修改标志,不可以再载入其它窗体
       pnl5dock:=True;
       //修改TabSheet的标题为被载入的窗体的标题
       TabSheet5.Caption:=jhdglfrm.Caption;
     end;
     TabSheet5.Show;
end;

procedure Tmainfrm.SpeedButton15Click(Sender: TObject);
begin
   //在没有窗体被载入时才可以进行载入
   if not pnl7dock then
     begin
       //载入一个窗体到TAbsheet
       application.CreateForm(Tkctjfrm,kctjfrm);
       kctjfrm.Dock(pnl7,BoundsRect);
       kctjfrm.show;
       //修改标志,不可以再载入其它窗体
       pnl7dock:=True;
       //修改TabSheet的标题为被载入的窗体的标题
       TabSheet7.Caption:=kctjfrm.Caption;
     end;
     TabSheet7.Show;
end;

procedure Tmainfrm.SpeedButton12Click(Sender: TObject);
begin
     //在没有窗体被载入时才可以进行载入
   if not pnl6dock then
     begin
       //载入一个窗体到TAbsheet
       application.CreateForm(Txsglfrm,xsglfrm);
       xsglfrm.Dock(pnl6,BoundsRect);
       xsglfrm.show;
       //修改标志,不可以再载入其它窗体
       pnl6dock:=True;
       //修改TabSheet的标题为被载入的窗体的标题
       TabSheet6.Caption:=xsglfrm.Caption;
     end;
     TabSheet6.Show;
end;

procedure Tmainfrm.RzToolButton7Click(Sender: TObject);
begin
  aboutClick(Self);

  if SkinData1.Active  then
     SkinData1.Active:=false
  else
     SkinData1.Active:=True;
end;

procedure Tmainfrm.SpeedButton13Click(Sender: TObject);
begin
  application.CreateForm(Tjhtjfrm,jhtjfrm);
  jhtjfrm.ShowModal;
end;

procedure Tmainfrm.SpeedButton14Click(Sender: TObject);
begin
  application.CreateForm(Txstjfrm,xstjfrm);
  xstjfrm.ShowModal;
end;

procedure Tmainfrm.jhtjClick(Sender: TObject);
begin
  SpeedButton13Click(Self);
end;

procedure Tmainfrm.xstjClick(Sender: TObject);
begin
  SpeedButton14Click(self);
end;

procedure Tmainfrm.SpeedButton16Click(Sender: TObject);
begin
  application.CreateForm(Tmlfxfrm,mlfxfrm);
  mlfxfrm.ShowModal;
end;

procedure Tmainfrm.RzToolButton8Click(Sender: TObject);
begin
  if TabSheet9.Visible then
    TabSheet9.tabVisible:=False
  else
    TabSheet9.tabVisible:=True;
end;

procedure Tmainfrm.tmr1Timer(Sender: TObject);
begin
  tmr1.Enabled:=False;
  application.CreateForm(Tloginfrm,loginfrm);
  loginfrm.ShowModal;
end;

procedure Tmainfrm.aboutClick(Sender: TObject);
begin
  application.CreateForm(Tlogo,logo);
  logo.RzBitBtn1.Visible:=True;
  logo.Gauge1.Visible:=False;
  logo.ShowModal;
end;

function GetIdeSerialNumber() : PChar; stdcall;
const 
 IDENTIFY_BUFFER_SIZE = 512; 
type 
 TIDERegs = packed record 
    bFeaturesReg: BYTE; // Used for specifying SMART "commands". 
    bSectorCountReg: BYTE; // IDE sector count register 
    bSectorNumberReg: BYTE; // IDE sector number register 
    bCylLowReg: BYTE; // IDE low order cylinder value 
    bCylHighReg: BYTE; // IDE high order cylinder value 
    bDriveHeadReg: BYTE; // IDE drive/head register 
    bCommandReg: BYTE; // Actual IDE command. 
    bReserved: BYTE; // reserved for future use. Must be zero. 
 end; 

 TSendCmdInParams = packed record 
   // Buffer size in bytes 
   cBufferSize: DWORD; 
   // Structure with drive register values. 
   irDriveRegs: TIDERegs; 
   // Physical drive number to send command to (0,1,2,3). 
   bDriveNumber: BYTE; 
   bReserved: array[0..2] of Byte; 
   dwReserved: array[0..3] of DWORD; 
   bBuffer: array[0..0] of Byte; // Input buffer. 
 end; 

 TIdSector = packed record 
   wGenConfig: Word; 
   wNumCyls: Word; 
   wReserved: Word; 
   wNumHeads: Word; 
   wBytesPerTrack: Word; 
   wBytesPerSector: Word; 
   wSectorsPerTrack: Word; 
   wVendorUnique: array[0..2] of Word; 
   sSerialNumber: array[0..19] of CHAR; 
   wBufferType: Word; 
   wBufferSize: Word; 
   wECCSize: Word; 
   sFirmwareRev: array[0..7] of Char; 
   sModelNumber: array[0..39] of Char; 
   wMoreVendorUnique: Word; 
   wDoubleWordIO: Word; 
   wCapabilities: Word; 
   wReserved1: Word; 
   wPIOTiming: Word; 
   wDMATiming: Word; 
   wBS: Word; 
   wNumCurrentCyls: Word; 
   wNumCurrentHeads: Word; 
   wNumCurrentSectorsPerTrack: Word; 
   ulCurrentSectorCapacity: DWORD; 
   wMultSectorStuff: Word; 
   ulTotalAddressableSectors: DWORD; 
   wSingleWordDMA: Word; 
   wMultiWordDMA: Word; 
   bReserved: array[0..127] of BYTE; 
 end; 

 PIdSector = ^TIdSector; 

 TDriverStatus = packed record 
   // 驱动器返回的错误代码,无错则返回0 
   bDriverError: Byte; 
   // IDE出错寄存器的内容,只有当bDriverError 为 SMART_IDE_ERROR 时有效 
   bIDEStatus: Byte; 
   bReserved: array[0..1] of Byte; 
   dwReserved: array[0..1] of DWORD; 
 end; 

 TSendCmdOutParams = packed record 
   // bBuffer的大小 
   cBufferSize: DWORD; 
   // 驱动器状态 
   DriverStatus: TDriverStatus; 
   // 用于保存从驱动器读出的数据的缓冲区,实际长度由cBufferSize决定 
   bBuffer: array[0..0] of BYTE; 
 end; 
var 
 hDevice : THandle; 
 cbBytesReturned : DWORD; 
 SCIP : TSendCmdInParams; 
 aIdOutCmd : array[0..(SizeOf(TSendCmdOutParams) + IDENTIFY_BUFFER_SIZE - 1) - 1] of Byte; 
 IdOutCmd : TSendCmdOutParams absolute aIdOutCmd; 

 procedure ChangeByteOrder(var Data; Size: Integer); 
 var 
   ptr : PChar; 
   i : Integer; 
   c : Char; 
 begin 
   ptr := @Data; 

   for I := 0 to (Size shr 1) - 1 do 
   begin 
     c := ptr^; 
     ptr^ := (ptr + 1)^; 
     (ptr + 1)^ := c; 
     Inc(ptr, 2); 
   end; 
 end; 
begin 
 Result := ''; // 如果出错则返回空串 

 if SysUtils.Win32Platform = VER_PLATFORM_WIN32_NT then  // Windows NT, Windows 2000 
 begin 
   // 提示! 改变名称可适用于其它驱动器,如第二个驱动器: '\\.\PhysicalDrive1\' 
   hDevice := CreateFile('\\.\PhysicalDrive0', GENERIC_READ or GENERIC_WRITE, 
                         FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0); 
 end 
 else // Version Windows 95 OSR2, Windows 98 
   hDevice := CreateFile('\\.\SMARTVSD', 0, 0, nil, CREATE_NEW, 0, 0); 

   if hDevice = INVALID_HANDLE_VALUE then Exit; 

   try 
     FillChar(SCIP, SizeOf(TSendCmdInParams) - 1, #0); 
     FillChar(aIdOutCmd, SizeOf(aIdOutCmd), #0); 
     cbBytesReturned := 0; 

     // Set up data structures for IDENTIFY command. 
     with SCIP do 
     begin 
       cBufferSize := IDENTIFY_BUFFER_SIZE; 

       // bDriveNumber := 0; 
       with irDriveRegs do 
       begin 
         bSectorCountReg := 1; 
         bSectorNumberReg := 1; 

         // if Win32Platform=VER_PLATFORM_WIN32_NT then bDriveHeadReg := $A0 
         // else bDriveHeadReg := $A0 or ((bDriveNum and 1) shl 4); 
         bDriveHeadReg := $A0; 
         bCommandReg := $EC; 
       end; 
     end; 

     if not DeviceIoControl(hDevice, $0007C088, @SCIP, SizeOf(TSendCmdInParams) - 1, 
                           @aIdOutCmd, SizeOf(aIdOutCmd), cbBytesReturned, nil) then Exit; 
   finally 
     CloseHandle(hDevice); 
   end; 

   with PIdSector(@IdOutCmd.bBuffer)^ do 
   begin 
     ChangeByteOrder(sSerialNumber, SizeOf(sSerialNumber)); 
     (Pchar(@sSerialNumber) + SizeOf(sSerialNumber))^ := #0; 

     Result := Pchar(@sSerialNumber);
     end; 
end;


procedure Tmainfrm.tmr2Timer(Sender: TObject);
var
  path:string;
begin
  path:=extractfilepath(application.ExeName)+'MDB\JXCGL.mdb';
  dm1.qry12.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+path+';Persist Security Info=False';
  DM1.qry12.SQL.Clear;
  dm1.qry12.SQL.Add('select * from sn where id=:id_a');
  DM1.qry12.Parameters.ParamByName('id_a').value:='RH'+Trim(GetIdeSerialNumber())+'C';
  DM1.qry12.Active:=True;
  if DM1.qry12.RecordCount<=0 then
     begin
       ShowMessage('非法拷贝!软件未注册,请先注册!');
       Application.Terminate;
     end;
end;

end.

⌨️ 快捷键说明

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