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

📄 unit_frmsellrecord.pas

📁 影院售票系统完整源码
💻 PAS
字号:
unit Unit_frmsellrecord;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Unit_frmtemplate2, StdCtrls, Buttons, ExtCtrls, ComCtrls,
  CyberPanel, CyberListVw, CyberXPMenu;

type
  Tfrmsellrecord = class(Tfrmtemplate2)
    CyberSizePanel1: TCyberSizePanel;
    GroupBox1: TGroupBox;
    Panelconsign: TPanel;
    Panel4: TPanel;
    Panel35: TPanel;
    Panel33: TPanel;
    ChkCinema: TCheckBox;
    Combocinema: TComboBox;
    Panel31: TPanel;
    Label2: TLabel;
    Chkplandate: TCheckBox;
    Dtpstartdate: TDateTimePicker;
    Dtpenddate: TDateTimePicker;
    Panel34: TPanel;
    Chkhall: TCheckBox;
    Combohall: TComboBox;
    Panel32: TPanel;
    chkstatus: TCheckBox;
    Combostatus: TComboBox;
    Panel5: TPanel;
    Btnquery: TBitBtn;
    ListView1: TCyberListView;
    chkperson: TCheckBox;
    Comboperson: TComboBox;
    Panel36: TPanel;
    chktickettype: TCheckBox;
    Combotickettype: TComboBox;
    Panel37: TPanel;
    chkseattype: TCheckBox;
    Comboseattype: TComboBox;
    Label1: TLabel;
    CyberXPMenu1: TCyberXPMenu;
    BtnExcel: TBitBtn;
    procedure FormShow(Sender: TObject);
    procedure ListView1CustomDrawItem(Sender: TCustomListView;
      Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
    procedure ChkplandateClick(Sender: TObject);
    procedure chkstatusClick(Sender: TObject);
    procedure ChkCinemaClick(Sender: TObject);
    procedure ChkhallClick(Sender: TObject);
    procedure chkpersonClick(Sender: TObject);
    procedure BtnqueryClick(Sender: TObject);
    procedure chktickettypeClick(Sender: TObject);
    procedure chkseattypeClick(Sender: TObject);
    procedure CombocinemaChange(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure BtnExcelClick(Sender: TObject);
  private
     viewmode:Boolean;
     cinemaid,hallid:integer;
     procedure InitComboperson;
     procedure refreshlistview(_sqlstr:string);
    { Private declarations }
  public
     sqlstr:string;
     constructor MyCreate(AOwner: TComponent; _Viewmode: Boolean);
    { Public declarations }
  end;

var
  frmsellrecord: Tfrmsellrecord;

implementation
uses unit_public,unit_adodm;
{$R *.dfm}

{ Tfrmsellrecord }

constructor Tfrmsellrecord.MyCreate(AOwner: TComponent;
  _Viewmode: Boolean);
begin
  inherited Create(AOwner);
  viewmode:=_viewmode;
end;

procedure Tfrmsellrecord.refreshlistview(_sqlstr: string);
var
  i,reccount:integer;
  item0:TListItem;
  validcount,quitcount,invalidcount :integer;
  validprice,quitprice,invalidprice :single;
  _status    :string;
begin
  listview1.items.BeginUpdate ;
  listview1.Items.Clear ;
  listview1.Items.EndUpdate ;
  _sqlstr:='select id,plandate,cinemaname,hallname,fieldnum,starttime,filmname,seatname,ticketname,rebate,price,'+
           'username,selldate,quitperson,poundage,deldate,status,statuscn from tblticketsale_view '+_sqlstr;
  try
    screen.Cursor :=crHourGlass;
    listview1.Items.BeginUpdate ;
    if publicinfo.Execsql(_sqlstr,false) then
    begin
      with adodm.ADOQRY  do
      begin
        reccount:=recordcount;
        if reccount<=0 then exit;
        first;
        for i:=1 to reccount do
        begin
           item0:=listview1.Items.Add ;
           item0.Caption :=fieldbyname('plandate').AsString;
           item0.SubItems.Add(fieldbyname('cinemaname').AsString);
           item0.SubItems.Add(fieldbyname('hallname').AsString);
           item0.SubItems.Add(fieldbyname('fieldnum').AsString);
           item0.SubItems.Add(formatdatetime('HH:mm',fieldbyname('starttime').AsDateTime));
           item0.SubItems.Add(fieldbyname('filmname').AsString);
           item0.SubItems.Add(fieldbyname('seatname').AsString);
           item0.SubItems.Add(fieldbyname('ticketname').AsString);
           item0.SubItems.Add(fieldbyname('rebate').AsString);
           item0.SubItems.Add(format('%.1f',[fieldbyname('price').asfloat]));
           item0.SubItems.Add(fieldbyname('username').AsString);
           item0.SubItems.Add(fieldbyname('selldate').AsString);
           item0.SubItems.Add(fieldbyname('statuscn').AsString);
           item0.SubItems.Add(fieldbyname('quitperson').AsString);
           item0.SubItems.Add(fieldbyname('poundage').AsString);
           item0.SubItems.Add(fieldbyname('deldate').AsString);
           item0.Data :=pointer(fieldbyname('id').AsInteger);
           _status:=fieldbyname('status').asstring;
           if _status='0' then
           begin
             inc(validcount);
             validprice:=validprice+fieldbyname('price').AsFloat;
           end
           else if _status='1' then
           begin
             inc(quitcount);
             quitprice :=quitprice+fieldbyname('poundage').AsFloat;
           end
           else if _status='2' then
           begin
             inc(invalidcount);
             invalidprice:=invalidprice+fieldbyname('price').AsFloat;
           end;
           next;
        end;
        item0:=listview1.Items.Add ;
        item0.Caption :='售出:'+inttostr(Validcount);
        item0.SubItems.Add ('票房收入:'+format('%.2f',[validprice]));
        item0.SubItems.Add ('退票:'+inttostr(quitcount));
        item0.SubItems.Add ('手续费:'+format('%.2f',[quitprice]));
        item0.SubItems.Add ('废票:'+inttostr(invalidcount));
      end;
    end;
  finally
    listview1.items.EndUpdate;
    screen.Cursor :=crDefault;
  end;
end;

procedure Tfrmsellrecord.FormShow(Sender: TObject);
var
  _sqlstr:string;
begin
  inherited;
  publicinfo.DatasetToCombbox(combocinema,2);
  if combocinema.ItemIndex>=0 then
  begin
     cinemaid:=integer(combocinema.Items.Objects[combocinema.ItemIndex]);
     publicinfo.refreshhallcomb(combohall,cinemaid);
  end;
  initcomboperson;
  publicinfo.DatasetToCombbox(Comboseattype,5);
  publicinfo.DatasetToCombbox(combotickettype,6);
  if viewmode then
     btnquery.Visible :=false
  else
     btnquery.Visible :=true;
  if sqlstr='' then
  begin
    _sqlstr:='where selldate>='+#39+datetostr(date-1)+#39+' and selldate<='+#39+datetimetostr(Now)+#39;
    refreshlistview(_sqlstr);
  end
  else
    refreshlistview(sqlstr);
end;

procedure Tfrmsellrecord.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  inherited;
  publicinfo.ListViewDraw(item,DefaultDraw);
end;

procedure Tfrmsellrecord.ChkplandateClick(Sender: TObject);
begin
  inherited;
  if Chkplandate.Checked then
     Panel31.Height     :=panelheigh+40
  else
     panel31.Height     :=panelheigh1;
end;

procedure Tfrmsellrecord.chkstatusClick(Sender: TObject);
begin
  inherited;
  if Chkstatus.Checked then
     Panel32.Height     :=panelheigh
  else
     panel32.Height     :=panelheigh1;
end;

procedure Tfrmsellrecord.ChkCinemaClick(Sender: TObject);
begin
  inherited;
  if Chkcinema.Checked then
     Panel33.Height     :=panelheigh
  else
     panel33.Height     :=panelheigh1;
end;

procedure Tfrmsellrecord.ChkhallClick(Sender: TObject);
begin
  inherited;
  if Chkhall.Checked then
     Panel34.Height     :=panelheigh
  else
     panel34.Height     :=panelheigh1;
end;

procedure Tfrmsellrecord.chkpersonClick(Sender: TObject);
begin
  inherited;
  if Chkperson.Checked then
     Panel35.Height     :=panelheigh
  else
     panel35.Height     :=panelheigh1;
end;

procedure Tfrmsellrecord.InitComboperson;
var
  _sqlstr:string;
  i,reccount,_id:integer;
  _name:string;
begin
  _sqlstr:='select id,username from tbluser';
  if publicinfo.Execsql(_sqlstr,false) then
  begin
    reccount:=Adodm.ADOQRY.RecordCount;
    if reccount>0 then
    begin
      Adodm.ADOQRY.First ;
      for i:=1 to reccount do
      begin
        _id         := Adodm.ADOQRY.fieldByName('id').AsInteger;
        _name       := Adodm.ADOQRY.fieldByName('username').AsString;
        Comboperson.Items.AddObject(_name,Tobject(_id));
        Adodm.ADOQRY.Next ;
      end;
      Comboperson.ItemIndex := 0;
    end;
  end;
end;

procedure Tfrmsellrecord.BtnqueryClick(Sender: TObject);
var
  _sqlstr:string;
begin
  _sqlstr:='where 1=1' ;
  if (Chkplandate.Checked) then
  begin
     if dtpstartdate.Checked then
     _sqlstr:=_sqlstr+' and plandate>='+#39+datetostr(dtpstartdate.Date)+#39 ;
     if dtpenddate.Checked then
     _sqlstr:=_sqlstr+' and plandate<='+#39+datetostr(dtpenddate.Date)+#39 ;
  end;
  if (chkstatus.Checked) and (Combostatus.Text<>'') then
  _sqlstr:=_sqlstr+' and status='+#39+copy(Combostatus.Text,1,1)+#39;
  if (ChkCinema.Checked) and (combocinema.ItemIndex>-1) then
  _sqlstr:=_sqlstr+' and cinemaid='+inttostr(integer(combocinema.Items.Objects[combocinema.ItemIndex]));
  if (Chkhall.Checked) and (combohall.ItemIndex>-1) then
  _sqlstr:=_sqlstr+' and hallid='+inttostr(integer(combohall.Items.Objects[combohall.ItemIndex]));
  if (Chkperson.Checked) and (comboperson.ItemIndex>-1) then
  _sqlstr:=_sqlstr+' and (personid='+inttostr(integer(comboperson.Items.Objects[comboperson.ItemIndex]))+
           ' or delperson='+inttostr(integer(comboperson.Items.Objects[comboperson.ItemIndex]))+')';
  if (Chktickettype.Checked) and (combotickettype.ItemIndex>-1) then
  _sqlstr:=_sqlstr+' and tickettype='+inttostr(integer(combotickettype.Items.Objects[combotickettype.ItemIndex]));
  if (Chkseattype.Checked) and (comboseattype.ItemIndex>-1) then
  _sqlstr:=_sqlstr+' and seattype='+inttostr(integer(comboseattype.Items.Objects[comboseattype.ItemIndex]));
  refreshlistview(_sqlstr);
end;

procedure Tfrmsellrecord.chktickettypeClick(Sender: TObject);
begin
  inherited;
  if Chktickettype.Checked then
     Panel36.Height     :=panelheigh
  else
     panel36.Height     :=panelheigh1;
end;

procedure Tfrmsellrecord.chkseattypeClick(Sender: TObject);
begin
  inherited;
  if Chkseattype.Checked then
     Panel37.Height     :=panelheigh
  else
     panel37.Height     :=panelheigh1;
end;

procedure Tfrmsellrecord.CombocinemaChange(Sender: TObject);
var
  _cinemaid:integer;
  i:integer;
begin
  inherited;
  i:=Combocinema.ItemIndex ;
  if i<0 then exit;
  _cinemaid:=integer(Combocinema.Items.Objects[i]);
  publicinfo.refreshhallcomb(combohall,_cinemaid); 
end;

procedure Tfrmsellrecord.FormResize(Sender: TObject);
begin
  inherited;
  Btnquery.Top:=Panel4.Height-btnquery.Height-10;
  btnexit.Left:=self.Width-btnexit.Width-10;
  BtnExcel.Left :=btnexit.Left-btnexcel.Width-10;
end;

procedure Tfrmsellrecord.BtnExcelClick(Sender: TObject);
begin
  inherited;
  publicinfo.ExportToExcel(self,TListView(listview1),'售票记录表',nil);
end;

end.

⌨️ 快捷键说明

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