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

📄 advanceset.pas

📁 电力行业前台收费程序,需要有后台SQL数据库,和电费管理系统配合应用.
💻 PAS
字号:
unit AdvanceSet;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, StdCtrls, ExtCtrls, Buttons;

type
  TFormAdvance = class(TForm)
    PageControl: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    MemoMainSQL: TMemo;
    Panel1: TPanel;
    Label1: TLabel;
    MemoZuoFeiSQL: TMemo;
    Panel2: TPanel;
    Label2: TLabel;
    MemoTongJiSQL: TMemo;
    Panel3: TPanel;
    Label3: TLabel;
    TabSheet5: TTabSheet;
    ButtonTestRun: TButton;
    ButtonOK: TButton;
    ButtonCancel: TButton;
    ButtonReset: TButton;
    ListViewFL: TListView;
    Panel4: TPanel;
    Panel5: TPanel;
    SpeedButtonAdd: TSpeedButton;
    SpeedButtonDel: TSpeedButton;
    SpeedButtonEdit: TSpeedButton;
    Label4: TLabel;
    EditColl: TEdit;
    Label5: TLabel;
    Label6: TLabel;
    BitBtnOK: TBitBtn;
    BitBtnCancel: TBitBtn;
    EditCV: TEdit;
    Label7: TLabel;
    MemoSQL: TMemo;
    TabSheet4: TTabSheet;
    Panel6: TPanel;
    Label8: TLabel;
    MemoWDSQL: TMemo;
    procedure ButtonResetClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ButtonOKClick(Sender: TObject);
    procedure ButtonTestRunClick(Sender: TObject);
    procedure SpeedButtonAddClick(Sender: TObject);
    procedure BitBtnOKClick(Sender: TObject);
    procedure BitBtnCancelClick(Sender: TObject);
    procedure SpeedButtonEditClick(Sender: TObject);
    procedure SpeedButtonDelClick(Sender: TObject);
  private
    procedure LoadSQL(Section:String);
  public
    { Public declarations }
  end;

implementation

uses MainForm, Commfunc, DataMod, TestWin, SelectCase;

{$R *.DFM}
procedure AddToMemo(Memo:TMemo;StrVal:String);
begin
  Memo.Lines.Clear;
  Memo.Lines.Add(StrVal);
end;

procedure TFormAdvance.ButtonResetClick(Sender: TObject);
begin
  if MessageDlg('现在恢复收费程序的默认设置吗?',mtInformation,[mbYes,mbNo],0)=mrYes then
    LoadSQL('默认设置');
end;

procedure TFormAdvance.FormCreate(Sender: TObject);
begin
  LoadSQL('最新设置');
end;

procedure TFormAdvance.ButtonOKClick(Sender: TObject);
var
  I      : Integer;
  TmpStr : String;
begin
  with IniFile do begin
    EraseSection('最新设置');
    WriteString('最新设置','缴费浏览',ListToStr(MemoMainSQL.Lines,''));
    WriteString('最新设置','已打发票',ListToStr(MemoZuoFeiSQL.Lines,''));
    WriteString('最新设置','收费统计',ListToStr(MemoTongJiSQL.Lines,''));
    WriteString('最新设置','未打发票',ListToStr(MemoWDSQL.Lines,''));
    for i:=0 to ListViewFL.Items.Count-1 do
        if i>0 then
           TmpStr:=TmpStr+';'+ListViewFL.Items[i].Caption
        else
           TmpStr:=ListViewFL.Items[i].Caption;
    WriteString('最新设置','集合浏览',TmpStr);
    for i:=0 to ListViewFL.Items.Count-1 do
        WriteString('最新设置',ListViewFL.Items[i].Caption,ListViewFL.Items[i].SubItems[0]+'|'+ListViewFL.Items[i].SubItems[1]);
  end;
end;

procedure TFormAdvance.LoadSQL(Section:String);
var
  I:Integer;
  SqlList   :TStringList;
  Colls     :TStringList;
begin
  if IniFile.ReadString(Section,'缴费浏览','')<>'' then
     AddToMemo(MemoMainSQL,IniFile.ReadString(Section,'缴费浏览',''));
  if IniFile.ReadString(Section,'已打发票','')<>'' then
     AddToMemo(MemoZuoFeiSQL,IniFile.ReadString(Section,'已打发票',''));
  if IniFile.ReadString(Section,'收费统计','')<>'' then
     AddToMemo(MemoTongJiSQL,IniFile.ReadString(Section,'收费统计',''));
  if IniFile.ReadString(Section,'未打发票','')<>'' then
     AddToMemo(MemoWDSQL,IniFile.ReadString(Section,'未打发票',''));

  SqlList:=TStringList.Create;
  Colls  :=TStringList.Create;
  CutStr(IniFile.ReadString(Section,'集合浏览',''),Colls,';');
  ListViewFL.Items.Clear;
  for I:=0 to Colls.Count-1 do
    with ListViewFL.Items.Add do begin
         Caption:=Colls.Strings[i];
         SqlList.Clear;
         CutStr(IniFile.ReadString(Section,Colls.Strings[I],''),SqlList,'|');
         if SqlList.Count>0 then
            SubItems.Add(SqlList.Strings[0]);
         if SqlList.Count>1 then
            SubItems.Add(SqlList.Strings[1]);
    end;
  SqlList.Free;
  Colls.Free;
