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

📄 unit_frmsaleticket.pas

📁 影院售票系统完整源码
💻 PAS
📖 第 1 页 / 共 3 页
字号:
  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 ;
  if listview1.Items.Count >0 then listview1.Selected :=listview1.Items[0];

end;

procedure Tfrmsaleticket.EdtfieldKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;
  if key=13 then  EdtfieldButtonClick(nil);
end;

procedure Tfrmsaleticket.ListView1DblClick(Sender: TObject);
begin
  inherited;
  ListView1Click(nil);
end;

procedure Tfrmsaleticket.ListView1KeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  if key=#13 then ListView1Click(nil);
end;

procedure Tfrmsaleticket.CombotickettypeEnter(Sender: TObject);
begin
  inherited;
  Refreshcombotickettype(seattype);
end;

procedure Tfrmsaleticket.Refreshstatus(_plid: integer);
var
  sqlstr,_status:string  ;
  i,j,_gridrow,_gridcol:integer;
begin
  sqlstr:='select gridrow,gridcol,status from tblplanseat_view where plid='+inttostr(_plid)+' order by gridrow,gridcol ';
  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
         _gridrow:=fieldbyname('gridrow').AsInteger ;
         _gridcol:=fieldbyname('gridcol').AsInteger ;
         j:=seatlist.IndexOf_Seat(_gridrow,_gridcol);
         if j<0 then continue;
         _status:=fieldbyname('status').AsString ;
         PSeatNode(seatlist.Items[j]).status :=_status;
         next;
      end;
    end;
  end;
  sqlstr:='select sumcount,alreadysell,reservecount,freecount from tblfeatureplan_view where id='+inttostr(_plid);
  if publicinfo.Execsql(sqlstr,false) then
  begin
    with adodm.ADOQRY do
    begin
      if recordcount<=0 then exit;
      first;
      edtsum.Text :=fieldbyname('sumcount').AsString;
      edtalreadysell.Text :=fieldbyname('alreadysell').AsString ;
      edtbook.Text :=fieldbyname('reservecount').AsString ;
      edtfree.Text :=fieldbyname('freecount').AsString ;
    end;
  end;
end;

procedure Tfrmsaleticket.BtnSellClick(Sender: TObject);
var
  i:integer;
  item0:TListItem;
  _price:single;
begin
  inherited;
  Selled:=false;
  if listview2.Items.Count<=0 then exit;
  try
    adodm.ADOCN.BeginTrans ;
    for i:=0 to listview2.Items.Count-1 do
    begin
      item0:=listview2.Items[i];
      _price:=round((PTicketNode(item0.Data)^.price*Edtrebate.Value)/100);
      Edtmoney.Value :=Edtmoney.Value +_price;
      with Adodm.ADOProc do
      begin
        Close;
        ProcedureName := 'My_sell_ticket';
        Parameters.Refresh;
        Parameters.Items[1].Value :=plid;
        Parameters.Items[2].Value :=PTicketNode(item0.Data)^.rownum;
        Parameters.Items[3].Value :=PTicketNode(item0.Data)^.colnum;
        Parameters.Items[4].Value :=PTicketNode(item0.Data)^.seattype;
        Parameters.Items[5].Value :=PTicketNode(item0.Data)^.tickettype;
        Parameters.Items[6].Value :=_price;
        Parameters.Items[7].Value :=publicinfo.OperID;
        Parameters.Items[8].Value :='';
        Parameters.Items[9].Value :='';
        Parameters.Items[10].Value :='';
        Parameters.Items[11].Value :='0';
        Parameters.Items[12].Value :=0;
        Parameters.Items[13].Value :=0;
        Parameters.Items[14].Value :=Edtrebate.Value;
        Parameters.Items[15].Value :=-1;
        ExecProc;
        if Parameters.ParamByName('@retcode').Value <>1 then
        begin
          adodm.ADOCN.RollbackTrans;
          publicinfo.showmsg('你所选的票已经售出或被预订,请重新选择!');
          listview2.Clear ;
          Clear;
          exit;
        end;
      end;
    end;
    adodm.ADOCN.CommitTrans ;
    Selled:=True;
    Edtticketcount.Text :=inttostr(listview2.Items.Count);
    Edtmoney1.Value :=Edtmoney.Value ;
    edtmoney1.SetFocus ;
  except
    on e:exception do  publicinfo.showmsg(e.Message); 
  end;
