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

📄 unit_frmsaleticket.pas

📁 影院售票系统完整源码
💻 PAS
📖 第 1 页 / 共 3 页
字号:
unit Unit_frmsaleticket;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Unit_frmtemplate, ExtCtrls, ComCtrls, StdCtrls, Mask, CyberEdit,
  CyberPanel, Buttons, ToolWin, Grids,unit_public, CyberXPMenu,QT,
  CyberButton, Menus;

type
  Tfrmsaleticket = class(Tfrmtemplate)
    CyberSizePanel1: TPanel;
    Label1: TLabel;
    DTPplandate: TDateTimePicker;
    Label2: TLabel;
    Combocinema: TComboBox;
    Label3: TLabel;
    Combohall: TComboBox;
    Panel4: TPanel;
    panelcolor: TPanel;
    SelledColor: TStaticText;
    Bookcolor: TStaticText;
    DrawGrid1: TDrawGrid;
    Timer1: TTimer;
    ListView2: TListView;
    Label8: TLabel;
    Edtticketcount: TCyberEdit;
    Label11: TLabel;
    Edtmoney1: TCyberEdit;
    EdtGivechange: TCyberEdit;
    Label12: TLabel;
    Edtmoney: TCyberEdit;
    Label10: TLabel;
    Label4: TLabel;
    Edtfield: TCyberButtonEdit;
    Label6: TLabel;
    Combotickettype: TComboBox;
    BtnSell: TBitBtn;
    Btngiveup: TBitBtn;
    Label5: TLabel;
    Label7: TLabel;
    Label9: TLabel;
    MenuOther: TPopupMenu;
    MenuBookTicket: TMenuItem;
    MenuSellBookticket: TMenuItem;
    MenuQuit: TMenuItem;
    CyberXPMenu1: TCyberXPMenu;
    N4: TMenuItem;
    Lblfilm: TLabel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    Label13: TLabel;
    Edtseat: TCyberEdit;
    Label14: TLabel;
    Edtalreadysell: TCyberEdit;
    Label15: TLabel;
    EdtBook: TCyberEdit;
    Label16: TLabel;
    Label17: TLabel;
    Edtfree: TCyberEdit;
    EdtSum: TCyberEdit;
    Label18: TLabel;
    Edtrebate: TCyberEdit;
    Label19: TLabel;
    ColorDialog1: TColorDialog;
    Checkcolor: TStaticText;
    ListView1: TListView;
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormCreate(Sender: TObject);
    procedure DTPplandateChange(Sender: TObject);
    procedure CombocinemaChange(Sender: TObject);
    procedure CombohallChange(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure ListView1Click(Sender: TObject);
    procedure DrawGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
    procedure DrawGrid1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure DrawGrid1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Timer1Timer(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure DrawGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure ListView2KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure ToolButton3Click(Sender: TObject);
    procedure EdtfieldButtonClick(Sender: TObject);
    procedure EdtfieldKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure ListView1DblClick(Sender: TObject);
    procedure ListView1KeyPress(Sender: TObject; var Key: Char);
    procedure CombotickettypeEnter(Sender: TObject);
    procedure BtnSellClick(Sender: TObject);
    procedure BtngiveupClick(Sender: TObject);
    procedure Edtmoney1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure EdtfieldDblClick(Sender: TObject);
    procedure MenuQuitClick(Sender: TObject);
    procedure MenuBookTicketClick(Sender: TObject);
    procedure MenuSellBookticketClick(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure SelledColorClick(Sender: TObject);
    procedure BookcolorClick(Sender: TObject);
    procedure CheckcolorClick(Sender: TObject);
  private
    MouseDown                   :Boolean;
    CurGridrow,CurGridCol       :integer;
    CurRow,CurCol       :integer;
    cinemaid,hallid     :integer;
    seattype,TicketType :integer;
    plid                :integer;
    seatList            :TSeatList;
    pricelist           :TPriceList;
    Selled              :Boolean;
    SetColor            :Boolean;
    procedure GetSeatColor;
    procedure Initcombocinema(sqlstr:string);
    procedure Initcombohall(sqlstr:string);
    procedure Refreshcombotickettype(_seattype:integer);
    procedure Refreshlistviewplan(sqlstr:string);
    procedure RefreshSeat(_plid:integer);
    procedure RefreshGrid;
    procedure Refreshstatus(_plid:integer);
    procedure RefreshPriceList(_plid:integer);
    procedure AddItem(prt:PTicketNode);
    function  ItemExist(_row,_col:integer):Boolean;
    procedure Clear;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmsaleticket: Tfrmsaleticket;

implementation
uses unit_adodm,unit_frmsellrecord, Unit_frmkhinfo,unit_frmsellBookTicket;
{$R *.dfm}

{ Tfrmsaleticket }

procedure Tfrmsaleticket.GetSeatColor;
var
  sqlstr:string;
  txt:TStaticText;
  i,_top:integer;
begin
  _top:=Checkcolor.Top+Checkcolor.Height+10;
  sqlstr:='select * from tblseattype';
  if publicinfo.Execsql(sqlstr,false) then
  begin
     with adodm.ADOQRY do
     begin
       if recordcount<=0 then exit;
       first;
       for i:=1 to recordcount do
       begin
         txt:=TStaticText.Create(panelColor);
         txt.Parent :=panelColor;
         txt.AutoSize :=false;
         txt.Alignment :=taCenter;
         txt.BevelEdges :=[beLeft,beTop,beRight,beBottom];
         txt.BevelInner :=bvRaised;
         txt.BorderStyle :=sbsSunken;
         txt.Left :=selledcolor.Left ;
         txt.Top :=_top ;
         txt.Width :=selledcolor.Width;
         txt.Height :=selledcolor.Height;
         txt.Caption :=fieldbyname('name').AsString ;
         txt.Color :=fieldbyname('color').AsInteger ;
         _top:=_top+txt.Height +10 ;
         next;
       end;
     end;
  end;
end;

procedure Tfrmsaleticket.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case key of
  27:
     BtngiveupClick(nil);
  13:
     perform(WM_NEXTDLGCTL,0,0);
  Key_V:
     begin
       frmsellrecord:=Tfrmsellrecord.MyCreate(Application,true);
       try
         frmsellrecord.sqlstr :=' where plid='+inttostr(plid)+' and (personid='+inttostr(publicinfo.OperID)+
                        ' or Delperson='+inttostr(publicinfo.OperID)+')';
         frmsellrecord.ShowModal ;
       finally
         frmsellrecord.Free ;
       end;
     end;
  Key_S:
     BtnSellClick(nil);
  Key_X:
     BtngiveupClick(nil);
  Key_Q:
     MenuQuitClick(nil);
  Key_R:
     MenuBookTicketClick(nil);
  Key_D:
     MenuSellBookticketClick(nil);    
  end;   
end;

procedure Tfrmsaleticket.FormCreate(Sender: TObject);
begin
  inherited;
  seatList :=TSeatList.Create ;
  pricelist:=TPriceList.Create ;
end;

procedure Tfrmsaleticket.Initcombocinema(sqlstr: string);
var
  i,_cinemaid:integer;
  _cinemaname:string;
begin
  combocinema.Items.Clear ;
  if publicinfo.Execsql(sqlstr,false) then
  begin
     with adodm.ADOQRY do
     begin
       if recordcount<=0 then exit;
       first;
       for i:=1 to recordcount do
       begin
         _cinemaid:=fieldbyname('cinemaid').AsInteger ;
         _cinemaname:=fieldbyname('cinemaname').AsString ;
         combocinema.Items.AddObject(_cinemaname,Tobject(_cinemaid));
         next;
       end;
       combocinema.ItemIndex :=0;
       cinemaid:=integer(combocinema.Items.Objects[0]);
     end;
  end;
end;

procedure Tfrmsaleticket.DTPplandateChange(Sender: TObject);
var
  sqlstr:string;
begin
  inherited;
  sqlstr:='select distinct cinemaid,cinemaname from tblfeatureplan_view where plandate='+
          #39+datetostr(dtpplandate.Date)+#39+' and status=''1''';

  Initcombocinema(sqlstr);
  sqlstr:='select distinct hallid,hallname from tblfeatureplan_view where plandate='+
          #39+datetostr(dtpplandate.Date)+#39+' and cinemaid='+inttostr(cinemaid)+
          ' and status=''1''';
  Initcombohall(sqlstr);
  sqlstr:='select * from tblfeatureplan_view where plandate='+
          #39+datetostr(dtpplandate.Date)+#39+' and hallid='+inttostr(hallid)+
          ' and status=''1''';
  Refreshlistviewplan(sqlstr);
end;

procedure Tfrmsaleticket.Initcombohall(sqlstr: string);
var
  i,_hallid:integer;
  _hallname:string;
begin
  combohall.Items.Clear ;
  if publicinfo.Execsql(sqlstr,false) then
  begin
     with adodm.ADOQRY do
     begin
       if recordcount<=0 then exit;
       first;
       for i:=1 to recordcount do
       begin
         _hallid:=fieldbyname('hallid').AsInteger ;
         _hallname:=fieldbyname('hallname').AsString ;
         combohall.Items.AddObject(_hallname,Tobject(_hallid));
         next;
       end;
       combohall.ItemIndex :=0;
       hallid:=integer(combohall.Items.Objects[0]);
     end;
  end;
end;

procedure Tfrmsaleticket.CombocinemaChange(Sender: TObject);
var
  sqlstr:string;
  i:integer;
begin
  inherited;
  i:=Combocinema.ItemIndex ;
  if i<0 then exit;
  cinemaid:=integer(Combocinema.Items.Objects[i]);
  sqlstr:='select distinct hallid,hallname from tblfeatureplan_view where plandate='+
          #39+datetostr(dtpplandate.Date)+#39+' and cinemaid='+inttostr(cinemaid)+
          ' and status=''1''';
  Initcombohall(sqlstr);
  sqlstr:='select * from tblfeatureplan_view where plandate='+
          #39+datetostr(dtpplandate.Date)+#39+
          ' and hallid='+inttostr(hallid)+
          ' and status=''1''';
  Refreshlistviewplan(sqlstr);
end;

procedure Tfrmsaleticket.Refreshlistviewplan(sqlstr: string);
var
  i:integer;
  item0:TListItem;
  prt:PPlanNode;
begin
  listview1.Items.Clear ;
  if publicinfo.Execsql(sqlstr,false) then
  begin
    with adodm.ADOQRY do
    begin
      if recordcount<=0 then exit;
      first;
      for i:=1 to recordcount do
      begin
        new(prt);
        prt^.id :=fieldbyname('id').AsInteger;
        prt^.fieldnum :=fieldbyname('fieldnum').AsString  ;
        prt^.starttime :=formatdatetime('HH:mm',fieldbyname('starttime').AsDateTime);
        prt^.endtime :=formatdatetime('HH:mm',fieldbyname('endtime').AsDateTime);
        prt^.filmname :=fieldbyname('filmname').AsString ;
        prt^.hallid   :=fieldbyname('hallid').AsInteger ;
        item0:=listview1.Items.Add ;
        item0.Caption :=prt^.fieldnum ;
        item0.SubItems.Add(prt^.starttime);
        item0.SubItems.Add(prt^.endtime);
        item0.SubItems.Add(prt^.filmname);
        item0.Data :=prt;
        next;
      end;
      listview1.Selected :=listview1.Items[0] ;
    end;
  end;
end;

procedure Tfrmsaleticket.CombohallChange(Sender: TObject);
var
  i:integer;
  sqlstr:string;
begin
  inherited;
  i:=Combohall.ItemIndex ;
  if i<0 then exit;
  hallid:=integer(Combohall.Items.Objects[i]);
  sqlstr:='select * from tblfeatureplan_view where plandate='+
          #39+datetostr(dtpplandate.Date)+#39+
          ' and hallid='+inttostr(hallid)+
          ' and status=''1''';
  Refreshlistviewplan(sqlstr);
  listview1.Visible :=true;
  listview1.SetFocus ;
end;

procedure Tfrmsaleticket.FormShow(Sender: TObject);
begin
  inherited;
  GetSeatColor;
  DTPplandate.Date :=date;
  DTPplandate.SetFocus ;
  DTPplandateChange(nil);
  Refreshcombotickettype(plid);
end;

procedure Tfrmsaleticket.RefreshSeat(_plid: integer);
var
  i,j:integer;
  sqlstr:string;
  _rowcount,_colcount:integer;
  _rownum,_colnum,_seattype:integer;
  _gridrow,_gridcol,_color:integer;
  _Seattypename,_status:string;
  rect1:TRect;
begin

⌨️ 快捷键说明

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