📄 sys800_01.pas.svn-base
字号:
unit Sys800_01;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, ToolWin, ExtCtrls, Grids, Wwdbigrd, Wwdbgrid, Db,
ADODB, dxExEdtr, dxDBGrid, dxTL, dxDBCtrl, dxCntner, ActnList, wwfltdlg,
wwDialog, Wwlocate, Wwintl, StdCtrls, Buttons, dxDBTL, dxDBTLCl, dxGrClms,
IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP;
type
TSys800_01Form = class(TForm)
OpenDialog1: TOpenDialog;
dsSys800: TDataSource;
qrySys800: TADOQuery;
Panel2: TPanel;
Image2: TImage;
lblTitle: TLabel;
Bevel1: TBevel;
bbtnInstall: TBitBtn;
bbtnOk: TBitBtn;
bbtnExit: TBitBtn;
Label1: TLabel;
bbtnDelete: TBitBtn;
dxDBGrid1: TdxDBGrid;
dxDBGrid1FName: TdxDBGridColumn;
dxDBGrid1FInstall: TdxDBGridCheckColumn;
bbtnProxy: TBitBtn;
qrySys800FNo: TIntegerField;
qrySys800FCode: TWideStringField;
qrySys800FName: TWideStringField;
qrySys800FFile: TWideStringField;
qrySys800FRegID: TWideStringField;
qrySys800FTimes: TWideStringField;
qrySys800FInstall: TBooleanField;
qrySys800FIsSys: TBooleanField;
qrySys800FUsers: TIntegerField;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure bbtnInstallClick(Sender: TObject);
procedure bbtnOkClick(Sender: TObject);
procedure bbtnExitClick(Sender: TObject);
procedure bbtnDeleteClick(Sender: TObject);
procedure dxDBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure dxDBGrid1KeyPress(Sender: TObject; var Key: Char);
procedure bbtnProxyClick(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure qrySys800CalcFields(DataSet: TDataSet);
private
procedure SetInterface;
{ Private declarations }
public
ASetupFile:string; //安装文件
{ Public declarations }
end;
var
Sys800_01Form: TSys800_01Form;
implementation
uses CommFun, SYSDATA, Sys800_02, Sys900_01;
{$R *.DFM}
procedure TSys800_01Form.SetInterface;
begin
Font.Name:=AFontName;
Caption:=GetDBString('SYS80001001'); //添加删除模块
lblTitle.Caption:=GetDBString('SYS80001002'); //浩晖企业管理系统 可以添加或删除浩晖企业管理系统的功能模块
Label1.Caption:=GetDBString('SYS80001003'); //要添加或删除某个功能模块,请单击旁边的复选框。要添加第三方的功能模块,请单击“从磁盘安装(&A)...”按钮。
bbtnInstall.Caption:=GetDBString('SYS80001004'); //从磁盘安装(&A)...
bbtnOk.Caption:=GetDBString('SYS80001005'); //确定(&O)
bbtnExit.Caption:=GetDBString('SYS80001006'); //退出(&X)
bbtnDelete.Caption:=GetDBString('SYS80001007'); //删除(&D)
bbtnProxy.Caption:=GetDBString('SYS80001010'); //设置代理(&P)
SetDefaultProxy;
end;
procedure TSys800_01Form.FormCreate(Sender: TObject);
begin
SetInterface;
qrySys800.Open;
end;
procedure TSys800_01Form.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
qrySys800.Close;
Action:=caFree;
end;
procedure TSys800_01Form.bbtnInstallClick(Sender: TObject);
var
AFile:string;
begin
//从磁盘安装(&A)...
OpenDialog1.InitialDir:=ExtractFilePath(Application.ExeName);
OpenDialog1.Filter:=GetDBString('SYS80001008'); //'安装文件(*.hwp)|*.hwp'
OpenDialog1.Title:=GetDBString('SYS80001009'); //程序安装
if OpenDialog1.Execute then
begin
AFile:=ExtractFileName(OpenDialog1.FileName);
if AFile='CommPackage.bpl' then
begin
ShowMsg('UMS10000131'); //无效的模块文件
Abort;
end;
if qrySys800.Locate('FName',AFile,[]) then
begin
ShowMsg('UMS10000132'); //选择的模块文件已存在
Abort;
end;
qrySys800.Append;
qrySys800.FieldByName('FCode').AsString:=Copy(ExtractFileName(OpenDialog1.FileName),1,3); //模块编号
qrySys800.FieldByName('FName').AsString:=GetPackageDescription(PChar(ExtractFileName(OpenDialog1.FileName))); //模块名称
qrySys800.FieldByName('FFile').AsString:=ExtractFileName(OpenDialog1.FileName); //文件名称
qrySys800.FieldByName('FRegID').AsString:=''; //注册码
qrySys800.FieldByName('FTimes').AsString:='k['; //运行次数
qrySys800.FieldByName('FInstall').AsBoolean:=True; //已安装否
qrySys800.FieldByName('FIsSys').AsBoolean:=False; //系统模块
qrySys800.FieldByName('FUsers').AsInteger:=0; //用户数量
qrySys800.Post;
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('update SYS500D set S500D_006'+GetBoolean(True)+' where S500D_002 like '+''''+qrySys800.FieldByName('FCode').AsString+'%'+'''');
SYSDM.qryQuery.ExecSQL;
end;
end;
procedure SetSys800(AFlag:Boolean;AModule:string);
begin
if not Sys800_01Form.qrySys800.Active then Exit;
if Sys800_01Form.qrySys800.IsEmpty then Exit;
Sys800_01Form.qrySys800.Edit;
Sys800_01Form.qrySys800.FieldByName('FInstall').AsBoolean:=AFlag;
Sys800_01Form.qrySys800.Post;
SetupProgram(AFlag,AModule);
end;
//从网上安装
procedure SetupFromInternet(AFile:string);
var
AFlag:Boolean;
AModule:string;
begin
//安装失败,安装所需的文件没有找到,是否要直接从网上下载安装
if ShowDialog(AFile+': '+GetDBString('UMS10000134'),1)=IDYES then
begin
if not GetOnlineStatus then
begin
ShowMsg('UMS10000194'); //计算机没有连接到因特网,请检查是否已上网或网线是否通畅
Sys800_01Form.qrySys800.Edit;
Sys800_01Form.qrySys800.FieldByName('FInstall').AsBoolean:=False;
Sys800_01Form.qrySys800.Post;
AFlag:=Sys800_01Form.qrySys800.FieldByName('FInstall').AsBoolean;
AModule:=Sys800_01Form.qrySys800.FieldByName('FCode').AsString;
SetSys800(AFlag,AModule);
Abort;
end;
Sys800_01Form.ASetupFile:=Sys800_01Form.qrySys800.FieldByName('FFile').Value;
Sys800_02Form:=TSys800_02Form.Create(Application);
Sys800_02Form.Show;
if not Sys800_02Form.GetDownloadFile then
begin
Sys800_02Form.Close;
Sys800_02Form.Update;
ShowMsg(GetDBString('UMS10000195')+Sys800_01Form.ASetupFile,1); //没有存在所需的文件:
Sys800_01Form.qrySys800.Edit;
Sys800_01Form.qrySys800.FieldByName('FInstall').AsBoolean:=False;
Sys800_01Form.qrySys800.Post;
AFlag:=Sys800_01Form.qrySys800.FieldByName('FInstall').AsBoolean;
AModule:=Sys800_01Form.qrySys800.FieldByName('FCode').AsString;
SetSys800(AFlag,AModule);
end else
begin
Sys800_02Form.Close;
Sys800_02Form.Update;
end;
end else //不从网上安装
begin
AFlag:=Sys800_01Form.qrySys800.FieldByName('FInstall').AsBoolean;
AModule:=Sys800_01Form.qrySys800.FieldByName('FCode').AsString;
SetSys800(AFlag,AModule);
end;
end;
procedure TSys800_01Form.bbtnOkClick(Sender: TObject);
var
AFlag:Boolean;
AModule,AName,AFile:string;
begin
//确定(&O)
Screen.Cursor:=crHourGlass;
qrySys800.First;
while not qrySys800.Eof do
begin
AName:=qrySys800.FieldByName('FName').Value; //模块名称
AFile:=qrySys800.FieldByName('FFile').Value; //文件名称
if qrySys800.FieldByName('FInstall').AsBoolean then //选择安装
begin
if not LoadPack(AFile) then
begin
AFile:=qrySys800.FieldByName('FFile').AsString;
ShowMsg(AFile+': '+GetDBString('UMS10000629'),1); //安装失败,安装所需的文件没有找到
Abort;
end;
end;
//修改安装程序标识
AFlag:=qrySys800.FieldByName('FInstall').AsBoolean;
AModule:=qrySys800.FieldByName('FCode').AsString;
SetupProgram(AFlag,AModule);
qrySys800.Next;
end;
qrySys800.UpdateBatch;
ShowMsg('UMS10000139'); //添加删除模块成功,请重新登录系统!
ModalResult:=1;
Screen.Cursor:=crDefault;
end;
procedure TSys800_01Form.bbtnExitClick(Sender: TObject);
begin
//退出(&X)
Close;
end;
procedure TSys800_01Form.bbtnDeleteClick(Sender: TObject);
begin
//删除(&D)
if qrySys800.IsEmpty then
begin
ShowMsg('UMS10000002'); //表记录为空,操作无效
Abort;
end;
if qrySys800.FieldByName('FIsSys').AsBoolean then
begin
ShowMsg('UMS10000130'); //该模块为系统模块,不能删除
Abort;
end;
if ShowDialog('UMS10000117')=IDYES then //确定要卸载该模块
begin
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('update SYS500D set S500D_006=0 where S500D_002 like '+''''+qrySys800.FieldByName('FCode').AsString+'%'+'''');
SYSDM.qryQuery.ExecSQL;
qrySys800.Delete;
end;
end;
procedure TSys800_01Form.dxDBGrid1MouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if dxDBGrid1.GetColumnAt(X,Y)=nil then Exit;
if dxDBGrid1.GetColumnAt(X,Y).Field.FieldName='FInstall' then
begin
if qrySys800.IsEmpty then Exit;
qrySys800.Edit;
qrySys800.FieldByName('FInstall').AsBoolean:=not qrySys800.FieldByName('FInstall').AsBoolean;
qrySys800.Post;
end;
end;
procedure TSys800_01Form.dxDBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if Key=#32 then //vk_space
begin
if qrySys800.IsEmpty then Exit;
qrySys800.Edit;
qrySys800.FieldByName('FInstall').AsBoolean:=not qrySys800.FieldByName('FInstall').AsBoolean;
qrySys800.Post;
end;
end;
procedure TSys800_01Form.bbtnProxyClick(Sender: TObject);
begin
//代理(&P)
Sys900_01Form:=TSys900_01Form.Create(Application);
Sys900_01Form.ShowModal;
end;
procedure TSys800_01Form.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=VK_F1 then
HtmlHelp(Application.Handle, AHelpFile+'::/'+AProgramID+'.htm', $0000, nil);
end;
procedure TSys800_01Form.qrySys800CalcFields(DataSet: TDataSet);
begin
qrySys800FName.Value:=GetDBString(qrySys800FCode.Value);
end;
initialization
RegisterClass(TSys800_01Form);
finalization
UnRegisterClass(TSys800_01Form);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -