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

📄 unit_frmseatset.pas

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

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Unit_frmtemplate2, Grids, ExtCtrls, Unit_frmtemplate, StdCtrls,
  Buttons, CyberPanel, ComCtrls, CyberListVw, Spin, Mask, CyberEdit,
  ImgList,unit_public, CyberXPMenu;
type
  Tfrmseatset = class(Tfrmtemplate2)
    CyberSizePanel1: TCyberSizePanel;
    Panel4: TPanel;
    Label1: TLabel;
    Bevel3: TBevel;
    Panel5: TPanel;
    Label4: TLabel;
    Comboseattype: TComboBox;
    Label3: TLabel;
    Edtcol: TSpinEdit;
    Label2: TLabel;
    Edtrow: TSpinEdit;
    ListView1: TCyberListView;
    panelColor: TCyberSizePanel;
    Panel6: TPanel;
    Label5: TLabel;
    Edtrow1: TCyberEdit;
    Edtseat: TCyberEdit;
    Label8: TLabel;
    Label9: TLabel;
    Edtcol1: TCyberEdit;
    Btnsave: TBitBtn;
    Label6: TLabel;
    Edtseatcount: TCyberEdit;
    Label7: TLabel;
    Edtpersoncount: TCyberEdit;
    BtnDel: TBitBtn;
    Label10: TLabel;
    CyberXPMenu1: TCyberXPMenu;
    DrawGrid1: TDrawGrid;
    BitBtn1: TBitBtn;
    BtnSame: TBitBtn;
    RadioGroup1: TRadioGroup;
    procedure FormShow(Sender: TObject);
    procedure BtnsaveClick(Sender: TObject);
    procedure ComboseattypeChange(Sender: TObject);
    procedure DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    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 BtnDelClick(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BtnSameClick(Sender: TObject);
  private
    editmode :Boolean;
    seattype :integer;
    sequence :Boolean;
    direction:Integer;
    seatList :TSeatList;
    Currow,CurCol:integer;
    MouseDown:Boolean;
    procedure refreshlistview(sqlstr:string);
    procedure InitSeat(_hallid:integer);
    procedure GetSeatColor;
    { Private declarations }
  public
    hallid:integer;
    constructor MyCreate(AOwner: TComponent; _Editmode: Boolean);
    { Public declarations }
  end;

var
  frmseatset: Tfrmseatset;

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

{ Tfrmseatset }

constructor Tfrmseatset.MyCreate(AOwner: TComponent; _Editmode: Boolean);
begin
  inherited Create(Application);
  editmode:=_editmode;
end;

procedure Tfrmseatset.FormShow(Sender: TObject);
var
  i:integer;
begin
  inherited;
  publicinfo.DatasetToCombbox(comboseattype,5);
  i:=Comboseattype.ItemIndex ;
  if i<0 then exit;
  seattype:=integer(Comboseattype.Items.Objects[i]);
  refreshlistview('select * from tblhallseat_view where hallid='+inttostr(hallid)+' order by rownum,colnum');
  direction     :=1;
  sequence      :=true;
  InitSeat(hallid);
  GetSeatColor;
end;

procedure Tfrmseatset.BtnsaveClick(Sender: TObject);
var
  i,j:integer;
  _gridrow,_gridcol:integer;
  _mid:integer;
begin
  inherited;
  i:=edtrow.Value ;
  j:=edtcol.Value ;
  {for j:=1 to edtcol.Value do
  begin
    if sequence then
    begin
      if direction=1 then
         _gridcol:=j
      else
         _gridcol:=edtcol.Value-j+1;
    end
    else
    begin
      _mid:=edtcol.Value div 2;
      if direction=1 then
      begin
        if j<=_mid then
           _gridcol:=2*(_mid-j)+1
        else
           _gridcol:=2*(j-_mid);
      end
      else
      begin
        if j<=_mid then
           _gridcol:=2*(_mid-j+1)
        else
           _gridcol:=2*(j-_mid-1)+1;
      end;
    end;  }
    with adodm.ADOProc do
    begin
        Close;
        ProcedureName := 'My_insert_seat';
        Parameters.Refresh;
        Parameters.Items[1].Value :=hallid;
        Parameters.Items[2].Value :=i;
        Parameters.Items[3].Value :=j;
        Parameters.Items[4].Value :=seattype;
        Parameters.Items[5].Value :=Currow;
        Parameters.Items[6].Value :=CurCol;
        Parameters.Items[7].Value :=-1;
        Parameters.Items[8].Value :=-1;
        ExecProc;
    end;
  //end;
  BitBtn1Click(nil);
  //refreshlistview('select * from tblhallseat_view where hallid='+inttostr(hallid)+' order by rownum,colnum');
end;

procedure Tfrmseatset.ComboseattypeChange(Sender: TObject);
var
  i:integer;
begin
  inherited;
  i:=Comboseattype.ItemIndex ;
  if i<0 then exit;
  seattype:=integer(Comboseattype.Items.Objects[i]);
end;

procedure Tfrmseatset.refreshlistview(sqlstr: string);
var
  i:integer;
  item0:TListItem;
begin
  listview1.Items.Clear ;
  if publicinfo.Execsql(sqlstr,false) then
  begin
    with adodm.ADOQRY do
    begin
      if recordcount<=0 then exit;
      first;
      listview1.Items.BeginUpdate ;
      for i:=1 to recordcount do
      begin
        item0:=listview1.Items.Add ;
        item0.Caption :=fieldbyname('rownum').AsString ;
        item0.SubItems.Add(fieldbyname('colnum').AsString);
        item0.SubItems.Add(fieldbyname('seatname').AsString);
        item0.Data :=pointer(fieldbyname('id').AsInteger );
        next;
      end;
      listview1.Items.EndUpdate ;
    end;
  end;
end;

procedure Tfrmseatset.InitSeat(_hallid: integer);
var
  i:integer;
  sqlstr:string;
  _rowcount,_colcount:integer;
  _rownum,_colnum,_seattype:integer;
  _gridrow,_gridcol,_color:integer;
  _Seattypename:string;
begin
  sqlstr:='select max(rownum) as rowcount1,max(colnum) as colcount1,'+
          'sum(personcount) as personcount,count(id)as seatcount'+
          ' from tblhallseat_view where hallid='+inttostr(_hallid);
  if publicinfo.Execsql(sqlstr,false) then
  begin
    adodm.ADOQRY.First ;
    _rowcount:=adodm.ADOQRY.fieldbyname('rowcount1').AsInteger ;
    _colcount:=adodm.ADOQRY.fieldbyname('colcount1').AsInteger ;
    edtpersoncount.Text :=adodm.ADOQRY.fieldbyname('personcount').AsString ;
    edtseatcount.Text :=adodm.ADOQRY.fieldbyname('seatcount').AsString ;
  end;
  seatlist.Clear ;
  sqlstr:='select * from tblhallseat_view where hallid='+inttostr(_hallid)+' order by gridrow,gridcol ';
  if publicinfo.Execsql(sqlstr,false) then
  begin
    with adodm.ADOQRY do
    begin
      first;
      for i:=1 to recordcount do
      begin
         _rownum:=fieldbyname('rownum').AsInteger ;
         _colnum:=fieldbyname('colnum').AsInteger ;
         _gridrow:=fieldbyname('gridrow').AsInteger ;
         _gridcol:=fieldbyname('gridcol').AsInteger ;
         _seattype:=fieldbyname('seattype').AsInteger ;
         _Seattypename:=fieldbyname('seatname').AsString  ;
         _color :=fieldbyname('color').AsInteger ;
         seatlist.Add(_gridrow,_gridcol,_rownum,_colnum,_color,_seattype,_seattypename,'0');
         next;
      end;
    end;
  end;
  DrawGrid1.Refresh ;
end;

procedure Tfrmseatset.DrawGrid1DrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
var
  Prt:PSeatNode;
  i:integer;
  txt:string;
begin
  inherited;
  if (ACol=0)  then
     with DrawGrid1 do
     begin
      canvas.Brush.Color :=clBtnFace;
      canvas.Rectangle(rect);
      Canvas.Font.Size:=9;
      //Canvas.Font.Color:=clblack;
      Canvas.TextOut(Rect.Left+2 ,Rect.Top+5,inttostr(Arow));
     end
  else if (ARow=0) then
     with DrawGrid1 do
     begin
      canvas.Rectangle(rect);
      Canvas.Font.Size:=9;
      //Canvas.Font.Color:=clblack;
      Canvas.TextOut(Rect.Left+2 ,Rect.Top+5,inttostr(ACol));
     end
 else
 begin
    if ((Acol=0) or (Arow=0)) then showmessage('adasd');
    txt:=inttostr(Acol)+':'+inttostr(Arow);
    i:=seatlist.IndexOf_Seat(Arow,Acol);
    if i<0 then
    begin
      with DrawGrid1 do
      begin
        canvas.Brush.Color :=clwhite ;
        canvas.Rectangle(rect);
      end;
      exit;
    end;
    prt:=seatlist.Items[i];
    //txt:=inttostr(prt^.rownum)+'排'+inttostr(prt^.colnum)+'号';
    txt:=inttostr(prt^.colnum)+'号';
    rect.Left :=rect.Left+2;
    rect.Top :=rect.Top+2;
    with DrawGrid1 do
    begin
      canvas.Brush.Color :=prt^.color ;
      canvas.Rectangle(rect);
      Canvas.Font.Size:=10;
      Canvas.Font.Style:=[fsBold];
      Canvas.Font.Color:=clblack;
      Canvas.TextOut(Rect.Left+1 ,Rect.Top+1,txt);
    end;
  end;
end;

procedure Tfrmseatset.GetSeatColor;
var
  sqlstr:string;
  txt:TStaticText;
  i,_left,_top:integer;
begin
  _left:=10;
  _top:=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(self);
         txt.Parent :=panelColor;
         txt.AutoSize :=false;
         txt.BevelEdges :=[beLeft,beTop,beRight,beBottom];
         txt.BevelInner :=bvRaised;
         txt.BorderStyle :=sbsSunken;
         txt.Left :=_left;
         txt.Top :=_top;
         txt.Width :=60;
         txt.Height :=16;
         txt.Caption :=fieldbyname('name').AsString ;
         txt.Color :=fieldbyname('color').AsInteger ;
         _left:=_left+txt.Width+10 ;
         next;
       end;
     end;
  end;
end;

{ TSeatList }

procedure Tfrmseatset.FormCreate(Sender: TObject);
begin
  inherited;
  seatlist:=TSeatList.Create ;
  //drawgrid1.Cells[1,1]:='';
end;

procedure Tfrmseatset.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  seatlist.Free ;
  inherited;
end;

procedure Tfrmseatset.DrawGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
var
  prt:PSeatNode;
  i:integer;
begin
  inherited;
  i:=seatlist.IndexOf_Seat(Arow,Acol);
  if i<0 then
  begin
    Curcol:=ACol;
    CurRow:=ARow;
    edtrow.Text :=Inttostr(CurRow);
    EdtCol.Text :=Inttostr(CurCol);
    exit;
  end;
  prt:=seatlist.Items[i];
  if prt^.status='0' then CanSelect:=false;
  edtrow1.Text :=inttostr(prt^.rownum);
  edtcol1.Text :=inttostr(prt^.colnum);
  edtseat.Text :=prt^.seattypename;
  DrawGrid1.Hint :=inttostr(prt^.rownum)+'排'+inttostr(prt^.colnum)+'号'+prt^.seattypename;
end;

procedure Tfrmseatset.DrawGrid1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  prt:PSeatNode;
  i:integer;
begin
  inherited;
  {if Button=mbRight then exit;
  DrawGrid1.MouseToCell(X,Y,CurCol,CurRow);
  i:=seatlist.IndexOf_Seat(Currow,CurCol);
  if i<0 then exit;
  prt:=seatlist.Items[i];
  if prt^.status ='0' then MouseDown:=TRUE;   }
end;

procedure Tfrmseatset.DrawGrid1MouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  prt:PSeatNode;
  rect1:Trect;
  i:integer;
  txt:string;
begin
  inherited;
 { try
    i:=seatlist.IndexOf_Seat(Currow,CurCol);
    if i<0 then exit;
    prt:=seatlist.Items[i];
    if MouseDown then
    begin
      rect1:=DrawGrid1.CellRect(Curcol,Currow);
      rect1.Left :=rect1.Left+5;
      rect1.Top  :=rect1.Top +5;
      DrawGrid1.canvas.Brush.Color :=clwhite ;
      DrawGrid1.canvas.Rectangle(rect1);
      DrawGrid1.Canvas.Font.Size:=9;
      DrawGrid1.Canvas.Font.Color:=clblack;
      txt:=inttostr(prt^.rownum)+'排'+inttostr(prt^.colnum)+'号';
      DrawGrid1.Canvas.TextOut(Rect1.Left+2 ,Rect1.Top+5,txt);
      prt^.status :='1';
    end;
  finally
    MouseDown:=false;
  end;  }
end;

procedure Tfrmseatset.BtnDelClick(Sender: TObject);
var
  sqlstr:string;
  Selitem:TListItem;
begin
  inherited;
  Selitem:=listview1.Selected ;
  if selitem=nil  then exit;
  case RadioGroup1.ItemIndex  of
  0:
    sqlstr:= ' and rownum='+selitem.Caption ;
  1:
    sqlstr:=' and colnum='+selitem.SubItems[0];
  2:
    sqlstr:= ' and rownum='+selitem.Caption+' and colnum='+selitem.SubItems[0];
  end;
  sqlstr:='delete from tblhallseat where hallid='+inttostr(hallid)+sqlstr;
  BitBtn1Click(nil);
end;

procedure Tfrmseatset.BitBtn1Click(Sender: TObject);
begin
  inherited;
  InitSeat(hallid);
  refreshlistview('select * from tblhallseat_view where hallid='+inttostr(hallid)+' order by rownum,colnum');
end;

procedure Tfrmseatset.BtnSameClick(Sender: TObject);
begin
  inherited;
  frmseatsame   :=tfrmseatsame.Create(Application);
  try
    frmseatsame.Hallid :=hallid;
    if frmseatsame.ShowModal =mrok then
    begin
      BitBtn1Click(nil);
    end;
  finally
    frmseatsame.Free ;
  end;
end;

end.

⌨️ 快捷键说明

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