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

📄 frmtable.~pas

📁 实用的茶楼管理系统
💻 ~PAS
字号:
unit frmTable;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, cxControls, cxContainer, cxListBox, Buttons;

type
  TTableForm = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    ListBox_Table: TcxListBox;
    GroupBox1: TGroupBox;
    Edt_NumStart: TLabeledEdit;
    Edt_NumEnd: TLabeledEdit;
    Edt_SeatNum: TLabeledEdit;
    Btn_Delete: TSpeedButton;
    Btn_Generate: TSpeedButton;
    procedure FormCreate(Sender: TObject);
    procedure Edt_NumStartKeyPress(Sender: TObject; var Key: Char);
    procedure Edt_NumEndKeyPress(Sender: TObject; var Key: Char);
    procedure Edt_SeatNumKeyPress(Sender: TObject; var Key: Char);
    procedure Btn_GenerateClick(Sender: TObject);
    procedure Btn_DeleteClick(Sender: TObject);
  private
    function IntToFormatStr(num:integer;len:integer):string;
    procedure ShowTable;

  public

  end;

var
  TableForm: TTableForm;

implementation

uses dataModule;

{$R *.dfm}

function TTableForm.IntToFormatStr(num:integer;len:integer):string;
var
  i:integer;
  oldLen:integer;
  str:string;
begin
  str:=inttostr(num);
  oldLen:=length(str);
  for i:=0 to len-oldLen-1 do str:='0'+str;

  result:=str;
end;

procedure TTableForm.ShowTable;
var
  i:integer;
  strItem:string;
begin
  ListBox_Table.Clear;
   
  with DM.queTable do
  begin
    Open;
    First;
    while not Eof do
    begin
      strItem:=FieldByName('ID').AsString+'号台  座位数'+FieldByName('SeatNum').AsString;
      ListBox_Table.Items.Add(strItem);
      Next;
    end;

    Close;
  end;
end;

procedure TTableForm.FormCreate(Sender: TObject);
begin
  ShowTable;
end;

procedure TTableForm.Edt_NumStartKeyPress(Sender: TObject; var Key: Char);
begin
  if not (key in ['0'..'9',#8,#13]) then
    Key:=#0
  else if key = #13 then
  begin
    key:=#0;
    Edt_NumEnd.SetFocus; 
  end;
end;

procedure TTableForm.Edt_NumEndKeyPress(Sender: TObject; var Key: Char);
begin
  if not (key in ['0'..'9',#8,#13]) then
    Key:=#0
  else if key = #13 then
  begin
    key:=#0;
    Edt_SeatNum.SetFocus;
  end;
end;

procedure TTableForm.Edt_SeatNumKeyPress(Sender: TObject; var Key: Char);
begin
  if not (key in ['0'..'9',#8,#13]) then
    Key:=#0
  else if key = #13 then
  begin
    key:=#0;
    Btn_Generate.OnClick(nil);
  end; 
end;

procedure TTableForm.Btn_GenerateClick(Sender: TObject);
var
  i:integer;
  NumStart,NumEnd:integer;
  str:string;

  msg:string;
begin
  NumStart:=strtoint(trim(Edt_NumStart.Text));
  NumEnd:=strtoint(trim(Edt_NumEnd.Text));

  if NumStart > NumEnd then
  begin
    msg:='起始号码不能大于结束号码!';
    MessageBox(Application.Handle,PChar(msg),'系统提示',MB_ICONINFORMATION);
    exit;
  end;

  if trim(Edt_SeatNum.Text)='' then
  begin
    msg:='必须输入座位数!';
    MessageBox(Application.Handle,PChar(msg),'系统提示',MB_ICONINFORMATION);
    exit;
  end;

  for i:=NumStart to NumEnd do str:=str+','''+IntToFormatStr(i,3)+'''';
  str:=copy(str,2,length(str)-1);

  with DM.Que do
  begin
    Close;
    SQL.Text:='select * from cTable where ID in ('+str+')';
    Open;

    if RecordCount>0 then
    begin
      msg:='相同的台号已经存在!';
      MessageBox(Application.Handle,PChar(msg),'系统提示',MB_ICONINFORMATION);
      exit;
    end;
  end;

  try
    for i:= NumStart to NumEnd do
    begin
      with DM.Que do
      begin
        Close;
        SQL.Text:='insert into cTable(ID,SeatNum) values('''+IntToFormatStr(i,3)+''','+Edt_SeatNum.Text+')';
        ExecSQL;
      end;
    end;
  except
    msg:='操作失败!';
    MessageBox(Application.Handle,PChar(msg),'系统提示',MB_ICONINFORMATION);
  end;

  ShowTable;

  Edt_NumStart.SetFocus;
end;

procedure TTableForm.Btn_DeleteClick(Sender: TObject);
var
  i:integer;
  strID:string;
  
  msg:string;
begin
  for i:=0 to ListBox_Table.Items.Count-1 do
  begin
    if ListBox_Table.Selected[i] then
    begin
      strID:=copy(ListBox_Table.Items[i],1,3);

      DM.Que.Close;
      DM.Que.SQL.Text :='select cTableID from tOrder where cTableID='''+strID+'''';
      DM.Que.Open;
      if DM.Que.RecordCount>0 then
      begin
        msg:='该台正在使用,不能删除!';
        MessageBox(Application.Handle,PChar(msg),'系统提示',MB_ICONINFORMATION);
        exit;
      end
      else begin
        msg:='确定删除吗?';
        if MessageBox(Application.Handle,Pchar(msg),Pchar('系统提示'),mb_OKCancel) = ID_OK then
        begin
          DM.Que.Close;
          DM.Que.SQL.Text :='delete from cTable where ID='''+strID+'''';
          DM.Que.ExecSQL;

          ShowTable;

          exit;
        end;
      end;  
    end;
  end;
end;

end.

⌨️ 快捷键说明

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