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

📄 unit_frmcinema.pas

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

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Unit_frmtemplate, ExtCtrls, StdCtrls, ComCtrls, CyberPanel,
  ToolWin, ImgList, CyberListVw, Mask, CyberEdit,ADODB, Menus, CyberXPMenu;

type
  Tfrmcinema = class(Tfrmtemplate)
    CyberSizePanel1: TCyberSizePanel;
    TreeView1: TTreeView;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    ToolBar1: TToolBar;
    ToolBtnAddCinema: TToolButton;
    ToolBtnEditCinema: TToolButton;
    ToolBtnDelCinema: TToolButton;
    ToolButton4: TToolButton;
    ToolBtnAddHall: TToolButton;
    ToolBtnEditHall: TToolButton;
    ToolBtnDelHall: TToolButton;
    ToolBtnHallSet: TToolButton;
    ToolButton9: TToolButton;
    ToolButton10: TToolButton;
    Panel4: TPanel;
    GroupBox2: TGroupBox;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Edtname: TCyberEdit;
    Edtnationalcode: TCyberEdit;
    edtadr: TCyberEdit;
    edtperson: TCyberEdit;
    edtcontact: TCyberEdit;
    edtpostcode: TCyberEdit;
    ListView1: TCyberListView;
    PopupMenu1: TPopupMenu;
    MenuAdd1: TMenuItem;
    MenuEdit1: TMenuItem;
    menudel1: TMenuItem;
    N4: TMenuItem;
    Menuadd2: TMenuItem;
    MenuEdit2: TMenuItem;
    MenuDel2: TMenuItem;
    MenuHallset: TMenuItem;
    CyberXPMenu1: TCyberXPMenu;
    procedure ListView1CustomDrawItem(Sender: TCustomListView;
      Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
    procedure FormShow(Sender: TObject);
    procedure ToolBtnAddCinemaClick(Sender: TObject);
    procedure ToolBtnEditCinemaClick(Sender: TObject);
    procedure ToolBtnDelCinemaClick(Sender: TObject);
    procedure MenuAdd1Click(Sender: TObject);
    procedure MenuEdit1Click(Sender: TObject);
    procedure menudel1Click(Sender: TObject);
    procedure Menuadd2Click(Sender: TObject);
    procedure MenuEdit2Click(Sender: TObject);
    procedure MenuDel2Click(Sender: TObject);
    procedure ToolBtnDelHallClick(Sender: TObject);
    procedure ToolBtnAddHallClick(Sender: TObject);
    procedure ToolBtnEditHallClick(Sender: TObject);
    procedure TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure TreeView1Click(Sender: TObject);
    procedure ToolButton10Click(Sender: TObject);
    procedure ListView1DblClick(Sender: TObject);
    procedure ListView1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure ToolBtnHallSetClick(Sender: TObject);
  private
    procedure InitTreeview;
    procedure GetCinemainfobyid(_id:integer);
    procedure refreshlistview(sqlstr:string);
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmcinema: Tfrmcinema;

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

procedure Tfrmcinema.InitTreeview;
var
  I,j,_id                 :integer;
  rootnode,node0,node1  :TTreeNode;
  qry                   :TAdoQuery;
  reccount              :Integer;
  _name                 :String;
begin
  treeview1.Items.Clear ;
  treeview1.Items.BeginUpdate ;
  try
    qry :=TAdoQuery.Create(Application);
    qry.Connection :=adodm.ADOCN ;
    rootnode:=treeview1.Items.Add(nil,'所有影院');
    rootnode.Data :=pointer(-1);
    if publicinfo.Execsql('select * from Tblcinemainfo',false) then
    begin
       reccount :=adodm.ADOQRY.RecordCount;
       if reccount<=0 then  exit;
       adodm.ADOQRY.First ;
       for i:=1 to reccount do
       begin
         _id    :=adodm.ADOQRY.fieldbyname('id').AsInteger;
         _name  :=adodm.ADOQRY.fieldbyname('name').AsString;
         node0  :=treeview1.Items.AddChild(rootnode,_name);
         node0.data  :=pointer(_id);
         qry.Close ;
         qry.SQL.Clear ;
         qry.SQL.Add('select * from tblhallinfo where cinemaid='+inttostr(_id));
         qry.Open ;
         if qry.RecordCount>0 then
         begin
           qry.First ;
           for j:=1 to qry.RecordCount do
           begin
             _id         :=qry.fieldbyname('id').AsInteger;
             _name       :=qry.fieldbyname('name').AsString;
             node1       :=treeview1.Items.AddChild(node0,_name);
             node1.Data  :=pointer(_id);
             qry.Next ;
           end;
         end;
         adodm.ADOQRY.Next ;
       end;
    end;
  finally
    qry.Close ;
    qry.Free ;
    rootnode.Expand(true); 
    treeview1.Items.EndUpdate ;
  end;
end;

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

procedure Tfrmcinema.FormShow(Sender: TObject);
begin
  inherited;
  InitTreeview ;
end;

procedure Tfrmcinema.ToolBtnAddCinemaClick(Sender: TObject);
begin
  inherited;
  Frmcinemainfo     :=TFrmcinemainfo.MyCreate(application,false);
  try
    Frmcinemainfo.ShowModal ;
  finally
    Frmcinemainfo.Free ;
    InitTreeview;
  end;
end;

procedure Tfrmcinema.ToolBtnEditCinemaClick(Sender: TObject);
var
  selnode:TTreeNode;
begin
  inherited;
  selnode:=Treeview1.Selected ;
  if (selnode=nil) or (selnode.Level<>1)  then exit;
  Frmcinemainfo     :=TFrmcinemainfo.MyCreate(application,true);
  try
    Frmcinemainfo._id :=integer(selnode.Data);
    if Frmcinemainfo.ShowModal=mrok then selnode.Text :=frmcinemainfo.EdtName.Text ;
  finally
    Frmcinemainfo.Free ;
  end;
end;

procedure Tfrmcinema.ToolBtnDelCinemaClick(Sender: TObject);
var
  selnode:TTreeNode;
  sqlstr:string;
begin
  inherited;
  selnode:=Treeview1.Selected ;
  if (selnode=nil) or (selnode.Level<>1) then exit;
  sqlstr:='delete from tblcinemainfo where id='+inttostr(integer(selnode.Data));
  if publicinfo.Execsql(sqlstr,true) then
  begin
    selnode.Delete ;
    publicinfo.showmsg('影院'+selnode.text+'成功删除');
  end;

end;

procedure Tfrmcinema.MenuAdd1Click(Sender: TObject);
begin
  inherited;
  ToolBtnAddCinemaClick(nil);  
end;

procedure Tfrmcinema.MenuEdit1Click(Sender: TObject);
begin
  inherited;
  ToolBtnEditCinemaClick(nil);
end;

procedure Tfrmcinema.menudel1Click(Sender: TObject);
begin
  inherited;
  ToolBtnDelCinemaClick(nil);
end;

procedure Tfrmcinema.Menuadd2Click(Sender: TObject);
begin
  inherited;
  ToolBtnAddHallClick(nil)
end;

procedure Tfrmcinema.MenuEdit2Click(Sender: TObject);
begin
  inherited;
  ToolBtnEditHallClick(nil);
end;

procedure Tfrmcinema.MenuDel2Click(Sender: TObject);
begin
  inherited;
  ToolBtnDelHallClick(nil);
end;

procedure Tfrmcinema.ToolBtnDelHallClick(Sender: TObject);
var
  selnode:TTreeNode;
  sqlstr:string;
begin
  inherited;
  selnode:=Treeview1.Selected ;
  if (selnode=nil) or (selnode.Level<>2) then exit;
  sqlstr:='delete from tblhallinfo where id='+inttostr(integer(selnode.Data));
  if publicinfo.Execsql(sqlstr,true) then
  begin
    selnode.Delete ;
    publicinfo.showmsg('影厅'+selnode.text+'成功删除');
  end;
end;

procedure Tfrmcinema.ToolBtnAddHallClick(Sender: TObject);
var
  selnode:TTreeNode;
begin
  inherited;
  selnode:=treeview1.Selected ;
  if (selnode=nil) or (selnode.Level<>1) then
  begin
    publicinfo.showmsg('请选择一个影院'); 
    exit;
  end;
  Frmhallinfo     :=TFrmhallinfo.MyCreate(application,false);
  try
    frmhallinfo.cinemaid :=integer(selnode.Data);
    Frmhallinfo.ShowModal ;
  finally
    Frmhallinfo.Free ;
    InitTreeview;
  end;
end;

procedure Tfrmcinema.ToolBtnEditHallClick(Sender: TObject);
var
  selnode:TTreeNode;
begin
  inherited;
  selnode:=Treeview1.Selected ;
  if (selnode=nil) or (selnode.Level<>2)  then exit;
  Frmhallinfo     :=TFrmhallinfo.MyCreate(application,true);
  try
    Frmhallinfo.id :=integer(selnode.Data);
    if Frmhallinfo.ShowModal=mrok then selnode.Text :=Frmhallinfo.EdtName.Text ;
  finally
    Frmhallinfo.Free ;
  end;
end;

procedure Tfrmcinema.TreeView1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  selnode:TTreeNode;
begin
  selnode:=TreeView1.GetNodeAt(x,Y );
  if selnode<>nil then
  begin
    selnode.Selected:=true;
  end;
end;

procedure Tfrmcinema.refreshlistview(sqlstr: string);
var
  i     :integer;
  item0 :TListItem;
  reccount:integer;
  _cinemaname,_code,_name,_personcount,_remarks:string;
  _id   :integer;
begin
  listview1.Items.Clear ;
  listview1.Items.BeginUpdate ;
  try
    if publicinfo.Execsql(sqlstr,false) then
    begin
      reccount:=adodm.ADOQRY.RecordCount ;
      if reccount>0 then
      begin
        with adodm.ADOQRY do
        begin
          First ;
          for i:=1 to reccount do
          begin
            _id           :=fieldbyname('id').AsInteger ;
            _cinemaname   :=fieldbyname('cinemaname').AsString ;
            _code         :=fieldbyname('code').AsString ;
            _name         :=fieldbyname('name').AsString ;
            _personcount  :=fieldbyname('personcount').AsString ;
            _remarks      :=fieldbyname('remarks').AsString ;
            item0:=listview1.Items.Add ;
            item0.Caption :=_cinemaname;
            item0.SubItems.Add(_code);
            item0.SubItems.Add(_name);
            item0.SubItems.Add(_personcount);
            item0.SubItems.Add(_remarks);
            next;
          end;
        end;
      end;
    end;
 finally
   listview1.Items.EndUpdate ;
 end;
end;

procedure Tfrmcinema.GetCinemainfobyid(_id: integer);
var
  sqlstr:string;
begin
  sqlstr        :='select * from tblcinemainfo where id='+inttostr(_id);
  if publicinfo.Execsql(sqlstr,false) then
  begin
    if adodm.ADOQRY.RecordCount<0 then exit;
    adodm.ADOQRY.First ;
    Edtnationalcode.Text:=adodm.ADOQRY.fieldbyname('nationalcode').AsString ;
    edtname.Text        :=adodm.ADOQRY.fieldbyname('name').AsString ;
    edtperson.Text      :=adodm.ADOQRY.fieldbyname('contact').AsString ;
    edtcontact.Text     :=adodm.ADOQRY.fieldbyname('phone').AsString ;
    edtpostcode.Text    :=adodm.ADOQRY.fieldbyname('postcode').AsString ;
    edtadr.Text         :=adodm.ADOQRY.fieldbyname('address').AsString ;
  end;
end;

procedure Tfrmcinema.TreeView1Click(Sender: TObject);
var
  selnode       :TTreeNode;
  sqlstr        :string;
begin
  inherited;
  selnode:=Treeview1.Selected ;
  if selnode=nil then exit;
  if selnode.Level=0 then sqlstr:='select * from tblhallinfo_view';
  if selnode.Level=1 then
  begin
    GetCinemainfobyid(integer(selnode.Data));
    sqlstr:='select * from tblhallinfo_view where cinemaid='+inttostr(integer(selnode.Data));
  end
  else if selnode.Level=2 then
    sqlstr:='select * from tblhallinfo_view where id='+inttostr(integer(selnode.Data));
  refreshlistview(sqlstr);
end;

procedure Tfrmcinema.ToolButton10Click(Sender: TObject);
begin
  inherited;
  close;
end;

procedure Tfrmcinema.ListView1DblClick(Sender: TObject);
var
  selitem:TListItem;
begin
  inherited;
  if not ToolBtnEditHall.Enabled then exit;
  selitem:=listview1.Selected ;
  if (selitem=nil) then exit;
  Frmhallinfo     :=TFrmhallinfo.MyCreate(application,true);
  try
    Frmhallinfo.id :=integer(selitem.Data);
    if Frmhallinfo.ShowModal=mrok then
    begin
      selitem.SubItems[0]  :=Frmhallinfo.EdtCode.Text ;
      selitem.SubItems[1]  :=Frmhallinfo.EdtName.Text ;
      selitem.SubItems[2]  :=Frmhallinfo.EdtSeatcount.Text ;
      selitem.SubItems[3]  :=Frmhallinfo.Memoremarks.Text ;
    end;
  finally
    Frmhallinfo.Free ;
  end;
end;

procedure Tfrmcinema.ListView1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;
  if key=13 then ListView1DblClick(nil) ;
end;

procedure Tfrmcinema.ToolBtnHallSetClick(Sender: TObject);
var
  selnode:TTreeNode;
begin
  inherited;
  selnode:=Treeview1.Selected ;
  if (selnode=nil) or (selnode.Level<>2) then
  begin
    publicinfo.showmsg('请选择一个影厅');
    exit;
  end;
  frmseatset:=Tfrmseatset.Create(Application);
  frmseatset.hallid:=integer(selnode.Data);
  frmseatset.showmodal;
  frmseatset.free;
end;

end.

⌨️ 快捷键说明

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