end;



Function Tfrmsaleticket.ItemExist(_row, _col: integer):Boolean;
var
  item0:TListItem;
  i:integer;
begin
  result:=false;
  for i:=0 to listview2.Items.Count-1 do
  begin
    item0:=listview2.Items[i];
    if (PTicketNode(item0.Data)^.rownum=_row)
       and (PTicketNode(item0.Data)^.colnum=_col) then
    begin
      result:=true;
      exit;
    end;
  end;
end;

procedure Tfrmsaleticket.BtngiveupClick(Sender: TObject);
var
  i:integer;
  item0:TListItem;
begin
  inherited;
  if listview2.Items.Count<=0 then exit;
  if not selled then
  begin
   listview2.Clear ;
   exit;
  end; 
  try
    adodm.ADOCN.BeginTrans ;
    for i:=0 to listview2.Items.Count-1 do
    begin
      item0:=listview2.Items[i];
      with Adodm.ADOProc do
      begin
        Close;
        ProcedureName := 'My_Del_ticket';
        Parameters.Refresh;
        Parameters.Items[1].Value :=plid;
        Parameters.Items[2].Value :=PTicketNode(item0.Data)^.rownum;
        Parameters.Items[3].Value :=PTicketNode(item0.Data)^.colnum;
        Parameters.Items[4].Value :=PTicketNode(item0.Data)^.seattype;
        Parameters.Items[5].Value :=PTicketNode(item0.Data)^.tickettype;
        Parameters.Items[6].Value :=PTicketNode(item0.Data)^.price;
        Parameters.Items[7].Value :=publicinfo.OperID;
        Parameters.Items[8].Value :=-1;
        ExecProc;
        if Parameters.ParamByName('@retcode').Value <>1 then
        begin
          adodm.ADOCN.RollbackTrans;
          exit;
        end;
      end;
    end;
    adodm.ADOCN.CommitTrans ;
    publicinfo.showmsg('成功放弃你所选的所有影票!');
    listview2.Items.Clear ;
    Edtmoney1.Text :='';
    Edtmoney.Text  :='';
    Edtticketcount.Text :='';
    EdtGivechange.Text :='';
  finally
    selled:=false;
  end;
end;

procedure Tfrmsaleticket.Edtmoney1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;
  if key=13 then
  begin
    EdtGivechange.Value :=Edtmoney1.Value-Edtmoney.Value;
    listview2.Items.Clear ;
    Clear;
    BtnSell.SetFocus ;
    selled:=false;
  end;
end;

procedure Tfrmsaleticket.EdtfieldDblClick(Sender: TObject);
begin
  inherited;
  EdtfieldButtonClick(nil);
end;

procedure Tfrmsaleticket.Clear;
begin
  edtmoney1.Text :='';
  edtmoney.Text :='';
  edtticketcount.Text :='';
  EdtGivechange.Text :='';
end;

procedure Tfrmsaleticket.MenuQuitClick(Sender: TObject);
var
  txt:string;
  i:integer;
  prt:PSeatNode;
  _scale:single;
begin
  inherited;
  _scale:=0;
  i:=seatlist.IndexOf_row_col(currow,curcol);
  if i<0 then exit;
  prt:=seatlist.Items[i];
  if prt^.status<>'1' then exit;
  txt:=inttostr(currow)+' 排'+inttostr(curcol)+' 号'+'座位';
  if application.MessageBox(pchar(txt+'的影票确定要退吗?'),'退票',MB_YESNO)=7 then exit;
  if publicinfo.Execsql('select paramvalue from tblsysparam where paramid=1',false) then
  begin
    if adodm.ADOQRY.RecordCount >0 then
    begin
      adodm.ADOQRY.first;
      _scale:=adodm.ADOQRY.fieldbyname('paramvalue').AsFloat/100;
    end;
  end;
  with Adodm.ADOProc do
  begin
    Close;
    ProcedureName := 'My_quit_ticket';
    Parameters.Refresh;
    Parameters.Items[1].Value :=plid;
    Parameters.Items[2].Value :=currow;
    Parameters.Items[3].Value :=curcol;
    Parameters.Items[4].Value :=_scale;
    Parameters.Items[5].Value :=publicinfo.OperID;
    Parameters.Items[6].Value :=-1;
    ExecProc;
    if Parameters.ParamByName('@retcode').Value =1 then
      publicinfo.showmsg(txt+'影票退票成功')
    else
      publicinfo.showmsg(txt+'影票退票失败');
  end;
end;

procedure Tfrmsaleticket.MenuBookTicketClick(Sender: TObject);
var
  i:integer;
  item0:TListItem;
begin
  inherited;
  if listview2.Items.Count<=0 then exit;
  frmkhinfo:=Tfrmkhinfo.create(Application);
  try
    frmkhinfo.plid:=plid;
    if frmkhinfo.showmodal=mrok then
    begin
      adodm.ADOCN.BeginTrans ;
      for i:=0 to listview2.Items.Count-1 do
      begin
        item0:=listview2.Items[i];
        with Adodm.ADOProc do
        begin
          Close;
          ProcedureName := 'My_sell_ticket';
          Parameters.Refresh;
          Parameters.Items[1].Value :=plid;
          Parameters.Items[2].Value :=PTicketNode(item0.Data)^.rownum;
          Parameters.Items[3].Value :=PTicketNode(item0.Data)^.colnum;
          Parameters.Items[4].Value :=PTicketNode(item0.Data)^.seattype;
          Parameters.Items[5].Value :=PTicketNode(item0.Data)^.tickettype;
          Parameters.Items[6].Value :=round((PTicketNode(item0.Data)^.price*Edtrebate.Value)/100);
          Parameters.Items[7].Value :=publicinfo.OperID;
          Parameters.Items[8].Value :=frmkhinfo.name ;
          Parameters.Items[9].Value :=frmkhinfo.phone ;
          Parameters.Items[10].Value :=frmkhinfo.No ;
          Parameters.Items[11].Value :='3';
          Parameters.Items[12].Value :=publicinfo.OperID;
          Parameters.Items[13].Value :=0;
          Parameters.Items[14].Value :=Edtrebate.Value;
          Parameters.Items[15].Value :=-1;
          ExecProc;
          if Parameters.ParamByName('@retcode').Value <>1 then
          begin
            adodm.ADOCN.RollbackTrans;
            publicinfo.showmsg('你所选的票已经被售出获被预订,不能预订!');
            listview2.Clear ;
            exit;
          end;
        end;
      end;
      adodm.ADOCN.CommitTrans ;
      listview2.Items.Clear ;
      Application.MessageBox(pchar('成功预订影票,'+'请记住你的取票号为:'+frmkhinfo.No),'预订影票',mb_ok);
    end;
  finally
    frmkhinfo.free;
  end;
end;

procedure Tfrmsaleticket.MenuSellBookticketClick(Sender: TObject);
begin
  inherited;
  frmsellBookTicket:=TfrmsellBookTicket.Create(Application);
  try
    frmsellBookTicket.Plid :=plid;
    frmsellBookTicket.ShowModal ;
  finally
    frmsellBookTicket.Free ;
  end;
end;

procedure Tfrmsaleticket.BitBtn4Click(Sender: TObject);
begin
  inherited;
  close;
end;

procedure Tfrmsaleticket.BitBtn3Click(Sender: TObject);
begin
  inherited;
  MenuQuitClick(nil);
end;

procedure Tfrmsaleticket.BitBtn2Click(Sender: TObject);
begin
  inherited;
  MenuSellBookticketClick(nil);
end;

procedure Tfrmsaleticket.BitBtn1Click(Sender: TObject);
begin
  inherited;
  MenuBookTicketClick(nil);
end;

procedure Tfrmsaleticket.SelledColorClick(Sender: TObject);
begin
  inherited;
  if ColorDialog1.Execute then
     selledcolor.Color                 :=ColorDialog1.Color ;
end;

procedure Tfrmsaleticket.BookcolorClick(Sender: TObject);
begin
  inherited;
  if ColorDialog1.Execute then
     Bookcolor.Color                 :=ColorDialog1.Color ;
end;

procedure Tfrmsaleticket.CheckcolorClick(Sender: TObject);
begin
  inherited;
  if ColorDialog1.Execute then
     Checkcolor.Color                 :=ColorDialog1.Color ;
end;

end.

⌨️ 快捷键说明

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