📄 easy_gasmain.pas
字号:
unit EASY_GASMAIN;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, ImgList, Commctrl, comctrls, ActnList, Menus,DBGridEhImpExp,DBGridEhFindDlgs,
Grids, DBGridEh, StdActns, INIPAS, ADOCONED, PrnDbgeh, StdCtrls, ExtCtrls, WaitPas, mask,
Consts;
type
TArea = packed record
AREA:String;
SUB_AREA:String;
end;
TUSER = Packed Record
No:Integer;
Name:String;
CTRLS:TStrings;
end;
TMAINFORM = class(TForm)
ADOC: TADOConnection;
SYS_VALUES: TADODataSet;
BIGICON: TImageList;
ActionList1: TActionList;
AREA_SET: TAction;
BUTTLE: TADODataSet;
BOTTLE_TYPE: TAction;
BTT: TADODataSet;
SB: TStatusBar;
SaveD: TSaveDialog;
SaveData: TFileSaveAs;
ADOCOMM: TADOCommand;
CON: TAction;
SEtMANGTYPE: TAction;
LOSTCU: TAction;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
ClientSet: TAction;
MarkTick: TAction;
Allfunc: TAction;
BTINFO: TAction;
SELLGAS: TAction;
A1: TMenuItem;
About: TAction;
N4: TMenuItem;
REPORT: TADODataSet;
MANGReport: TAction;
LOGIN: TAction;
CloseFmt: TAction;
PNTFMT: TADODataSet;
FORMAT_GRID: TADODataSet;
INSELLREP: TAction;
BANKSET: TAction;
ClearData: TAction;
DelayTimer: TTimer;
N5: TMenuItem;
DSELLREP: TAction;
MANAGETYPEREP: TAction;
MANGBANKREP: TAction;
SELLDATEREP: TAction;
LOSTBOTTLE: TAction;
SELLTOP: TAction;
SETUSER: TAction;
N6: TMenuItem;
W1: TMenuItem;
WINMENU: TMenuItem;
USERS: TADODataSet;
procedure AREA_SETExecute(Sender: TObject);
procedure BOTTLE_TYPEExecute(Sender: TObject);
procedure SaveDataAccept(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure CONExecute(Sender: TObject);
procedure SEtMANGTYPEExecute(Sender: TObject);
procedure ClientSetExecute(Sender: TObject);
procedure MarkTickExecute(Sender: TObject);
procedure AllfuncExecute(Sender: TObject);
procedure BTINFOExecute(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure SELLGASExecute(Sender: TObject);
procedure AboutExecute(Sender: TObject);
procedure LOSTCUExecute(Sender: TObject);
procedure MANGReportExecute(Sender: TObject);
procedure LOGINExecute(Sender: TObject);
procedure CloseFmtExecute(Sender: TObject);
procedure CloseFmtUpdate(Sender: TObject);
procedure INSELLREPExecute(Sender: TObject);
procedure BANKSETExecute(Sender: TObject);
procedure ClearDataExecute(Sender: TObject);
procedure DelayTimerTimer(Sender: TObject);
procedure DSELLREPExecute(Sender: TObject);
procedure MANAGETYPEREPExecute(Sender: TObject);
procedure MANGBANKREPExecute(Sender: TObject);
procedure SELLDATEREPExecute(Sender: TObject);
procedure LOSTBOTTLEExecute(Sender: TObject);
procedure SELLTOPExecute(Sender: TObject);
procedure SETUSERExecute(Sender: TObject);
procedure W1Click(Sender: TObject);
private
{ Private declarations }
FHintDelay:Byte;
FInfo:String;
Procedure SetInfo(Value:String);
public
{ Public declarations }
Procedure MyWINMENUCLICK(SENDER:TOBJECT);
published
property Info:String read FInfo write SetInfo;
end;
var
MAINFORM: TMAINFORM;
USER:TUSER;
Wait:TWaitDlg;
Function PCName:String;
Function ClientDir:String;
Function ReadBool(SName:String):Boolean;
Function ReadFloat(SName:String):Real;
Function ReadStr(SName:String):String;
Function ReadBlob(SName:String):TStream;
Function Readtext(SName:String):TStrings;
Procedure WriteStr(SName:String;Value:String);
Procedure WriteBool(SName:String;Value:Boolean);
Procedure WriteFloat(SName:String;Value:Real);
Procedure WriteTEXT(SName:String;var TEXT:TStrings);
Procedure WriteBLOB(SName:String;var BLOB:TStream);
Function GetFull(TreeView:TTreeView;Node:TTreeNode):String;
Function SelArea:TArea;
Procedure SellTick(BUTTLE:TADODataset);
Function GetCountFormName(NameS:String):Real;
Procedure GridExport(Grid:TDBGridEH);
Procedure GridFind(Grid:TDBGridEH);
procedure GridTitleClick(Sender: TObject; ACol: Integer; Column: TColumnEh);
Procedure CTick(BUTTLENO:LongInt;IsBack:Boolean=False);
Procedure SetPNTFormat(GRID:TDBGridEH;Obj_Name:String);
Function GetTEXTFromList(List:TStringList):String;
Function GetListFromText(Const SourceText:String):TStringList;
Function UnPassWord(const Source:String):String;
Function ChangeToPassWord(const Source:String):String;
Procedure ChangePassword(No:Integer);
Function GetQX(QX:String):Boolean;
Procedure LoadPNTFormat(DBP:TPrintDBGridEH;Obj_Name:String);
Procedure SetGrid(Set_Grid:TDBGridEH;SaveName:String;IsPNTFormat:Boolean=False);
Procedure SaveGrid(Grid:TDBGridEH;SaveName:String;IsPNTFormat:Boolean=False);
Procedure ReadGrid(Grid:TDBGridEH;SaveName:String;IsPNTFormat:Boolean=False);
Function MyInput(const ACaption: string; Value: string; PassChar:Char=#0; AMask:String=''): String;
implementation
uses BUSINESS_AREA, BOTTLE_TYPE, EASYGAS_MANGTICK, EASYGAS_MANGTYPE,
EASYGAS_GUI, EASYGAS_CLIENTTYPE,EASYGAS_BUTTLELIST, EASYGAS_BOTTLEEDIT,
EASYGAS_BOTTLE, EASYGAS_SELL, BUSINESS_PREFORM, EASYGAS_REPORT,
EASYGAS_PNTFORMAT, DateTimeSel, LoginPas, EASY_GASSETGRID, EASYGAS_BANKS,
CheckListPas, USERPas;
{$R *.dfm}
//公共涵数
Function MyInput(const ACaption: string; Value: string; PassChar:Char=#0; AMask:String=''): String;
var
Form: TForm;
Edit: TMaskEdit;
DialogUnits: TPoint;
ButtonTop, ButtonWidth, ButtonHeight: Integer;
function GetAveCharSize(Canvas: TCanvas): TPoint;
var I: Integer;
Buffer: array[0..51] of Char;
begin
for I := 0 to 25 do Buffer[I] := Chr(I + Ord('A'));
for I := 0 to 25 do Buffer[I + 26] := Chr(I + Ord('a'));
GetTextExtentPoint(Canvas.Handle, Buffer, 52, TSize(Result));
Result.X := Result.X div 52;
end;
begin
Result := '';
Form := TForm.Create(Application);
with Form do
try
Font:=Font;
Canvas.Font := Font;
DialogUnits := GetAveCharSize(Canvas);
BorderStyle := bsDialog;
Caption := ACaption;
ClientWidth := MulDiv(180, DialogUnits.X, 4);
Position := poScreenCenter;
Edit := TMaskEdit.Create(Form);
with Edit do
begin
Parent := Form;
PassWordChar:=PassChar;
EditMask:=AMask;
Left := MulDiv(8, DialogUnits.X, 4);
Top := MulDiv(8, DialogUnits.Y, 8);
Width := MulDiv(164, DialogUnits.X, 4);
MaxLength := 255;
Text := Value;
SelectAll;
end;
ButtonTop := Edit.Top + Edit.Height + 15;
ButtonWidth := MulDiv(50, DialogUnits.X, 4);
ButtonHeight := MulDiv(14, DialogUnits.Y, 8);
with TButton.Create(Form) do
begin
Parent := Form;
Caption := SMsgDlgOK;
ModalResult := mrOk;
Default := True;
SetBounds(MulDiv(38, DialogUnits.X, 4), ButtonTop, ButtonWidth,ButtonHeight);
end;
with TButton.Create(Form) do
begin
Parent := Form;
Caption := SMsgDlgCancel;
ModalResult := mrCancel;
Cancel := True;
SetBounds(MulDiv(92, DialogUnits.X, 4), Edit.Top + Edit.Height + 15,ButtonWidth, ButtonHeight);
Form.ClientHeight := Top + Height + 13;
end;
if ShowModal = mrOk then
begin
Value := Edit.Text;
Result:=Value;
end else Begin end;
finally
Form.Free;
end;
end;
Procedure ChangePassword(No:Integer);
var S:String;
Begin
With MAINFORM.USERS do
Begin
Open;
try
if Locate('序号',No,[]) then
Begin
if ChangeToPassword(MyInput('请输入旧密码:','','*'))=Fieldbyname('密码').asstring then
Begin
S:=MyInput('请输入新密码:','','*');
if S=MyInput('请再次输入新密码:','','*') then
Begin
edit;
Fieldbyname('密码').asstring:=changeToPassword(S);
Post;
end else Showmessage('两次新密码输入不同,无法更改密码!');
end else Showmessage('旧密码错误!');
end;
finally
Close;
end;
end;
end;
Function ChangeToPassWord(const Source:String):String;
var i,j,k:Integer;
S1:String;
begin
S1:='';
j:=length(Source);
for i:=1 to j do
begin
k:=j*j-i*i+3;
s1:=s1+chr(ord(Source[i])+k);
end;
Result:=s1;
end;
procedure TMAINFORM.SetInfo(Value: String);
Begin
DelayTimer.Enabled:=True;
FInfo:=Value;
SB.Panels[1].Text:=Info;
FHintDelay:=ReadINIInt('界面设置','提示信息延迟(秒)',2);
end;
Function UnPassWord(const Source:String):String;
var i,j,k:Integer;
S1:String;
begin
S1:='';
j:=length(Source);
for i:=1 to j do
begin
k:=j*j-i*i+3;
s1:=s1+chr(ord(Source[i])-k);
end;
Result:=s1;
end;
Function GetColFromName(Grid:TDBGridEH;Name:String):Tcolumneh;
var I:Integer;
Begin
Result:=nil;
For I:=0 to Grid.Columns.Count-1 do
begin
if Grid.Columns[I].Fieldname=name then
Begin
Result:=Grid.columns[I];
Break;
end;
end;
end;
Function GetListFromText(Const SourceText:String):TStringList;
var TmpStr:String;
I:Integer;
Begin
Result:=TStringList.Create;
TmpStr:='';
For I:=1 to Length(SourceText) do
Begin
if SourceText[I]<>',' then
Begin
TmpStr:=TmpStr+SourceText[I];
end else
Begin
Result.Add(Tmpstr);
TmpStr:='';
end;
end;
Result.Add(Tmpstr);
end;
Function GetTEXTFromList(List:TStringList):String;
var TmpInt:Integer;
Begin
Result:='';
For TmpInt:=0 to List.Count-1 do
Begin
Result:=Result+List.Strings[TmpInt];
if TmpInt<List.Count-1 then Result:=Result+',';
end;
end;
Procedure LoadPNTFormat(DBP:TPrintDBGridEH;Obj_Name:String);
Begin
With MAINFORM.PNTFMT do
Begin
Open;
try
if Locate('NAME',Obj_Name,[]) then
Begin
DBP.Title.Assign(TBlobField(FieldByname('TITLE_TEXT')));
DBP.PageHeader.LeftText.Assign(TBlobField(FieldByname('LEFT_TITLE')));
DBP.PageHeader.CenterText.Assign(TBlobField(FieldByname('CEN_TITLE')));
DBP.PageHeader.RightText.Assign(TBlobField(FieldByname('RIGHT_TITLE')));
DBP.PageHeader.Font.Name:=Fieldbyname('TITLE_FONT_NAME').AsString;
// DBP.PageHeader.Font.Color:=Fieldbyname('TITLE_FONT_COLOR').AsInteger;
DBP.PageHeader.LineType:=TPageColontitleLineType(Fieldbyname('FOOTER_LINE_TYPE').AsInteger);
DBP.Pagefooter.LeftText.Assign(TBlobField(FieldByname('LEFT_FOOTER')));
DBP.Pagefooter.CenterText.Assign(TBlobField(FieldByname('CEN_FOOTER')));
DBP.Pagefooter.RightText.Assign(TBlobField(FieldByname('RIGHT_FOOTER')));
DBP.Pagefooter.Font.Name:=Fieldbyname('FOOTER_FONT_NAME').AsString;
// DBP.Pagefooter.Font.Color:=Fieldbyname('FOOTER_FONT_COLOR').AsInteger;
DBP.Pagefooter.LineType:=TPageColontitleLineType(Fieldbyname('FOOTER_LINE_TYPE').AsInteger);
DBP.AfterGridText.Assign(TBlobField(FieldByname('AFTER_TEXT')));
DBP.BeforeGridText.Assign(TBlobField(FieldByname('BEFORE_TEXT')));
DBP.PrintFontName:=Fieldbyname('ALL_FONT_NAME').asstring;
end;
finally
close;
end;
end;
end;
Procedure SetGrid(Set_Grid:TDBGridEH;SaveName:String;IsPNTFormat:Boolean=False);
Begin
With TGridDlg.create(Application) do
Begin
try
Grid:=Set_Grid;
ReadGrid(Grid,SaveName,IsPNTFormat);
LoadGrid;
if showmodal=mrok then
begin
SaveGrid(Grid,SaveName,IsPNTFormat);
end;
finally
ReadGrid(Grid,SaveName);
free;
end;
end;
end;
Procedure SaveGrid(Grid:TDBGridEH;SaveName:String;IsPNTFormat:Boolean=False);
var S:TStream;
Begin
With MAINFORM.FORMAT_GRID do
Begin
Open;
if IsPNTFormat then SaveName:=SaveName+'_PNT';
S:=TMemoryStream.create;
try
Grid.Columns.SaveToStream(S);
if Not Locate('名称',SaveName,[]) then Append;
Edit;
S.Position:=0;
TBlobField(Fieldbyname('STREAM')).LoadFromStream(S);
fieldbyname('名称').AsString:=SaveName;
Post;
finally
S.Free;
Close;
end;
end;
end;
Procedure ReadGrid(Grid:TDBGridEH;SaveName:String;IsPNTFormat:Boolean=False);
var S:TStream;
Begin
With MAINFORM.FORMAT_GRID do
Begin
if IsPNTFormat then SaveName:=SaveName+'_PNT';
Open;
S:=TMemoryStream.create;
try
if Locate('名称',SaveName,[]) and (Not Fieldbyname('STREAM').IsNull) then
Begin
TBlobField(Fieldbyname('STREAM')).SaveToStream(S);
S.Position:=0;
Grid.Columns.LoadFromStream(S);
end;
finally
S.Free;
Close;
end;
end;
end;
Procedure SetPNTFormat(GRID:TDBGridEH;Obj_Name:String);
Begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -