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

📄 easy_gasmain.pas

📁 EasyGasDpr 瓶装液化气 钢瓶 SQL,用户名:SYSTEM 密码:空
💻 PAS
📖 第 1 页 / 共 3 页
字号:
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 + -