end;

procedure TFormAdvance.ButtonTestRunClick(Sender: TObject);
var
  SQLStr:String;
  FormTest: TFormTest;
  FormCase: TFormCase;
  TmpLst:TStringList;
  CollNames,SQLList:TStringList;
  I:Integer;
begin
  case PageControl.ActivePageIndex of
    0:SQLStr:=ListToStr(MemoMainSQL.Lines,'');
    1:SQLStr:=ListToStr(MemoZuoFeiSQL.Lines,'');
    2:SQLStr:=ListToStr(MemoWDSQL.Lines,'');
    3:SQLStr:=ListToStr(MemoTongJiSQL.Lines,'');
  end;
  with DataMD do
  case PageControl.ActivePageIndex of
    0,1,2,3:
      if SQLStr='' then
        ShowMessage('请正确填写SQL语句')
      else begin
        try
          TmpLst:=TStringList.Create;
          UnSqlStr(SQLStr,TmpLst);
          if TmpLst.Strings[2]='' then
            SQLStr:=TmpLst.Strings[0]+TmpLst.Strings[1]+' where 1=2 '+TmpLst.Strings[3]+TmpLst.Strings[4]
          else
            SQLStr:=TmpLst.Strings[0]+TmpLst.Strings[1]+TmpLst.Strings[2]+' and 1=2 '+TmpLst.Strings[3]+TmpLst.Strings[4];
          OpenPubQuery(SQLStr,False);
          TmpLst.Free;
          FormTest:=TFormTest.Create(Self);
          FormTest.Top:=Self.Top+Self.Height;
          FormTest.Show;
        except
          ShowMessage('SQL语句不正确');
          raise;
        end;
      end;
    4:begin
        FormCase:=TFormCase.Create(Self);
        CollNames:=TStringList.Create;
        SQLList:=TStringList.Create;
        for i:=0 to ListViewFL.Items.Count-1 do begin
            CollNames.Add(ListViewFL.Items[i].Caption);
            SQLList.Add(ListViewFL.Items[i].SubItems[0]);
        end;
        if FormCase.MakeFace(CollNames,SQLList) then
          FormCase.ShowModal;
        CollNames.Free;
        SQLList.Free;
        FormCase.Free;
    end;
  end;
end;

procedure TFormAdvance.SpeedButtonAddClick(Sender: TObject);
begin
  EditColl.Text:='';EditCV.Text:='';MemoSQL.Lines.Text:='';
  ListViewFL.Visible:=False;
  Panel5.Visible:=False;
  Panel4.Visible:=True;
  Panel4.Tag:=1;//新增
end;

procedure TFormAdvance.BitBtnOKClick(Sender: TObject);
begin
  if EditColl.Text='' then begin
     ShowMessage('集合说明不能为空');
     Exit;
  end;
  if EditCV.Text='' then begin
     ShowMessage('集合取值不能为空');
     Exit;
  end;
  if Trim(MemoSQL.Lines.Text)='' then begin
     ShowMessage('条件范围不能为空');
     Exit;
  end;
  if Panel4.Tag=1 then begin
     with ListViewFL.Items.Add do begin
          Caption:=EditColl.Text;
          SubItems.Add(EditCV.Text);
          SubItems.Add(MemoSQL.Lines.Text);
     end;
  end
  else if Panel4.Tag=0 then begin
     with ListViewFL.Selected do begin
          Caption:=EditColl.Text;
          SubItems.Clear;
          SubItems.Add(EditCV.Text);
          SubItems.Add(MemoSQL.Lines.Text);
     end;
  end;
  Panel4.Visible:=False;
  ListViewFL.Visible:=True;
  Panel5.Visible:=True;
end;

procedure TFormAdvance.BitBtnCancelClick(Sender: TObject);
begin
  Panel4.Visible:=False;
  ListViewFL.Visible:=True;
  Panel5.Visible:=True;
end;

procedure TFormAdvance.SpeedButtonEditClick(Sender: TObject);
begin
  if not Assigned(ListViewFL.Selected) then Exit;
  ListViewFL.Visible:=False;
  Panel5.Visible:=False;
  Panel4.Visible:=True;
  EditColl.Text:=ListViewFL.Selected.Caption;
  EditCV.Text:=ListViewFL.Selected.SubItems[0];
  MemoSQL.Lines.Text:=ListViewFL.Selected.SubItems[1];
  Panel4.Tag:=0;//修改
end;

procedure TFormAdvance.SpeedButtonDelClick(Sender: TObject);
begin
  if Assigned(ListViewFL.Selected) then
     ListViewFL.Selected.Delete;
end;

end.

⌨️ 快捷键说明

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