📄 loginform.pas
字号:
unit LoginForm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
dxCntner, dxTL, dxDBCtrl, dxDBGrid, StdCtrls, Buttons, DBData, Db, ADODB,
KsSkinButtons, KsSkinForms, dxExEdtr, KsSkinSpeedButtons, EditForm, se_controls;
type
TfrmLoginForm = class(TfrmEditForm)
gridMain: TdxDBGrid;
bbOk: TSeSkinButton;
bbExit: TSeSkinButton;
bbAdd: TSeSkinButton;
bbDel: TSeSkinButton;
dsLogin: TDataSource;
ADOSetLogin: TADODataSet;
sbOpenFile: TSeSkinSpeedButton;
OpenDlg: TOpenDialog;
procedure bbExitClick(Sender: TObject);
procedure bbOkClick(Sender: TObject);
procedure bbAddClick(Sender: TObject);
procedure bbDelClick(Sender: TObject);
procedure gridMainDblClick(Sender: TObject);
procedure gridMainKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure sbOpenFileClick(Sender: TObject);
procedure gridMainCustomDraw(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn;
const AText: string; AFont: TFont; var AColor: TColor; ASelected,
AFocused: Boolean; var ADone: Boolean);
private
{ Private declarations }
bReturn: Boolean;
sPubMode: string;
bQDrawFullGrid: Boolean;
sParamFile: string;
procedure LoadGrid;
procedure LoadData;
procedure MainShow;
public
{ Public declarations }
end;
function LoginFromShow(sMode: string): Boolean;
var
bMainWindowStart: Boolean = False;
implementation
uses SysPublic, LoginFromEdit, LoginFromPass;
{$R *.DFM}
function LoginFromShow(sMode: string): Boolean;
var
frmLoginForm: TfrmLoginForm;
begin
frmLoginForm := TfrmLoginForm.Create(Application);
with frmLoginForm do
begin
sPubMode := sMode;
MainShow;
Result := bReturn;
Free;
end;
end;
procedure TfrmLoginForm.MainShow;
var
sFileName: string;
begin
LoadGrid;
LoadData;
if sPubMode = 'OPEN' then
begin
if not bMainWindowStart and (ParamCount > 0) then (* 有执行参数传入 *)
begin
sFileName := ParamStr(1); (* 取得参数内容 *)
if FileExists(sFileName) then
begin
sParamFile := sFileName;
bMainWindowStart := True;
bbOkClick(nil);
end
else
begin
MsgBox('系统找不到指定的文件!', '提示', MB_OK);
ShowModal;
end;
end
else
ShowModal;
end
else
if sPubMode = 'NEW' then
begin
ADOSetLogin.Last;
ADOSetLogin.Insert;
if LoginFromEditShow then
bbOkClick(nil)
else
Exit;
end
else
if sPubMode = 'PASS' then
begin
bbOkClick(nil);
end
else
Exit;
end;
procedure TfrmLoginForm.LoadGrid;
begin
bReturn := False;
sParamFile := '';
bQDrawFullGrid := StrToBool2(GetIniValue(frmData.ADOConnetLogin, 'QDrawFullGrid'));
OpenDlg.InitialDir := GetExePath + FILE_DATA_DIR;
StrToGridField(gridMain, 'ID,Name,CoName', 'ID,账套名称,公司名称', '30,170,170');
gridMain.ColumnByFieldName('ID').Visible := false;
end;
procedure TfrmLoginForm.LoadData;
var
sSql, sOutFile: string;
begin
sOutFile := GetExePath + FILE_DATA_DIR + '\演示账套.RDB';
sSql := 'SELECT * FROM Login l';
if sPubMode = 'PASS' then
sSql := sSql + ' WHERE ID=' + IntToStr(lLoginAccountID);
OpenDataSetEx(frmData.ADOConnetLogin, ADOSetLogin, sSql);
if ADOSetLogin.RecordCount < 1 then
begin
ADOSetLogin.Insert;
ADOSetLogin.FieldByName('Name').AsString := '演示账套';
ADOSetLogin.FieldByName('CoName').AsString := '胜天软件开发有限公司';
ADOSetLogin.FieldByName('Path').AsString := sOutFile;
if SaveDataSet(ADOSetLogin, False) then
begin
if not FileExists(sOutFile) then
ResSaveMainDB(GetExePath, 'MainDB', sOutFile);
end;
end;
end;
procedure TfrmLoginForm.bbExitClick(Sender: TObject);
begin
inherited;
Close;
end;
procedure TfrmLoginForm.bbOkClick(Sender: TObject);
var
sSouFile, sAccountName: string;
begin
inherited;
if Trim(sParamFile) <> '' then
begin
sSouFile := sParamFile;
sAccountName := ''
end
else
begin
sSouFile := ADOSetLogin.FieldByName('Path').AsString;
sAccountName := ADOSetLogin.FieldByName('Name').AsString;
lLoginAccountID := ADOSetLogin.FieldByName('ID').AsInteger;
if (sSouFile = '') or (not FileExists(sSouFile)) then
begin
MsgBox('登陆账套出错,请新建一个账套再试!', '提示', MB_OK +
MB_ICONQUESTION);
Exit;
end;
end;
SetDataPathName(sSouFile, sAccountName);
with frmData.ADOConnet do
begin
if Connected = True then
Close;
ConnectionString := GetConnectionString(GetDataPathName);
LoginPrompt := False;
Open('Admin', '');
end;
if not LoginFromPassShow then
exit;
bReturn := true;
Close;
end;
procedure TfrmLoginForm.bbAddClick(Sender: TObject);
begin
inherited;
ADOSetLogin.Last;
ADOSetLogin.Insert;
LoginFromEditShow;
end;
procedure TfrmLoginForm.bbDelClick(Sender: TObject);
var
sSouFile, sNewFile, sAccountName: string;
begin
inherited;
sSouFile := ADOSetLogin.FieldByName('Path').AsString;
sAccountName := ADOSetLogin.FieldByName('Name').AsString;
if MsgBox('数据删除后不可恢复,请先做好备份。确认要删除?', '提示',
MB_OKCancel) = IDOK then
begin
if (sSouFile <> '') and (FileExists(sSouFile)) then
begin
sNewFile := GetExePath + FILE_BACKUP_DIR + '\' + sAccountName +
DateToStr2(Now) + FILE_DATA_TAIL;
if CopyFile(pchar(sSouFile), pchar(sNewFile), False) then
DeleteFile(sSouFile)
else
MsgBox('删除账套出错,请手动删除?', '提示', MB_OK);
end;
ADOSetLogin.Delete;
end;
end;
procedure TfrmLoginForm.gridMainDblClick(Sender: TObject);
begin
inherited;
bbOkClick(nil);
end;
procedure TfrmLoginForm.gridMainKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
inherited;
case KEY of
VK_RETURN: bbOkClick(nil);
VK_ESCAPE: bbExitClick(nil);
VK_INSERT: bbAddClick(nil);
VK_DELETE: bbDelClick(nil);
end;
end;
procedure TfrmLoginForm.sbOpenFileClick(Sender: TObject);
var
sFileName: string;
begin
inherited;
if OpenDlg.Execute then
begin
sFileName := OpenDlg.FileName;
if FileExists(sFileName) then
begin
sParamFile := sFileName;
bbOkClick(nil);
end
else
MsgBox('系统找不到指定的文件!', '提示', MB_OK);
end;
end;
procedure TfrmLoginForm.gridMainCustomDraw(Sender: TObject;
ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode;
AColumn: TdxDBTreeListColumn; const AText: string; AFont: TFont;
var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean);
begin
inherited;
if bQDrawFullGrid then DrawFullGrid(gridMain, ACanvas, ARect, ANode);
SetGridColor(ANode, AColor);
end;
end.
//此源码由程序太平洋收集整理发布,任何人都可自由转载,但需保留本站信息
//╭⌒╮┅~ ¤ 欢迎光临程序太平洋╭⌒╮
//╭⌒╭⌒╮╭⌒╮~╭⌒╮ ︶ ,︶︶
//,︶︶︶︶,''︶~~ ,''~︶︶ ,''
//╔ ╱◥███◣═╬╬╬╬╬╬╬╬╬╗
//╬ ︱田︱田 田 ︱ ╬
//╬ http://www.5ivb.net ╬
//╬ ╭○╮● ╬
//╬ /■\/■\ ╬
//╬ <| || 有希望,就有成功! ╬
//╬ ╬
//╚╬╬╬╬╬╬╬╬╬╬╗ ╔╬╬╬╬╝
//
//说明:
//专业提供VB、.NET、Delphi、ASP、PB源码下载
//包括:程序源码,控件,商业源码,系统方案,开发工具,书籍教程,技术文档
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -